Salve a tutti!
Sto scrivendo il gioco del 15 in C http://it.wikipedia.org/wiki/Gioco_del_quindici :
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;
}
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:
else if(campo[x+1][y]==n)
{
campo[x+1][y]=0;
campo[x][y]=n;
break;
}
Secondo voi dove sbaglio? Grazie a chi mi aiuta