From f5169493342d21fb9e998ce24b43264a2e1aeb98 Mon Sep 17 00:00:00 2001 From: Rnhmjoj Date: Tue, 8 Oct 2013 16:54:41 +0200 Subject: [PATCH] Modifiche varie MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit *Migliorato il metodo per centrare il testo *Reso il codice più leggibile --- main.c | 194 ++++++++++++++++++++++++++++++++------------------------- tris.c | 44 +++++++------ 2 files changed, 133 insertions(+), 105 deletions(-) diff --git a/main.c b/main.c index eed9261..f17ba33 100755 --- a/main.c +++ b/main.c @@ -1,37 +1,46 @@ #include "tris.h" + int main (){ int vittoria; int difficolta; - tastierino=1; - a='a'; + tastierino = 1; + a = 'a'; do{ giocatore=1,vittoria=0; - scelta=0,difficolta=0,mossa=0; - /*Menu d'inizio*/ + 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"); + printf("\n%-64s%-70s%s\n\n", SOTTOLINEATO GIALLO, "Tris in stile C", RESET BIANCO); + printf("\n%-53s%s%s %s\n", ROSSO, "[1]", BIANCO, "Partita con 2 giocatori"); + printf("\n%-53s%s%s %s\n", ROSSO, "[2]", BIANCO, "Partita singolo giocatore"); if(!os) - printf(ROSSO" [3]"RESET BIANCO" Modalit%c di input\n",133); + printf("\n%-53s%s%s %s%c %s\n", ROSSO, "[3]", BIANCO, "Modalit", 133, "di input"); else - printf(ROSSO" [3]"RESET BIANCO" Modalità di input \n"); - printf(ROSSO" [4]"RESET BIANCO" Informazioni\n"); - printf(ROSSO" [5]"RESET BIANCO" Esci\n"); + printf("\n%-53s%s%s %s\n", ROSSO, "[3]", BIANCO, "Modalità di input"); + printf("\n%-53s%s%s %s\n", ROSSO, "[4]", BIANCO, "Informazioni"); + printf("\n%-53s%s%s %s\n", ROSSO, "[5]", BIANCO, "Esci"); scanf("\n%d",&scelta); switch(scelta){ + /*case per la partita con 2 giocatori*/ case 1:{ + /*Vuota la tabella, pulisce lo schermo e la stampa*/ vuota(); system(clear); stampa(); + /*ciclo che contiene la partita. Dura fino alla vittoria*/ do{ /*Legge la mossa del giocatore*/ leggimossa(); system(clear); - /*Conteggio delle mosse, assegnazione del simbolo alle coordinate scelte e stampa della tabella*/ + + /* conteggio delle mosse, + * assegnazione del simbolo alle coordinate scelte, + * stampa della tabella, + */ mossa++; tabella[i][k]=giocatore; stampa(); @@ -47,56 +56,61 @@ int main (){ giocatore=1; } while(!vittoria && mossa3){ - printf(GRASSETTO ROSSO"\n Scelta non valida.\n\n" RESET BIANCO); + printf("\n%-60s%-75s%s\n\n", SOTTOLINEATO GIALLO, "Scegli la difficoltà:", RESET BIANCO); + printf("%-60s%s%s %s\n", ROSSO, "[1]", BIANCO, "Facile"); + printf("%-60s%s%s %s\n", ROSSO, "[2]", BIANCO, "Medio"); + printf("%-60s%s%s %s\n", ROSSO, "[3]", BIANCO, "Difficile"); + scanf("\n%d", &difficolta); + if(difficolta < 1 || difficolta > 3){ + printf("\n%-62s%s%s\n\n", GRASSETTO ROSSO, "Scelta non valida.", RESET BIANCO); aspetta(2); - } - }while(difficolta<1||difficolta>3); + }while(difficolta < 1 || difficolta > 3); system(clear); stampa(); + /*Ciclo che contiene la partita fino alla vittoria o al pareggio*/ do{ + /*Turno del giocatore umano*/ if(giocatore==1){ - leggimossa(); - tabella[i][k]=1; - system(clear); - stampa(); - aspetta(1); + leggimossa(); + tabella[i][k]=1; + system(clear); + stampa(); + aspetta(1); } + /*Turno del computer*/ else{ system(clear); - printf(ROSSO"\n Gioco io ora...\n" RESET BIANCO); + printf("\n%-60s%s%s\n", ROSSO, "Gioco io ora...", RESET BIANCO); spinner(1); + /*switch che contiene la mossa del computer in base alla difficolta scelta*/ switch(difficolta){ case 1:{ @@ -112,16 +126,21 @@ int main (){ break; } } - printf( ROSSO "\n Ok, ho scelto.\n" RESET BIANCO); + printf("\n%-60s%s%s\n", ROSSO, "Ok, ho scelto.", RESET BIANCO); stampa(); aspetta(1); system(clear); } - /*Conteggio delle mosse, assegnazione del simbolo alle coordinate scelte e stampa della tabella*/ + + /*Conteggio delle mosse, + * assegnazione del simbolo alle coordinate scelte, + * stampa della tabella + */ mossa++; stampa(); + /*Controlla se qualcuno ha vinto*/ - if(controlla(1)||controlla(2)){ + if(controlla(1) || controlla(2)){ vittoria=1; break; } @@ -137,47 +156,46 @@ int main (){ printf(ROSSO); /*Stampa il risultato della partita, mette in pausa, rompe lo switch e ritorna al menu*/ if(controlla(1)==-1 && difficolta==1) - printf(" Pareggio, potevi fare di meglio.\n\n"); + printf("%-45s%s", "", "Pareggio, potevi fare di meglio."); else{ if(controlla(1)==-1 && difficolta==2) - printf(" Pareggio, ci eri quasi, riprova...\n\n"); + printf("%-45s%s", "", "Pareggio, ci eri quasi, riprova..."); else{ if(controlla(1)==-1 && difficolta==3){ if(!os) - printf(" Pareggio, ti %c andata gi%c bene...\n\n",138,133); + printf("%-45s%s %c %s%c %s", "", "Pareggio, ti", 138, "andata gi", 133, ", bene..."); else - printf(" Pareggio, ti è andata già bene...\n\n"); - } + printf("%-45s%s", "", "Pareggio, ti è andata già bene..."); + } } } if(controlla(2) && difficolta==1) - printf(" Hai perso. Ti sei fatto battere da delle mosse pseudocasuali, complimenti.\n\n"); - else { + printf("%-25s%s", "", "Hai perso. Ti sei fatto battere da delle mosse pseudocasuali, complimenti."); + else{ if(controlla(2) && difficolta==2) - printf(" Hai perso. Dai... lo potevi battere.\n\n"); - + printf("%-45s%s", "", "Hai perso. Dai... lo potevi battere."); else{ if(controlla(2) && difficolta==3) - printf(" Lo sai... non puoi battere il minimax.\n\n"); + printf("%-45s%s", "", "Lo sai... non puoi battere il minimax."); } } + if(controlla(1) && difficolta==1) - printf(" Bravo, hai battuto uno che mette crocette a caso!\n\n"); - - else{ + printf("%-38s%s", "", "Bravo, hai battuto uno che mette crocette a caso!"); + else{ if(controlla(1) && difficolta==2){ if(!os) - printf(" Bravo, non %c stato facile!\n\n",138); - else - printf(" Bravo, non è stato facile!\n\n"); - } + printf("%-48s%s %c %s", "", "Bravo, non", 138, "stato facile!"); + else + printf("%-48s%s", "", "Bravo, non è stato facile!"); + } else{ if(controlla(1) && difficolta==3){ - printf(" Impossibile!! Non hai vinto!!!\n"); - if(!os) - printf(" Sei vedi questo messaggio sicuramente c'%c qualcosa che non va.\n\n",138); + printf("%-48s%s", "", "Impossibile!! Non hai vinto!!!"); + if(!os) + printf("%-30s%s%c %s", "", "Sei vedi questo messaggio sicuramente c'",138, "qualcosa che non va."); else - printf(" Sei vedi questo messaggio sicuramente c'è qualcosa che non va.\n\n"); + printf("%-30s%s", "", "Sei vedi questo messaggio sicuramente c'è qualcosa che non va."); } } } @@ -185,56 +203,60 @@ int main (){ break; } case 3:{ + /*Case per la scelta delle modalità di input*/ system(clear); do{ system(clear); - printf("\n Vuoi usare il tastierino numerico o le coordinate"ROSSO"[T,C]"RESET BIANCO"?\n"); - getchar(); + printf("%-34s %s%s%s%s%s\n", "", "Vuoi usare il tastierino numerico o le coordinate", ROSSO, "[T,C]", BIANCO, "?"); scanf("\n%c",&a); }while(a!='T' && a!='C' && a!='t' && a!='c'); - if(a=='T'||a=='t') + + if(a=='T' || a=='t') tastierino=1; else tastierino=0; + if(tastierino==1){ system(clear); - printf(SOTTOLINEATO GIALLO"\n Istruzioni per giocare: \n\n" RESET BIANCO); - printf(ROSSO"\n *"RESET BIANCO" Usa il tastierino come se fosse la tabella del tris.\n"); + printf("\n%-60s%-74s%s\n\n", SOTTOLINEATO GIALLO, "Istruzioni per giocare", RESET BIANCO); + printf("\n%-40s%s%s %s\n", ROSSO, "*", BIANCO, "Usa il tastierino come se fosse la tabella del tris."); if (!os) - printf(ROSSO" *"RESET BIANCO" Ad esempio il tasto 5 %c il centro.\n",138); + printf("\n%-40s%s%s %s %c %s\n" ,ROSSO, "*", BIANCO, "Ad esempio il tasto 5", 138, "il centro."); else - printf(ROSSO" *"RESET BIANCO" Ad esempio il tasto 5 è il centro.\n"); - printf(ROSSO" *"RESET BIANCO" Divertiti.\n\n"); + printf("\n%-40s%s%s %s\n", ROSSO, "*", BIANCO, "Ad esempio il tasto 5 è il centro."); + printf("\n%-40s%s%s %s\n\n", ROSSO, "*", BIANCO, "Divertiti."); } + else{ system(clear); - printf(SOTTOLINEATO GIALLO"\n Istruzioni per giocare: \n\n" RESET BIANCO); + printf("\n%-60s%-74s%s\n\n", SOTTOLINEATO GIALLO, "Istruzioni per giocare", RESET BIANCO); if(!os) - printf(ROSSO" * "RESET BIANCO"Il tris %c contenuto in una tabella numerica:\n",138); + printf("%-35s%s %s %s %c %s\n", ROSSO, "*", BIANCO, "Il tris", 138, "contenuto in una tabella numerica:"); else - printf(ROSSO" * "RESET BIANCO"Il tris è contenuto in una tabella numerica:\n"); + printf("%-35s%s %s%s\n", ROSSO, "*", BIANCO, "Il tris è contenuto in una tabella numerica:"); - printf(" Le coordinata della mosssa vanno in indicate con: x,y.\n"); - printf(" x sono le righe e y le colonne.\n\n"); - printf(ROSSO" * "RESET BIANCO"Ricordati che stai parlando di un'array: quindi si conta da 0:\n"); + printf("%-37s%s\n","", "Le coordinata della mosssa vanno in indicate con: x,y."); + printf("%-37s%s\n\n", "", "x sono le righe e y le colonne."); + printf("%-35s%s%s %s\n", ROSSO, "*", BIANCO, "Ricordati che stai parlando di un'array: quindi si conta da 0:"); if(!os) - printf(" la casella nella 1%c riga nella 1%c colonna ha quindi coordinate 0,0.\n\n",248,248); + printf("%-37s%c %s%c %s\n\n", "la casella nella 1", 248, "riga nella 1", 248, "colonna ha quindi coordinate 0,0."); else - printf(" la casella nella 1° riga nella 1° colonna ha quindi coordinate 0,0.\n\n"); - printf(ROSSO" * "RESET BIANCO"Divertiti.\n\n"); + printf("%-37s%s\n\n", "", "la casella nella 1° riga nella 1° colonna ha quindi coordinate 0,0."); + printf("%-35s%s %s%s\n\n", ROSSO, "*", BIANCO, "Divertiti."); } pausa(); break; } case 4:{ + /*About*/ system(clear); - printf(SOTTOLINEATO GIALLO"\n Tris in stile C \n\n" RESET BIANCO); + printf("\n%-64s%-70s%s\n\n", SOTTOLINEATO GIALLO, "Tris in stile C", RESET BIANCO); if (!os) - printf("\n Questo gioco %c stato sviluppato da Michele Guerini Rocco in una fredda notte \n di premiazioni e sistemato per l'intero anno successivo.\n\n",138); + printf("%-28s%s %c %s\n%-28s%s\n\n", "", "Questo gioco", 138, "stato sviluppato da Michele Guerini Rocco in una fredda", "", "notte di premiazioni e sistemato per l'intero anno successivo."); else - printf("\n Questo gioco è stato sviluppato da Michele Guerini Rocco in una fredda notte \n di premiazioni e sistemato per l'intero anno successivo.\n\n"); + printf("%-28s%s\n%-28s%s\n\n", "", "Questo gioco è stato sviluppato da Michele Guerini Rocco in una fredda", "", "notte di premiazioni e sistemato per l'intero anno successivo."); pausa(); break; } diff --git a/tris.c b/tris.c index 6c29f1c..60487d8 100755 --- a/tris.c +++ b/tris.c @@ -30,7 +30,7 @@ void stampa(){ int i,k; printf("\n\n\n"); for(i=0;i=M||k>=M){ + if(tabella[i][k]==1 || tabella[i][k]==2 || i<0 || k<0 || i>=M || k>=M){ system(clear); stampa(); - printf(GRASSETTO ROSSO"\n Mossa non valida,riprova.\n\n"RESET BIANCO); + printf("%-59s%s%s\n\n", GRASSETTO ROSSO, "Mossa non valida, riprova.", RESET BIANCO); } - }while(tabella[i][k]==1||tabella[i][k]==2||i<0||k<0||i>=M||k>=M); + }while(tabella[i][k]==1 || tabella[i][k]==2 || i<0 || k<0 || i>=M || k>=M); } + /*Mossa con coordinate*/ else{ do{ + /*Giocatore singolo*/ if(scelta==2) - printf(GIALLO" Tocca a te.\n Inserisci coordinate della mossa"ROSSO"[Riga,colonna]:\n" RESET BIANCO); + printf("%-63s%s\n%-40s%s%s %s%s\n", GIALLO, "Tocca a te.", "", "Inserisci coordinate della mossa", ROSSO, "[Riga,colonna]:", BIANCO); + /*2 giocatori*/ else - printf(GIALLO" Gioca il giocatore %d.\n Inserisci coordinate della mossa"ROSSO"[Riga,colonna]:\n" RESET BIANCO,giocatore); + printf("%-58s%s %d\n%-40s%s %s%s%s\n", GIALLO, "Gioca il giocatore", giocatore, "", "Inserisci coordinate della mossa", ROSSO, "[Riga,colonna]:", BIANCO); scanf("%d,%d",&i,&k); - if(tabella[i][k]==1||tabella[i][k]==2||i<0||k<0||i>=M||k>=M){ + if(tabella[i][k]==1 || tabella[i][k]==2 || i<0 || k<0 || i>=M || k>=M){ system(clear); stampa(); - printf(GRASSETTO ROSSO"\n\n Coordinate non valide,riprova.\n\n\n"RESET BIANCO); + printf("\n\n%-56s%s%s\n\n\n", GRASSETTO ROSSO, "Coordinate non valide, riprova.", RESET BIANCO); } - }while(tabella[i][k]==1||tabella[i][k]==2||i<0||k<0||i>=M||k>=M); + }while(tabella[i][k]==1 || tabella[i][k]==2 || i<0 || k<0 || i>=M || k>=M); system(clear); } @@ -156,20 +162,20 @@ int controlla(int giocatore){ /*Diagonali*/ for(i=0;i=0;k--) - if((tabella[i][k]==giocatore&&tabella[i+1][k-1]==giocatore&&tabella[i+2][k-2]==giocatore)&&(i+2res)||(tmp==INT_MAX)) + else if(((tmp=minimax(1,profondita-1))>res) || (tmp==INT_MAX)) res=tmp; tabella[i][k]=0; } @@ -236,7 +242,7 @@ void facile() { randomize; a=random(M); b=random(M); - }while(tabella[a][b]==1||tabella[a][b]==2); + }while(tabella[a][b]==1 || tabella[a][b]==2); tabella[a][b]=2; } @@ -299,7 +305,7 @@ void aspetta(int t){ /*Caricamento stile Ajax*/ void spinner(int tempo) { char spinner[] = "/-\\|"; - printf(GIALLO"\n "); + printf("\n%-66s", GIALLO); for (int i=0; i<(tempo*10);i++){ putchar(spinner[i%4]); fflush(stdout);