Sistemata al codice e supporto alla tabella di qualunque dimensione
*Ora funziona con una tabella di qualunque grandezza. Il lato della matrice quadrata è definito con #define M 3. Anche se la tabella è più grande per vincere basta comunque fare un tris; *Sistemati alcuni bug minori; *Reso il codice più pulito;
This commit is contained in:
parent
d9b13c8c25
commit
17aa812f23
25
tris.h
Normal file → Executable file
25
tris.h
Normal file → Executable file
@ -78,7 +78,7 @@
|
||||
int i,k;
|
||||
int giocatore,scelta,mossa;
|
||||
int tabella[M][M];
|
||||
int tastierino=1;
|
||||
int tastierino=0;
|
||||
|
||||
/*Funzioni*/
|
||||
void stampa(){
|
||||
@ -102,21 +102,24 @@
|
||||
}
|
||||
|
||||
int controlla(int giocatore){
|
||||
if(tabella[0][0]==giocatore&&tabella[1][1]==giocatore&&tabella[2][2]==giocatore)
|
||||
for(i=0;i<M;i++){
|
||||
if(tabella[i][i]==giocatore&&tabella[i+1][i+1]==giocatore&&tabella[i+2][i+2]==giocatore)
|
||||
return 1;
|
||||
if(tabella[2][0]==giocatore&&tabella[1][1]==giocatore&&tabella[0][2]==giocatore)
|
||||
if(tabella[i+2][i]==giocatore&&tabella[i+1][i+1]==giocatore&&tabella[i][i+2]==giocatore)
|
||||
return 1;
|
||||
for(i=0;i<3;i++){
|
||||
if(tabella[i][0]==giocatore&&tabella[i][1]==giocatore&&tabella[i][2]==giocatore)
|
||||
}
|
||||
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)
|
||||
return 1;
|
||||
if(tabella[0][i]==giocatore&&tabella[1][i]==giocatore&&tabella[2][i]==giocatore)
|
||||
for(k=0;k<M;k++)
|
||||
if(tabella[k][i]==giocatore&&tabella[k+1][i]==giocatore&&tabella[k+2][i]==giocatore)
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int minimax(int giocatore, int profondita){
|
||||
|
||||
if(controlla(2))
|
||||
return INT_MAX;
|
||||
if(mossa==M*M)
|
||||
@ -128,16 +131,14 @@
|
||||
for(k=0;k<M;k++){
|
||||
if(!tabella[i][k]){
|
||||
tabella[i][k]=1;
|
||||
if(controlla(1)){
|
||||
if(profondita==20){
|
||||
if(controlla(1)&&!profondita==20){
|
||||
tabella[i][k]=0;
|
||||
return INT_MIN;
|
||||
}
|
||||
else
|
||||
res-=2;
|
||||
}
|
||||
else if((tmp=minimax(2,profondita-1))<res)
|
||||
res=tmp;
|
||||
else
|
||||
res-=2;
|
||||
tabella[i][k]=0;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user