Salve a tutti!
Sto scrivendo il gioco del 15 in C http://it.wikipedia.org/wiki/Gioco_del_quindici :
E sto avendo dei problemi nella funzione muovi_numero(), in pratica riesco a spostare un numero a sinistra, destra e giù ma non su.codice:#include <stdio.h> #include <stdlib.h> #include <time.h> #include <windows.h> void crea_matrice(int [][4]); void stampa_matrice(int [][4]); void muovi_numero(int [][4]); int appartiene_a2D(int n, int [][4]); int vittoria(int [][4]); int matrice_random[4][4]; int mossa=1; int main() { crea_matrice(matrice_random); stampa_matrice(matrice_random); while(mossa<=30) { muovi_numero(matrice_random); system("cls"); stampa_matrice(matrice_random); printf("Mossa numero: %d",mossa); mossa++; } return 0; } void crea_matrice(int campo[][4]) { int i,x,y; srand(time(NULL)); for(i=0;i<16;i++) { x=rand()%4; y=rand()%4; if(campo[x][y]) i--; else campo[x][y]=i; } } void stampa_matrice(int campo[][4]) { int x,y; for(x=0;x<4;x++) { for(y=0;y<4;y++) { if(campo[x][y]==0) printf("%7c",255); else printf("%7d",campo[x][y]); } printf("\n\n\n\n"); } } void muovi_numero(int campo[][4]) { int x,y,n; printf("\nDigita il numero da spostare: "); scanf("%d",&n); if(appartiene_a2D(n,campo) && n!=0) { for(x=0;x<4;x++) for(y=0;y<4;y++) { if(campo[x][y]==0) { if(campo[x][y+1]==n) { campo[x][y+1]=0; campo[x][y]=n; break; } else if(campo[x][y-1]==n) { campo[x][y-1]=0; campo[x][y]=n; break; } else if(campo[x+1][y]==n) { campo[x+1][y]=0; campo[x][y]=n; break; } else if(campo[x-1][y]==n) { campo[x-1][y]=0; campo[x][y]=n; break; } else { printf("\nERRORE!! Il numero %d non puo' essere spostato\n",n); muovi_numero(campo); } } } } else { printf("\nERRORE!! Devi digitare un numero da 1 a 15.\n"); muovi_numero(campo); } } int appartiene_a2D(int n, int campo[][4]) { int r,c; for(r=0;r<4;r++) for(c=0;c<4;c++) if(n==campo[r][c]) return 1; return 0; }
Secondo voi dove sbaglio? Grazie a chi mi aiutacodice:else if(campo[x+1][y]==n) { campo[x+1][y]=0; campo[x][y]=n; break; }![]()

Rispondi quotando