Risolti problemi di compatibilità e risolti alcuni bug
*Abilmente esclusa int mgetchar() dalla compilazione su Windows; *void Sleep(int milliseconds) di windows.h aggiunta; *Risolto un bug che provocava un ciclo infinito dopo che un char rimane nella stdin. *Aggiornato il README.md;
This commit is contained in:
parent
09e63a2de0
commit
f5630398bf
22
README.md
22
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.
|
BIN
Tris in stile C
Executable file
BIN
Tris in stile C
Executable file
Binary file not shown.
35
main.c
35
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')
|
||||
|
41
tris.c
41
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);
|
||||
|
13
tris.h
13
tris.h
@ -26,18 +26,23 @@
|
||||
/*Funzione specifiche degli os*/
|
||||
#ifdef __WIN32__
|
||||
|
||||
#define os 0
|
||||
#include <conio.h>
|
||||
#include <windows.h>
|
||||
#define os 0
|
||||
#define clear "cls"
|
||||
#define sleep(x) Sleep(x)
|
||||
#define UX //
|
||||
|
||||
#else
|
||||
|
||||
#define os 1
|
||||
#define clear "clear"
|
||||
#include <termios.h>
|
||||
#include <unistd.h>
|
||||
#define os 1
|
||||
#define clear "clear"
|
||||
#define sleep(x) usleep(x*100)
|
||||
#define UX
|
||||
int mgetchar(void);
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
/*Prototipi*/
|
||||
|
Loading…
Reference in New Issue
Block a user