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.
65
tris.c
65
tris.c
@ -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
2
tris.h
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user