Modifiche minori
*Usato un metodo più sicuro per includere la funzione int mgetchar(). *Tentativo di bugfix non riuscito.
This commit is contained in:
parent
34157ef52e
commit
8b143e7831
BIN
.readme.md.swp
Normal file
BIN
.readme.md.swp
Normal file
Binary file not shown.
57
tris.c
57
tris.c
@ -1,28 +1,29 @@
|
||||
#include "tris.h"
|
||||
|
||||
/*Funzioni*/
|
||||
|
||||
#if os
|
||||
/*Legge dalla tastiera senza usare il buffer*/
|
||||
int mgetchar(){
|
||||
char buf=0;
|
||||
struct termios old={0};
|
||||
if(tcgetattr(0,&old)<0)
|
||||
perror("tcsetattr()");
|
||||
old.c_lflag&=~ICANON;
|
||||
old.c_lflag&=~ECHO;
|
||||
old.c_cc[VMIN]=1;
|
||||
old.c_cc[VTIME]=0;
|
||||
if(tcsetattr(0,TCSANOW,&old)<0)
|
||||
perror("tcsetattr ICANON");
|
||||
if(read(0,&buf,1)<0)
|
||||
perror("read()");
|
||||
old.c_lflag|=ICANON;
|
||||
old.c_lflag|=ECHO;
|
||||
if(tcsetattr(0,TCSADRAIN,&old)<0)
|
||||
perror("tcsetattr ~ICANON");
|
||||
return (buf);
|
||||
}
|
||||
#endif
|
||||
|
||||
UX int mgetchar(){
|
||||
UX char buf=0;
|
||||
UX struct termios old={0};
|
||||
UX if(tcgetattr(0,&old)<0)
|
||||
UX perror("tcsetattr()");
|
||||
UX old.c_lflag&=~ICANON;
|
||||
UX old.c_lflag&=~ECHO;
|
||||
UX old.c_cc[VMIN]=1;
|
||||
UX old.c_cc[VTIME]=0;
|
||||
UX if(tcsetattr(0,TCSANOW,&old)<0)
|
||||
UX perror("tcsetattr ICANON");
|
||||
UX if(read(0,&buf,1)<0)
|
||||
UX perror("read()");
|
||||
UX old.c_lflag|=ICANON;
|
||||
UX old.c_lflag|=ECHO;
|
||||
UX if(tcsetattr(0,TCSADRAIN,&old)<0)
|
||||
UX perror("tcsetattr ~ICANON");
|
||||
UX return (buf);
|
||||
UX}
|
||||
/*Funzioni*/
|
||||
|
||||
/*Stampa la tabella del tris*/
|
||||
void stampa(){
|
||||
@ -48,11 +49,10 @@ void stampa(){
|
||||
|
||||
/*Cancella la tabella del tris*/
|
||||
void vuota() {
|
||||
for(i=0;i<M;i++) {
|
||||
for(i=0;i<M;i++)
|
||||
for(k=0;k<M;k++)
|
||||
tabella[i][k]=0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*Legge la mossa del giocatore*/
|
||||
@ -176,6 +176,8 @@ int controlla(int giocatore){
|
||||
|
||||
/*Minimax*/
|
||||
int minimax(int giocatore, int profondita){
|
||||
printf("Sono il minimax.\n");
|
||||
stampa();
|
||||
if(controlla(2))
|
||||
return INT_MAX;
|
||||
if(mossa==M*M)
|
||||
@ -187,14 +189,16 @@ int minimax(int giocatore, int profondita){
|
||||
for(k=0;k<M;k++){
|
||||
if(!tabella[i][k]){
|
||||
tabella[i][k]=1;
|
||||
if(controlla(1)&&!profondita==20){
|
||||
if(controlla(1)){
|
||||
if(profondita==20){
|
||||
tabella[i][k]=0;
|
||||
return INT_MIN;
|
||||
}
|
||||
else if((tmp=minimax(2,profondita-1))<res)
|
||||
res=tmp;
|
||||
else
|
||||
res-=2;
|
||||
}
|
||||
else if((tmp=minimax(2,profondita-1))<res)
|
||||
res=tmp;
|
||||
tabella[i][k]=0;
|
||||
}
|
||||
}
|
||||
@ -246,7 +250,6 @@ void medio(){
|
||||
}
|
||||
}
|
||||
}
|
||||
stampa();
|
||||
tabella[mi][mk]=2;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user