#include <iostream>
#include <string>
#include <windows.h>
#include <ctime>
#include <clocale>
using namespace std;
void vuota_console();
void attendi();
void attendi( time_t ms );
void stampa_riga( char c, size_t n );
void presenta_programma( int punteggio );
int scelta_difficolta( int punteggio );
int gioca( int num, int poss, int punteggio );
void sbagliato( int num, int punteggio, int record );
void corretto( int num, int *punteggio, int *record );
void saluti_e_baci();
bool gioca_ancora( int punteggio );
int main() {
int punteggio = 0;
int record = 0;
setlocale( LC_ALL, "Italian_italy.1252" );
srand( (unsigned)time(NULL) );
do {
int num, poss, giusto;
string magg, min;
presenta_programma( punteggio );
poss = scelta_difficolta( punteggio );
num = rand()%100 + 1;
giusto = gioca( num, poss, punteggio );
if( giusto == 0 )
sbagliato( num, punteggio, record );
else corretto( num, &punteggio, &record );
} while( gioca_ancora(punteggio) );
saluti_e_baci();
return 0;
}
void vuota_console() {
system( "cls" );
}
void attendi() {
cout<<" ";
system( "PAUSE" );
}
void attendi( time_t ms ) {
Sleep( ms );
}
void stampa_riga( char c, size_t n ) {
while( n-- > 0 ) cout<<c;
}
void presenta_programma( int punteggio ) {
vuota_console();
system( "color 0a" );
cout<<" Benvenuto nel gioco 'Indovina il numero'";
stampa_riga( ' ', 24 );
cout<<"Punteggio: "<<punteggio<<endl;
cout<<" Devi indovinare il numero generato tra 0 e 100"<<endl<<endl;
attendi();
}
int scelta_difficolta( int punteggio ) {
int poss, diff;
do {
vuota_console();
cout<<" Scegli la difficoltà";
stampa_riga( ' ', 44 );
cout<<"Punteggio: "<<punteggio<<endl;
cout<<" 1-Facile (4 possibilità)"<<endl;
cout<<" 2-Media (3 possibilità)"<<endl;
cout<<" 3-Difficile (2 possibilità)"<<endl;
cout<<" 4-Impossibile (1 possibilità)"<<endl;
cout<<" ";
cin>>diff;
poss = diff>0 && diff<5 ? 5-diff : 0;
} while( poss == 0 );
vuota_console();
cout<<" Difficoltà impostata ("<<poss<<" possibilità)";
attendi( 2000 );
vuota_console();
return poss;
}
int gioca( int num, int poss, int punteggio ) {
int numins;
int giusto;
while( poss > 0 ) {
stampa_riga( ' ', 66 );
cout<<"Punteggio: "<<punteggio<<endl;
cout<<" Ora prova ad indovinare il numero >> ";
cin>>numins;
if( numins == num ) {
giusto = 1;
}
else {
if( numins < num )
cout<<" Ci sei vicino, è più grande ";
else cout<<" Ci sei vicino, è più piccolo ";
attendi( 1500 );
vuota_console();
}
--poss;
}
return giusto;
}
void sbagliato( int num, int punteggio, int record ) {
cout<<" Hai terminato le possibilità a disposizione";
stampa_riga( ' ', 22 );
cout<<"Punteggio: "<<punteggio<<endl<<endl;
cout<<" Il numero era >> "<<num<<endl;
cout<<" Il record attuale è >> "<<record;
cout<<endl<<endl;
attendi();
}
void corretto( int num, int *punteggio, int *record ) {
vuota_console();
cout<<" Hai indovinato!";
stampa_riga( ' ', 50 );
cout<<"Punteggio: "<<*punteggio<<endl<<endl;
++(*punteggio);
if( *record < *punteggio ) {
cout<<" Nuovo record!";
*record = *punteggio;
}
else {
cout<<" Il record attuale e' >> "<<*record;
}
cout<<endl<<endl;
attendi();
}
void saluti_e_baci() {
vuota_console();
cout<<" Arrivedolci";
attendi( 1000 );
vuota_console();
cout<<" Esposito say: "<<"I TIGLI"<<endl<<endl;
attendi( 1000 );
}
bool gioca_ancora( int punteggio ) {
string ancora;
char input;
do {
vuota_console();
stampa_riga( ' ', 66 );
cout<<"Punteggio: "<<punteggio<<endl;
cout<<" Vuoi rigiocare ? si/no >> ";
cin>>ancora;
input = tolower( *(ancora.c_str()) );
} while( input!='s' && input!='n' );
return input == 's';
}