2012-11-17 00:55:58 +01:00
# include "tris.h"
int main ( ) {
2012-11-18 19:50:58 +01:00
int vittoria ;
int difficolta ;
do {
2012-11-17 00:55:58 +01:00
giocatore = 1 , vittoria = 0 ;
scelta = 0 , difficolta = 0 , mossa = 0 ;
2012-11-18 19:50:58 +01:00
/*Menu d'inizio*/
system ( clear ) ;
2012-11-17 00:55:58 +01:00
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 ) ;
2012-11-18 19:50:58 +01:00
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*/
mossa + + ;
tabella [ i ] [ k ] = giocatore ;
stampa ( ) ;
/*Controlla se il giocatore ha vinto*/
if ( controlla ( 1 ) ) {
vittoria = 1 ;
break ;
2012-11-17 00:55:58 +01:00
}
2012-11-18 19:50:58 +01:00
/*cambia il turno del giocatore*/
if ( giocatore = = 1 )
giocatore = 2 ;
else
giocatore = 1 ;
2012-11-17 00:55:58 +01:00
}
while ( ! vittoria & & mossa < M * M ) ;
2012-11-18 19:50:58 +01:00
/*Stampa il risultato della partita, mette in pausa, rompe lo switch e ritorna al menu*/
2012-11-17 00:55:58 +01:00
if ( ( ! controlla ( 1 ) ) & & ( ! controlla ( 2 ) ) ) {
printf ( ROSSO " Pareggio. \n " ) ;
pausa ( ) ;
}
else {
printf ( ROSSO " Partita terminata. \n Ha vinto il giocatore %d. \n \n " , giocatore ) ;
pausa ( ) ;
2012-11-18 19:50:58 +01:00
}
2012-11-17 00:55:58 +01:00
break ;
}
2012-11-18 19:50:58 +01:00
/*Case che contiene la partita singolo giocatore*/
case 2 : {
vuota ( ) ;
system ( clear ) ;
/*ciclo per scegliere la difficolta del gioco*/
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 ( GRASSETTO ROSSO " \n Scelta non valida. \n \n " RESET BIANCO ) ;
} 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 ) ;
}
/*Turno del computer*/
else {
system ( clear ) ;
printf ( ROSSO " \n Gioco io ora... \n " RESET BIANCO ) ;
spinner ( 1 ) ;
/*switch che contiene la mossa del computer in base alla difficolta scelta*/
switch ( difficolta ) {
2012-11-17 00:55:58 +01:00
case 1 : {
facile ( ) ;
break ;
}
case 2 : {
medio ( ) ;
break ;
}
case 3 : {
difficile ( ) ;
break ;
}
}
printf ( ROSSO " \n Ok, ho scelto. \n " RESET BIANCO ) ;
stampa ( ) ;
aspetta ( 2 ) ;
system ( clear ) ;
}
2012-11-18 19:50:58 +01:00
/*Conteggio delle mosse, assegnazione del simbolo alle coordinate scelte e stampa della tabella*/
mossa + + ;
stampa ( ) ;
/*Controlla se qualcuno ha vinto*/
if ( controlla ( 1 ) | | controlla ( 2 ) ) {
vittoria = 1 ;
break ;
2012-11-17 00:55:58 +01:00
}
2012-11-18 19:50:58 +01:00
/*Cambia il turno del giocatore*/
if ( giocatore = = 1 )
giocatore = 2 ;
else
giocatore = 1 ;
}
while ( ! vittoria & & mossa < M * M ) ;
system ( clear ) ;
stampa ( ) ;
2012-11-17 00:55:58 +01:00
printf ( ROSSO ) ;
2012-11-18 19:50:58 +01:00
/*Stampa il risultato della partita, mette in pausa, rompe lo switch e ritorna al menu*/
if ( ( ! controlla ( 1 ) & & ! controlla ( 2 ) ) & & difficolta = = 1 )
printf ( " Pareggio, potevi fare di meglio. \n \n " ) ;
else {
if ( ( ! controlla ( 1 ) & & ! controlla ( 2 ) ) & & difficolta = = 2 )
printf ( " Pareggio, ci eri quasi, riprova... \n \n " ) ;
else {
if ( ( ! controlla ( 1 ) & & ! controlla ( 2 ) ) & & difficolta = = 3 ) {
if ( ! os )
printf ( " Pareggio, ti %c andata gi%c bene... \n \n " , 138 , 133 ) ;
else
printf ( " Pareggio, ti è andata già bene... \n \n " ) ;
2012-11-17 00:55:58 +01:00
}
}
}
2012-11-18 19:50:58 +01:00
if ( controlla ( 2 ) & & difficolta = = 1 )
printf ( " Hai perso. Ti sei fatto battere da delle mosse pseudocasuali, complimenti. \n \n " ) ;
2012-11-17 00:55:58 +01:00
else {
if ( controlla ( 2 ) & & difficolta = = 2 )
printf ( " Hai perso. Dai... lo potevi battere. \n \n " ) ;
else {
if ( controlla ( 2 ) & & difficolta = = 3 )
printf ( " Lo sai... non puoi battere il minimax. \n \n " ) ;
}
}
if ( giocatore = = 1 & & difficolta = = 1 )
printf ( " Bravo, hai battuto uno che mette crocette a caso! \n \n " ) ;
else {
if ( giocatore = = 1 & & difficolta = = 2 ) {
if ( ! os )
printf ( " Bravo, non %c stato facile! \n \n " , 138 ) ;
else
printf ( " Bravo, non è stato facile! \n \n " ) ;
}
else {
if ( giocatore = = 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 ) ;
else
printf ( " Sei vedi questo messaggio sicuramente c'è qualcosa che non va. \n \n " ) ;
2012-11-18 19:50:58 +01:00
}
}
}
pausa ( ) ;
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 " ) ;
2012-11-17 00:55:58 +01:00
scanf ( " \n %c " , & a ) ;
} while ( a ! = ' T ' & & a ! = ' C ' & & a ! = ' t ' & & a ! = ' c ' ) ;
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 " ) ;
if ( ! os )
printf ( ROSSO " * " RESET BIANCO " Ad esempio il tasto 5 %c il centro. \n " , 138 ) ;
else
printf ( ROSSO " * " RESET BIANCO " Ad esempio il tasto 5 è il centro. \n " ) ;
printf ( ROSSO " * " RESET BIANCO " Divertiti. \n \n " ) ;
}
else {
system ( clear ) ;
printf ( SOTTOLINEATO GIALLO " \n Istruzioni per giocare: \n \n " RESET BIANCO ) ;
if ( ! os )
printf ( ROSSO " * " RESET BIANCO " Il tris %c contenuto in una tabella numerica: \n " , 138 ) ;
else
printf ( ROSSO " * " RESET BIANCO " Il tris è contenuto in una tabella numerica: \n " ) ;
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 " ) ;
if ( ! os )
printf ( " la casella nella 1%c riga nella 1%c colonna ha quindi coordinate 0,0. \n \n " , 248 , 248 ) ;
else
printf ( " la casella nella 1° riga nella 1° colonna ha quindi coordinate 0,0. \n \n " ) ;
printf ( ROSSO " * " RESET BIANCO " Divertiti. \n \n " ) ;
}
pausa ( ) ;
break ;
}
case 4 : {
2012-11-18 19:50:58 +01:00
/*About*/
system ( clear ) ;
2012-11-17 00:55:58 +01:00
printf ( SOTTOLINEATO GIALLO " \n Tris in stile C \n \n " 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 ) ;
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 " ) ;
pausa ( ) ;
break ;
}
}
} while ( scelta ! = 5 ) ;
return 0 ;
}