Risolto un bug nella funzione int controlla(int giocatore) che poteva
modificare il risultato in base ai valori delle celle di memoria
adiacenti alla matrice.
This commit is contained in:
Rnhmjoj 2012-12-05 22:48:06 +01:00
parent 8b143e7831
commit 819f4ed1ae

12
tris.c
View File

@ -155,21 +155,23 @@ void leggimossa(){
int controlla(int giocatore){
/*Diagonali*/
for(i=0;i<M;i++){
for(k=M;k>=0;k--)
if(tabella[i][k]==giocatore&&tabella[i+1][k-1]==giocatore&&tabella[i+1][k-2]==giocatore)
for(k=(M-1);k>=0;k--)
if((tabella[i][k]==giocatore&&tabella[i+1][k-1]==giocatore&&tabella[i+2][k-2]==giocatore)&&((i+2<M)&&(k-2>0)))
return 1;
for(k=0;k<M;k++)
if(tabella[i][k]==giocatore&&tabella[i+1][k+1]==giocatore&&tabella[i+2][k+2]==giocatore)
if((tabella[i][k]==giocatore&&tabella[i+1][k+1]==giocatore&&tabella[i+2][k+2]==giocatore)&&((i+2<M)&&(k+2<M)))
return 1;
}
/*Righe e colonne*/
for(i=0;i<M;i++){
for(k=0;k<M;k++)
if(tabella[i][k]==giocatore&&tabella[i][k+1]==giocatore&&tabella[i][k+2]==giocatore)
if((tabella[i][k]==giocatore&&tabella[i][k+1]==giocatore&&tabella[i][k+2]==giocatore)&&(k+2<M))
return 1;
for(k=0;k<M;k++)
if(tabella[k][i]==giocatore&&tabella[k+1][i]==giocatore&&tabella[k+2][i]==giocatore)
if((tabella[k][i]==giocatore&&tabella[k+1][i]==giocatore&&tabella[k+2][i]==giocatore)&&(k+2<M))
return 1;
}
return 0;
}