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"
#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*/
/*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*/
void stampa(){
int i,k;
@ -48,10 +49,9 @@ 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;
}
}
@ -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){
tabella[i][k]=0;
return INT_MIN;
if(controlla(1)){
if(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;
}
}
@ -236,7 +240,7 @@ void medio(){
for(k=0;k<M;k++){
if(!tabella[i][k]){
tabella[i][k]=2;
t=minimax(1, 10);
t=minimax(1,10);
if(t>max){
max=t;
mi=i;
@ -246,7 +250,6 @@ void medio(){
}
}
}
stampa();
tabella[mi][mk]=2;
}

2
tris.h
View File

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