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

20
tris.c
View File

@ -30,15 +30,15 @@ void stampa(){
int i,k; int i,k;
printf("\n\n\n"); printf("\n\n\n");
for(i=0;i<M;i++) { for(i=0;i<M;i++) {
printf(RESET" "); printf(RESET" ");
for(k=0;k<M;k++) { for(k=0;k<M;k++) {
if(tabella[i][k]==1) if(tabella[i][k]==1)
printf(GIALLO" O "); printf(GIALLO" O ");
else { else {
if(tabella[i][k]==2) if(tabella[i][k]==2)
printf(ROSSO" X "); printf(ROSSO" X ");
else else
printf(BIANCO" . "); printf(BIANCO" . ");
} }
} }
printf("\n\n"); printf("\n\n");
@ -155,21 +155,23 @@ void leggimossa(){
int controlla(int giocatore){ int controlla(int giocatore){
/*Diagonali*/ /*Diagonali*/
for(i=0;i<M;i++){ for(i=0;i<M;i++){
for(k=M;k>=0;k--) for(k=(M-1);k>=0;k--)
if(tabella[i][k]==giocatore&&tabella[i+1][k-1]==giocatore&&tabella[i+1][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>0)))
return 1; return 1;
for(k=0;k<M;k++) 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; return 1;
} }
/*Righe e colonne*/ /*Righe e colonne*/
for(i=0;i<M;i++){ for(i=0;i<M;i++){
for(k=0;k<M;k++) 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; return 1;
for(k=0;k<M;k++) 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 1;
} }
return 0; return 0;
} }