Correzione - Gioco Sasso Carta Forbici in C++
Cosa fa questo programma?
Questo programma implementa il classico gioco "Sasso, Carta, Forbici" per due giocatori. Il computer chiede a entrambi i giocatori di inserire la loro mossa e poi determina chi ha vinto secondo le regole tradizionali del gioco.
Analisi del codice
Inclusione delle librerie e dichiarazioni iniziali
#include <iostream>
using namespace std;
int main () {
char P1, P2;
- Il programma include la libreria
iostreamper gestire input e output - Dichiara due variabili di tipo
charchiamateP1eP2per memorizzare le mosse dei due giocatori
Input delle mosse
cout<<"Inserire la mossa desiderata del giocatore 1: S per sasso, C per carta e F per forbici"<<endl;
cin>>P1;
cout<<"Inserire la mossa desiderata del giocatore 2: S per sasso, C per carta e F per forbici"<<endl;
cin>>P2;
Il programma chiede a ciascun giocatore di inserire la propria mossa usando:
- S per Sasso
- C per Carta
- F per Forbici
Controllo della validità delle mosse
if (((P1!='C')&&(P1!='F')&&(P1!='S')||(P2!='C')&&(P2!='F')&&(P2!='S'))) {
cout<<"Una delle due mosse è irregolare"<<endl;
}
Questa condizione verifica se almeno una delle due mosse inserite non è valida. Se un giocatore inserisce un carattere diverso da 'S', 'C' o 'F', il programma segnala l'errore.
Determinazione del vincitore - Giocatore 1
else if (((P1=='S')&&(P2=='F'))||((P1=='F')&&(P2=='C'))||((P1=='C')&&(P2=='S'))) {
cout<<"Il giocatore 1 ha vinto"<<endl;
}
Il giocatore 1 vince quando:
- Sasso batte Forbici (P1='S' e P2='F')
- Forbici battono Carta (P1='F' e P2='C')
- Carta batte Sasso (P1='C' e P2='S')
Determinazione del vincitore - Giocatore 2
else if (((P2=='S')&&(P1=='F'))||((P2=='F')&&(P1=='S'))||((P2=='C')&&(P1=='S'))) {
cout<<"Il giocatore 2 ha vinto"<<endl;
}
Il giocatore 2 vince nelle situazioni opposte a quelle del giocatore 1.
Caso di pareggio
else {
cout<<"I due giocatori hanno utilizzato la stessa mossa, pertanto la partita si è conclusa con un pareggio"<<endl;
}
Se nessuna delle condizioni precedenti è vera, significa che i due giocatori hanno scelto la stessa mossa, quindi è pareggio.
Le regole del gioco
- Sasso batte Forbici (il sasso rompe le forbici)
- Forbici battono Carta (le forbici tagliano la carta)
- Carta batte Sasso (la carta avvolge il sasso)
- Se entrambi scelgono la stessa mossa, è pareggio
Esempio di esecuzione
Se il giocatore 1 sceglie 'S' (Sasso) e il giocatore 2 sceglie 'F' (Forbici), il programma stamperà "Il giocatore 1 ha vinto" perché il sasso batte le forbici.
#include <iostream>
using namespace std;
int main () {
char P1, P2;
cout<<"Inserire la mossa desiderata del giocatore 1: S per sasso, C per carta e F per forbici"<<endl;
cin>>P1;
cout<<"Inserire la mossa desiderata del giocatore 2: S per sasso, C per carta e F per forbici"<<endl;
cin>>P2;
if (((P1!='C')&&(P1!='F')&&(P1!='S')||(P2!='C')&&(P2!='F')&&(P2!='S'))) {
cout<<"Una delle due mosse è irregolare"<<endl;
}
else if (((P1=='S')&&(P2=='F'))||((P1=='F')&&(P2=='C'))||((P1=='C')&&(P2=='S'))) {
cout<<"Il giocatore 1 ha vinto"<<endl;
}
else if (((P2=='S')&&(P1=='F'))||((P2=='F')&&(P1=='S'))||((P2=='C')&&(P1=='S'))) {
cout<<"Il giocatore 2 ha vinto"<<endl;
}
else {
cout<<"I due giocatori hanno utilizzato la stessa mossa, pertanto la partita si è conclusa con un pareggio"<<endl;
}
return 0;
}