Sto provando a fare questo esercizio:
es: Si scriva in C++ un programma completo opportunamente modularizzato in funzioni che simuli una variante del gioco dell’impiccato tra due giocatori. Le regole del gioco sono le seguenti: il primo giocatore sceglie una parola segreta e mostra all’altro una serie di trattini (lunga quanto la lunghezza della parola da indovinare), ognuno dei quali nasconde una lettera. Il secondo giocatore ha a disposizione sette tentativi, in cui può dire qual è secondo lui la parola segreta oppure dichiarare una lettera; se la lettera dichiarata è presente nella parola segreta, il primo giocatore scopre tutti i trattini che nascondono la lettera indovinata. Il gioco termina quando il secondo giocatore indovina la parola segreta (e quindi vince) oppure esaurisce i tentativi a disposizione (e quindi vince il primo giocatore).
Esempio di partita: Il giocatore 1 sceglie come parola segreta portobello e mostra quindi la serie di trattini: _ _ _ _ _ _ _ _ _ _.
1° tentativo il giocatore 2 sceglie di dichiarare la lettera o ed il giocatore 1 mostra: _o_ _o_ _ _ _o.
2° tentativo il giocatore 2 sceglie di dichiarare la lettera s ed il giocatore 1 mostra: _o_ _o_ _ _ _o.
3° tentativo il giocatore 2 sceglie di dichiarare la lettera l ed il giocatore 1 mostra _o_ _o_ _ l l o.
4° tentativo il giocatore 2 sceglie di provare ad indovinare direttamente la parola e dice portogallo. Il giocatore 1 comunica che la risposta è sbagliata.
5° tentativo il giocatore 2 sceglie di nuovo di provare ad indovinare la parola e dice portobello. Il giocatore 1 comunica che la risposta è esatta ed il gioco termina
Una domanda è: ho modularizzato correttamente il programma in funzioni? ho fatto bene a usare funzioni void?
Il programma compila cosi' com'è.. e in esecuzione il problema è:
1)quando il giocatore 2 (gioc2) decide di provare ad indovinare una lettera..e dice quella giusta appare la lettera nella posizione corretta...e fin qui tutto ok.. poi se sceglie di nuovo di indovina un'altra lettera e questa è corretta...il programma stampa solo questa nuova lettera nella posizione giusta e invece dovrebbe stampare la nuova lettera e anche le lettere precedentemente indovinate(capito?!)..
2)quando il giocatore 2 prova a indovinare l'intera parola... anche se non indovina tutta la parola ma indovina qualche lettera l'output del programma è formato da varie frasi(me ne dà 5 ogni volta)...alcune dicono hai sbagliato e altre risposta corretta... mentre dovrebbe dire risposta corretta soltanto se tutte le lettere della parola sono state indovinate. Quindi una sola frase dovrebbe stampare e non una frase per ciclo..
ecco il codice:
codice:#include <iostream> using namespace std; void indovina(char parola [], int dim, char risposta_l, char risposta_p []); void scegli(char parola [], int dim); int main(){ char parola [20]; char risposta_l; char risposta_p [20]; scegli(parola, 20); indovina(parola, 20, risposta_l, risposta_p); system("pause"); return 0; } void indovina(char parola [], int dim, char risposta_l, char risposta_p []){ int tentativi=0, scelta=0; while(tentativi<=7){ cout<<"indovini una lettera?(1) o la parola?(2)"<<endl; cin>>scelta; switch(scelta){ case 1: cout<<"scrivi la lettera... "<<endl; cin>>risposta_l; for(int i=0; parola [i]!= '\0'; i++){ if(risposta_l == parola [i]) cout<<risposta_l; if(risposta_l != parola [i]) cout<<"_ "; }//for break; case 2: cout<<"scrivi la parola... "<<endl; cin>>risposta_p; for(int i=0; parola [i] != '\0';i++){ if(risposta_p [i] != parola [i]) cout<<"SBAGLIATO!, ritenta"<<endl; else cout<<"RISPOSTA ESATTA!!!"<<endl; }//for break; }//switch ++tentativi; }//while } void scegli(char parola [], int dim){ cout<<"gioc1-inserire parola"<<endl; cin>>parola; system("cls"); for(int i=0; parola [i]!='\0'; i++) cout<<"_ "; cout<<endl; cout<<"gioc2 - indovina la parola o una lettera!... "<<endl; }

Rispondi quotando
come e dove inizializzo la variabile bool?
