247 lines
11 KiB
C
Executable File
247 lines
11 KiB
C
Executable File
#include "tris.h"
|
|
int main (){
|
|
int vittoria;
|
|
int difficolta;
|
|
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("\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*/
|
|
mossa++;
|
|
tabella[i][k]=giocatore;
|
|
stampa();
|
|
/*Controlla se il giocatore ha vinto*/
|
|
if(controlla(1)||controlla(2)){
|
|
vittoria=1;
|
|
break;
|
|
}
|
|
/*cambia il turno del giocatore*/
|
|
if(giocatore==1)
|
|
giocatore=2;
|
|
else
|
|
giocatore=1;
|
|
}
|
|
while(!vittoria && mossa<M*M);
|
|
/*Stampa il risultato della partita, mette in pausa, rompe lo switch e ritorna al menu*/
|
|
if(controlla(1)==-1){
|
|
printf(ROSSO " Pareggio.\n");
|
|
pausa();
|
|
}
|
|
else{
|
|
printf(ROSSO " Partita terminata.\n Ha vinto il giocatore %d.\n\n",giocatore);
|
|
pausa();
|
|
}
|
|
break;
|
|
}
|
|
/*Case che contiene la partita singolo giocatore*/
|
|
case 2:{
|
|
vuota();
|
|
/*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");
|
|
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();
|
|
/*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){
|
|
case 1:{
|
|
facile();
|
|
break;
|
|
}
|
|
case 2:{
|
|
medio();
|
|
break;
|
|
}
|
|
case 3:{
|
|
difficile();
|
|
break;
|
|
}
|
|
}
|
|
printf( ROSSO "\n Ok, ho scelto.\n" RESET BIANCO);
|
|
stampa();
|
|
aspetta(1);
|
|
system(clear);
|
|
}
|
|
/*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;
|
|
}
|
|
/*Cambia il turno del giocatore*/
|
|
if(giocatore==1)
|
|
giocatore=2;
|
|
else
|
|
giocatore=1;
|
|
}
|
|
while(!vittoria && mossa<M*M);
|
|
system(clear);
|
|
stampa();
|
|
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");
|
|
else{
|
|
if(controlla(1)==-1 && difficolta==2)
|
|
printf(" Pareggio, ci eri quasi, riprova...\n\n");
|
|
else{
|
|
if(controlla(1)==-1 && 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");
|
|
}
|
|
}
|
|
}
|
|
if(controlla(2) && difficolta==1)
|
|
printf(" Hai perso. Ti sei fatto battere da delle mosse pseudocasuali, complimenti.\n\n");
|
|
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(controlla(1) && difficolta==1)
|
|
printf(" Bravo, hai battuto uno che mette crocette a caso!\n\n");
|
|
|
|
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");
|
|
}
|
|
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);
|
|
else
|
|
printf(" Sei vedi questo messaggio sicuramente c'è qualcosa che non va.\n\n");
|
|
}
|
|
}
|
|
}
|
|
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");
|
|
getchar();
|
|
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:{
|
|
/*About*/
|
|
system(clear);
|
|
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;
|
|
}
|
|
|