Aggiunto controllo per il pareggio

This commit is contained in:
Rnhmjoj 2012-12-20 17:45:26 +01:00
parent 924287f657
commit 293a8f37ce
2 changed files with 20 additions and 14 deletions

18
main.c
View File

@ -36,7 +36,7 @@ int main (){
tabella[i][k]=giocatore; tabella[i][k]=giocatore;
stampa(); stampa();
/*Controlla se il giocatore ha vinto*/ /*Controlla se il giocatore ha vinto*/
if(controlla(1)){ if(controlla(1)||controlla(2)){
vittoria=1; vittoria=1;
break; break;
} }
@ -48,7 +48,7 @@ int main (){
} }
while(!vittoria && mossa<M*M); while(!vittoria && mossa<M*M);
/*Stampa il risultato della partita, mette in pausa, rompe lo switch e ritorna al menu*/ /*Stampa il risultato della partita, mette in pausa, rompe lo switch e ritorna al menu*/
if((!controlla(1))&&(!controlla(2))){ if(controlla(1)==-1){
printf(ROSSO " Pareggio.\n"); printf(ROSSO " Pareggio.\n");
pausa(); pausa();
} }
@ -136,13 +136,13 @@ int main (){
stampa(); stampa();
printf(ROSSO); printf(ROSSO);
/*Stampa il risultato della partita, mette in pausa, rompe lo switch e ritorna al menu*/ /*Stampa il risultato della partita, mette in pausa, rompe lo switch e ritorna al menu*/
if((!controlla(1) && !controlla(2)) && difficolta==1) if(controlla(1)==-1 && difficolta==1)
printf(" Pareggio, potevi fare di meglio.\n\n"); printf(" Pareggio, potevi fare di meglio.\n\n");
else{ else{
if((!controlla(1) && !controlla(2)) && difficolta==2) if(controlla(1)==-1 && difficolta==2)
printf(" Pareggio, ci eri quasi, riprova...\n\n"); printf(" Pareggio, ci eri quasi, riprova...\n\n");
else{ else{
if((!controlla(1) && !controlla(2)) && difficolta==3){ if(controlla(1)==-1 && difficolta==3){
if(!os) if(!os)
printf(" Pareggio, ti %c andata gi%c bene...\n\n",138,133); printf(" Pareggio, ti %c andata gi%c bene...\n\n",138,133);
else else
@ -161,18 +161,18 @@ int main (){
printf(" Lo sai... non puoi battere il minimax.\n\n"); printf(" Lo sai... non puoi battere il minimax.\n\n");
} }
} }
if(giocatore==1 && difficolta==1) if(controlla(1) && difficolta==1)
printf(" Bravo, hai battuto uno che mette crocette a caso!\n\n"); printf(" Bravo, hai battuto uno che mette crocette a caso!\n\n");
else{ else{
if(giocatore==1 && difficolta==2){ if(controlla(1) && difficolta==2){
if(!os) if(!os)
printf(" Bravo, non %c stato facile!\n\n",138); printf(" Bravo, non %c stato facile!\n\n",138);
else else
printf(" Bravo, non è stato facile!\n\n"); printf(" Bravo, non è stato facile!\n\n");
} }
else{ else{
if(giocatore==1 && difficolta==3){ if(controlla(1) && difficolta==3){
printf(" Impossibile!! Non hai vinto!!!\n"); printf(" Impossibile!! Non hai vinto!!!\n");
if(!os) if(!os)
printf(" Sei vedi questo messaggio sicuramente c'%c qualcosa che non va.\n\n",138); printf(" Sei vedi questo messaggio sicuramente c'%c qualcosa che non va.\n\n",138);
@ -240,7 +240,7 @@ int main (){
} }
} }
}while (scelta!=5); }while(scelta!=5);
return 0; return 0;
} }

16
tris.c
View File

@ -171,18 +171,24 @@ int controlla(int giocatore){
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)&&(k+2<M)) if((tabella[k][i]==giocatore&&tabella[k+1][i]==giocatore&&tabella[k+2][i]==giocatore)&&(k+2<M))
return 1; return 1;
} }
return 0; int piene=M*M;
for(i=0;i<M;i++)
for(k=0;k<M;k++)
if(!tabella[i][k])
piene--;
if(piene==M*M)
return -1;
else
return 0;
} }
/*Minimax*/ /*Minimax*/
int minimax(int giocatore, int profondita){ int minimax(int giocatore, int profondita){
stampa();
if(controlla(2)) if(controlla(2))
return INT_MAX; return INT_MAX;
if(mossa==M*M) if(controlla(1)==-1)
return 0; return INT_MIN;
int res,tmp; int res,tmp;
if(giocatore==1){ if(giocatore==1){
res=1; res=1;