Modifiche minori

*Usato un metodo più sicuro per includere la funzione int mgetchar().
*Tentativo di bugfix non riuscito.
This commit is contained in:
Rnhmjoj 2012-11-29 00:28:00 +01:00
parent 34157ef52e
commit 8b143e7831
3 changed files with 34 additions and 33 deletions

BIN
.readme.md.swp Normal file

Binary file not shown.

65
tris.c
View File

@ -1,29 +1,30 @@
#include "tris.h" #include "tris.h"
#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
/*Funzioni*/ /*Funzioni*/
/*Legge dalla tastiera senza usare il buffer*/
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}
/*Stampa la tabella del tris*/ /*Stampa la tabella del tris*/
void stampa(){ void stampa(){
int i,k; int i,k;
@ -48,10 +49,9 @@ void stampa(){
/*Cancella la tabella del tris*/ /*Cancella la tabella del tris*/
void vuota() { void vuota() {
for(i=0;i<M;i++) { for(i=0;i<M;i++)
for(k=0;k<M;k++) for(k=0;k<M;k++)
tabella[i][k]=0; tabella[i][k]=0;
}
} }
@ -176,6 +176,8 @@ int controlla(int giocatore){
/*Minimax*/ /*Minimax*/
int minimax(int giocatore, int profondita){ int minimax(int giocatore, int profondita){
printf("Sono il minimax.\n");
stampa();
if(controlla(2)) if(controlla(2))
return INT_MAX; return INT_MAX;
if(mossa==M*M) if(mossa==M*M)
@ -187,14 +189,16 @@ int minimax(int giocatore, int profondita){
for(k=0;k<M;k++){ for(k=0;k<M;k++){
if(!tabella[i][k]){ if(!tabella[i][k]){
tabella[i][k]=1; tabella[i][k]=1;
if(controlla(1)&&!profondita==20){ if(controlla(1)){
tabella[i][k]=0; if(profondita==20){
return INT_MIN; tabella[i][k]=0;
return INT_MIN;
}
else
res-=2;
} }
else if((tmp=minimax(2,profondita-1))<res) else if((tmp=minimax(2,profondita-1))<res)
res=tmp; res=tmp;
else
res-=2;
tabella[i][k]=0; tabella[i][k]=0;
} }
} }
@ -236,7 +240,7 @@ void medio(){
for(k=0;k<M;k++){ for(k=0;k<M;k++){
if(!tabella[i][k]){ if(!tabella[i][k]){
tabella[i][k]=2; tabella[i][k]=2;
t=minimax(1, 10); t=minimax(1,10);
if(t>max){ if(t>max){
max=t; max=t;
mi=i; mi=i;
@ -246,7 +250,6 @@ void medio(){
} }
} }
} }
stampa();
tabella[mi][mk]=2; tabella[mi][mk]=2;
} }

2
tris.h
View File

@ -31,7 +31,6 @@
#define os 0 #define os 0
#define clear "cls" #define clear "cls"
#define sleep(x) Sleep(x) #define sleep(x) Sleep(x)
#define UX //
#else #else
@ -40,7 +39,6 @@
#define os 1 #define os 1
#define clear "clear" #define clear "clear"
#define sleep(x) usleep(x*100) #define sleep(x) usleep(x*100)
#define UX
int mgetchar(void); int mgetchar(void);
#endif #endif