- Messaggi
- 5,082
- Reazioni
- 4,403
- Punteggio
- 159
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]