- 5,072
- 4,377
- CPU
- Intel core i7 11700KF 8 core/ 16 thread 4.6Ghz all core
- Dissipatore
- Arctic Liquid freezer II 240mm Argb
- Scheda Madre
- Asus TUF Gaming z590 Plus wifi
- HDD
- NVMe M.2 Gen4 Crucial P5 Plus 1TB + NVMe M.2 Gen3 Sabrent 256GB / +SSD Crucial bx500 256GB
- RAM
- Kingston Fury Beast 32Gb (2X16GB) 3200Mhz CL16
- GPU
- Asus TUF Rtx 3080 12GB Gaming OC 900mv/1865mhz
- Audio
- HyperX Cloud II + Logitech Z313
- Monitor
- Xiaomi Mi 34° WQHD 144hz + LG UltraGear 32GN650 32° QHD, 165hz
- PSU
- Corsair RM850x
- Case
- Cooler Master TD500 Mesh Argb
- OS
- Windows 11
Ho aggiornato il programma con una nuova funzione che aggiorna la posizione del player con le cordinate nuove *pos_x e *pos_y la funzione si chiama void new_pos e l'ho richiamata nel main prima della funzione visualizza_campo. Purtroppo la traccia vuole che ad ogni movimento il campo venga ristampato se no avrei fatto come consigliavi te DispatchCode. Ora dopo l'aggiunta della funzione nuova mi crasha dopo aver inserito la direzione desiderata.
Codice:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void genera_campo(char campo[10][10],int pos_x,int pos_y);
void visualizza_campo(char campo[10][10]);
void movimento_player(char campo[10][10],int *pos_x,int *pos_y,int direzione);
void new_pos(char campo[10][10],int *pos_x, int *pos_y);
int main()
{
char campo[10][10];
int pos_x;
int pos_y;
int direzione;
srand(time(NULL));
genera_campo(campo,pos_x,pos_y);
visualizza_campo(campo);
movimento_player(campo,&pos_x,&pos_y,direzione);
new_pos(campo,&pos_x,&pos_y);
visualizza_campo(campo);
return 0;
}
void genera_campo(char campo[10][10],int pos_x, int pos_y)
{
int i,j,k=0;
for(i=0;i<10;i++)
{
for(j=0;j<10;j++)
{
campo[i][j]='*';
}
}
{
i=rand()%10;
j=rand()%10;
pos_x=i;
pos_y=j;
if(campo[i][j]=='*')
{
campo[i][j]='o';
k++;
}
}
}
void visualizza_campo(char campo[10][10])
{
int i,j;
for(i=0;i<10;i++)
{
for(j=0;j<10;j++)
{
printf("%c ",campo[i][j]);
}
printf("\n");
}
}
void movimento_player(char campo[10][10],int *pos_x,int *pos_y,int direzione)
{
printf("\nIn che direzione vorresti muoverti: ?\n");
printf("\npremi 1 per andare su, 2 per andare giu', 3 per andare a destra e 4 per andare a sinistra: \n");
scanf("%d",&direzione);
if(direzione<1 || direzione>4)
{
printf("\nErrore digita un numero compreso tra 1 e 4\n");
return;
}
switch (direzione)
{
case 1:
pos_x--;
break;
case 2:
pos_x++;
break;
case 3:
pos_y++;
break;
case 4:
pos_y--;
break;
}
}
void new_pos(char campo[10][10],int *pos_x,int *pos_y)
{
int i,j,k=0;
for(i=0;i<10;i++)
{
for(j=0;j<10;j++)
{
campo[i][j]='*';
}
}
i=*pos_x;
j=*pos_y;
if(campo[i][j]=='*')
{
campo[i][j]='o';
}
}
[\CODE]