tris-in-stile-c/main.c
Rnhmjoj 01bc3116bb Prima Commit
Aggiunto il main e la libreria di funzioni.
2012-11-17 00:55:58 +01:00

223 lines
11 KiB
C
Executable File

#include "tris.h"
int main (){
int vittoria;
int difficolta;
do{
giocatore=1,vittoria=0;
scelta=0,difficolta=0,mossa=0;
system(clear); //menu d'inizio
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);
switch(scelta) {
case 1:{ //case per la partita con 2 giocatori
vuota();
system(clear);
stampa();
do{ //ciclo che contiene la partita. dura fino alla vittoria
leggimossa(); //richiama la funzione che legge la mossa
system(clear);
mossa++; //conteggio delle mossa,assegnazione del simbolo alle coordinate scelte e stampa della tabella
tabella[i][k]=giocatore;
stampa();
if (controlla(1)){ //richiama la funzione controlla che verifica se qualcuno ha vinto
vittoria=1;
break;
}
if(giocatore==1) //cambia il turno del giocatore
giocatore=2;
else
giocatore=1;
}
while(!vittoria && mossa<M*M);
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();
} //stampa il risultato della partita, richiama la funzione pausa, rompe lo switch e ritorna al menu
break;
}
case 2:{ //case che contiene la partita singolo giocatore
vuota();
system(clear);
do{ //ciclo per scegliere la difficolta del gioco
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 "ROSSO"[2]"RESET BIANCO" Medio\n "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();
do{ //ciclo che contiene la partita fino alla vittoria/pareggio
if (giocatore==1){
leggimossa(); //richiama la funzione che legge la mossa
tabella[i][k]=1;
system(clear);
stampa();
aspetta(1);
}
else{ //turno del computer
system(clear);
printf(ROSSO"\n Gioco io ora...\n" RESET BIANCO);
spinner(1);
switch(difficolta){ //switch che contiene la mossa del computer
//richiama le funzione in base alla difficoltà
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);
}
mossa++; //conteggio delle mossa,assegnazione del simbolo alle coordinate scelte e stampa della tabella
stampa();
if (controlla(1)||controlla(2)){ //richiama la funzione controlla che verifica se qualcuno ha vinto
vittoria=1;
break;
}
if(giocatore==1){ //cambia il turno del giocatore
giocatore=2;
}
else {
giocatore=1;
}
}
while(!vittoria && mossa<M*M);
system(clear);
stampa();
printf(ROSSO);
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");
}
}
}
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(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");
}
}
}
pausa();
break;
} //stampa del risultato della partita,esce dallo switch e ritorna al menu
case 3: {
system(clear); //case per le modalità di input
do{
system(clear);
printf("\n Vuoi usare il tastierino numerico o le coordinate"ROSSO"[T,C]"RESET BIANCO"?\n");
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:{
system(clear); //case per l'about
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;
}