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 iostream per gestire input e output
  • Dichiara due variabili di tipo char chiamate P1 e P2 per 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;

}