diff --git a/README.md b/README.md index 4892823..f63c1e1 100644 --- a/README.md +++ b/README.md @@ -12,16 +12,24 @@ Le mosse del computer sono pseudocasuali (livello facile) o calcolate usando l'a L'output è a colori grazie alle sequenze di escape ANSI. Per visualizzare decentemente il testo è necessario un terminale compatibile. Su Windows si può usare ANSIcon che ripristina il supporto al driver ANSI.SYS per le console Win32. + Link: http://github.com/adoxa/ansicon -Link: http://github.com/adoxa/ansicon - -### Installazione +### Compilazione Per compilare il programma su UNIX usa _make_. - -Su windows usa un compilatore qualisasi o _make_ se hai MinGW - -Link: http://www.mingw.org + Su windows usa un compilatore qualisasi o _mingw32-make_ se hai MinGW. + Link: http://www.mingw.org ### Istruzioni Le istruzioni su come giocare sono cotenute nel programma stesso. +### Avvisi +Se provando a compilare ricevi avvisi del tipo: + + warning: implicit declaration of function ‘getch’ + warning: implicit declaration of function ‘kbhit’ + +oppure: + + warning: implicit declaration of function ‘mgetchar’ + +è perchè stai compilando rispettivamente su UNIX o su Windows e queste funzioni vengono sostituite dalle loro controparti per quel sistema dato che non sono portabili. Anche se sono nel sorgente e nel file oggetto non verranno mai eseguite. \ No newline at end of file diff --git a/Tris in stile C b/Tris in stile C new file mode 100755 index 0000000..b3946ef Binary files /dev/null and b/Tris in stile C differ diff --git a/main.c b/main.c index 66e4663..3451d79 100755 --- a/main.c +++ b/main.c @@ -2,23 +2,23 @@ int main (){ int vittoria; int difficolta; - tastierino=0; + tastierino=1; a='a'; do{ giocatore=1,vittoria=0; scelta=0,difficolta=0,mossa=0; /*Menu d'inizio*/ system(clear); - printf(SOTTOLINEATO GIALLO"\n Tris in stile C \n\n" RESET BIANCO); - printf(ROSSO" [1]"RESET BIANCO" Partita con 2 giocatori\n"); - printf(ROSSO" [2]"RESET BIANCO" Partita singolo giocatore\n"); - if(!os) - printf(ROSSO" [3]"RESET BIANCO" Modalit%c di input\n",133); - else - printf(ROSSO" [3]"RESET BIANCO" Modalità di input \n"); - printf(ROSSO" [4]"RESET BIANCO" Informazioni\n"); - printf(ROSSO" [5]"RESET BIANCO" Esci\n"); - scanf("%d",&scelta); + printf(SOTTOLINEATO GIALLO"\n Tris in stile C \n\n" RESET BIANCO); + printf(ROSSO" [1]"RESET BIANCO" Partita con 2 giocatori\n"); + printf(ROSSO" [2]"RESET BIANCO" Partita singolo giocatore\n"); + if(!os) + printf(ROSSO" [3]"RESET BIANCO" Modalit%c di input\n",133); + else + printf(ROSSO" [3]"RESET BIANCO" Modalità di input \n"); + printf(ROSSO" [4]"RESET BIANCO" Informazioni\n"); + printf(ROSSO" [5]"RESET BIANCO" Esci\n"); + scanf("\n%d",&scelta); switch(scelta){ /*case per la partita con 2 giocatori*/ case 1:{ @@ -61,18 +61,24 @@ int main (){ /*Case che contiene la partita singolo giocatore*/ case 2:{ vuota(); - system(clear); /*ciclo per scegliere la difficolta del gioco*/ + system(clear); do{ + if(!os) printf(SOTTOLINEATO GIALLO"\n Scegli la difficolt%c:\n\n"RESET BIANCO ,133); else printf(SOTTOLINEATO GIALLO"\n Scegli la difficoltà: \n\n" RESET BIANCO); printf(ROSSO" [1]"RESET BIANCO" Facile\n"); printf(ROSSO" [2]"RESET BIANCO" Medio\n"); - printf(ROSSO" [3]"RESET BIANCO" Difficile\n"); scanf("%d",&difficolta); - if(difficolta<1||difficolta>3) + printf(ROSSO" [3]"RESET BIANCO" Difficile\n"); + getchar(); + scanf("%d",&difficolta); + if(difficolta<1||difficolta>3){ printf(GRASSETTO ROSSO"\n Scelta non valida.\n\n" RESET BIANCO); + aspetta(2); + + } }while(difficolta<1||difficolta>3); system(clear); stampa(); @@ -184,6 +190,7 @@ int main (){ do{ system(clear); printf("\n Vuoi usare il tastierino numerico o le coordinate"ROSSO"[T,C]"RESET BIANCO"?\n"); + getchar(); scanf("\n%c",&a); }while(a!='T' && a!='C' && a!='t' && a!='c'); if(a=='T'||a=='t') diff --git a/tris.c b/tris.c index 3f03810..da9eacf 100755 --- a/tris.c +++ b/tris.c @@ -3,25 +3,26 @@ /*Funzioni*/ /*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); -} + +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(){ @@ -292,7 +293,7 @@ void spinner(int tempo) { for (int i=0; i<(tempo*10);i++){ putchar(spinner[i%4]); fflush(stdout); - usleep(200000); + sleep(2000); putchar('\b'); } printf(RESET); diff --git a/tris.h b/tris.h index 78fa257..ec7337f 100755 --- a/tris.h +++ b/tris.h @@ -26,18 +26,23 @@ /*Funzione specifiche degli os*/ #ifdef __WIN32__ - #define os 0 #include + #include + #define os 0 #define clear "cls" + #define sleep(x) Sleep(x) + #define UX // #else - #define os 1 - #define clear "clear" #include #include + #define os 1 + #define clear "clear" + #define sleep(x) usleep(x*100) + #define UX int mgetchar(void); - + #endif /*Prototipi*/