C++ morra

Stato
Discussione chiusa ad ulteriori risposte.

Svpam

Nuovo Utente
70
2
CPU
intel core i5-2310m
HDD
1TB Western digital 5400rpm
RAM
8gb ddr3
GPU
amd ati 7310m
Monitor
samsung E2220
OS
Windows 7; ubuntu 14.04; Kali linux; debian 7
Ho un problema con questo codice c++ , che simula la morra cinese (sasso, carta, forbice) tra un giocatore ed il pc; l'output atteso è quello in bianco(prima immagine), mentre l'output che ottengo è quello in nero (seconda immagine); ho provato a modificare il codice più volte, ma non sono riuscito a risolvere il problema.


Codice:
#include <iostream>
#include<cstdlib>
#include<ctime>

using namespace std;

enum segno {sasso, carta, forbice};

int main()
{
    srand(time(0));
    int contpc=0;
    int contpl=0;
    int gioca;
    while ((contpc!=3)&&(contpl!=3))
    {
        cout << "Inserisci la giocata del primo giocatore (1: sasso, 2: carta, 3: forbice):";
        cin>>gioca;
        switch (gioca)
        {
        case (1):
            cout<<"hai giocato sasso"<<endl;
            break;
        case (2):
            cout<<"hai giocato carta"<<endl;
            break;
        case (3):
            cout<<"hai giocato forbice"<<endl;
            break;
        default:
            while (gioca!=1 && gioca!=2 && gioca !=3)
            {
                cout << "Inserisci la giocata del primo giocatore (1: sasso, 2: carta, 3: forbice):";
                cin>>gioca;
            }
        }

    segno s;
    int m=rand()%3;
    s=static_cast<segno>(m);
    switch (s)
    {
    case sasso:
        cout<<"il PC ha giocato sasso"<<endl;
        break;
    case forbice:
        cout<<"il PC ha giocato forbice"<<endl;
        break;
    case carta:
        cout<<"il pc ha giocato carta"<<endl;
        break;
    }
    if (((gioca==1)&& (s==sasso))||((gioca==2)&&(s==carta))||((gioca==3)&& (s==forbice)))
    {
        cout<<"Pari:"<<endl;
        cout<<contpl<<"-"<<contpc<<endl;
    }
    else if (((gioca==1)&& (s==forbice))||((gioca==2)&&(s==sasso))||((gioca==3)&& (s==carta)))
    {
        contpl++;
        cout<<"Vinci tu:"<<endl;
        cout<<contpl<<"-"<<contpc<<endl;
    }
    else if (((gioca==1)&& (s==carta))||((gioca==2)&&(s==forbice))||((gioca==3)&& (s==sasso)))
    {
        contpc++;
        cout<<"Vince il PC:"<<endl;
        cout<<contpl<<"-"<<contpc<<endl;

    }

    }
    if (contpc<contpl)
        cout<<"Hai vinto la sfida!"<<endl;
    else if (contpl<contpc)
        cout<<"Il PC ha vinto la sfida!"<<endl;
return 0;

}

1)
VNx5feN.png


2)
DFdj1DN.png
 

Dario Salvati

Utente Attivo
1,401
247
CPU
Intel Core i5-3470
Scheda Madre
ASUS P8Z77-V LX
HDD
Western Digital Green 1TB 7200rmp + Crucial M550 128Gb
RAM
Corsair 8Gb(2x4GB) 1600Mhz
GPU
Msi GeForce 770 2Gb
Audio
Integrata mainbord
Monitor
Asus VE247H / 23.6"
PSU
XFX 550W Core Edition
Case
Fractal Design R4
OS
Arch Linux + Gnome
Non vedo dove sia il problema :grat:
 

Svpam

Nuovo Utente
70
2
CPU
intel core i5-2310m
HDD
1TB Western digital 5400rpm
RAM
8gb ddr3
GPU
amd ati 7310m
Monitor
samsung E2220
OS
Windows 7; ubuntu 14.04; Kali linux; debian 7
Non vedo dove sia il problema :grat:

Nel fatto che quando inserisco una giocata errata (!=1,2,3) e successivamente una giocata corretta, non stampa la scelta del giocatore (10/11°riga della seconda immagine) ma stampa solo quella del pc.
 

Dario Salvati

Utente Attivo
1,401
247
CPU
Intel Core i5-3470
Scheda Madre
ASUS P8Z77-V LX
HDD
Western Digital Green 1TB 7200rmp + Crucial M550 128Gb
RAM
Corsair 8Gb(2x4GB) 1600Mhz
GPU
Msi GeForce 770 2Gb
Audio
Integrata mainbord
Monitor
Asus VE247H / 23.6"
PSU
XFX 550W Core Edition
Case
Fractal Design R4
OS
Arch Linux + Gnome

Svpam

Nuovo Utente
70
2
CPU
intel core i5-2310m
HDD
1TB Western digital 5400rpm
RAM
8gb ddr3
GPU
amd ati 7310m
Monitor
samsung E2220
OS
Windows 7; ubuntu 14.04; Kali linux; debian 7
Ah ecco.

Beh, il ciclo non fa ritornare allo switch, quindi è ovvio che non stampa la tua giocata :)

Questo l'avevo capito (più o meno :look:), non capisco se e come è possibile farlo ritornare allo switch del giocatore e stampare la scelta fatta.
 

Dario Salvati

Utente Attivo
1,401
247
CPU
Intel Core i5-3470
Scheda Madre
ASUS P8Z77-V LX
HDD
Western Digital Green 1TB 7200rmp + Crucial M550 128Gb
RAM
Corsair 8Gb(2x4GB) 1600Mhz
GPU
Msi GeForce 770 2Gb
Audio
Integrata mainbord
Monitor
Asus VE247H / 23.6"
PSU
XFX 550W Core Edition
Case
Fractal Design R4
OS
Arch Linux + Gnome
Puoi leggere e controllare gioca prima dello switch, invece di farlo dopo :)
 

Svpam

Nuovo Utente
70
2
CPU
intel core i5-2310m
HDD
1TB Western digital 5400rpm
RAM
8gb ddr3
GPU
amd ati 7310m
Monitor
samsung E2220
OS
Windows 7; ubuntu 14.04; Kali linux; debian 7
intendi una cosa del tipo:

Codice:
int gioca;
while (gioca!=1  && gioca!=2 && gioca !=3)
{
        cout << "Inserisci la giocata del primo giocatore (1: sasso, 2: carta, 3: forbice):";
        cin>>gioca;
}
        switch (gioca)
        {
        case (1):
            cout<<"hai giocato sasso"<<endl;
            break;
        case (2):
            cout<<"hai giocato carta"<<endl;
            break;
        case (3):
            cout<<"hai giocato forbice"<<endl;
            break;
         }
...
....
 

Dario Salvati

Utente Attivo
1,401
247
CPU
Intel Core i5-3470
Scheda Madre
ASUS P8Z77-V LX
HDD
Western Digital Green 1TB 7200rmp + Crucial M550 128Gb
RAM
Corsair 8Gb(2x4GB) 1600Mhz
GPU
Msi GeForce 770 2Gb
Audio
Integrata mainbord
Monitor
Asus VE247H / 23.6"
PSU
XFX 550W Core Edition
Case
Fractal Design R4
OS
Arch Linux + Gnome
Stato
Discussione chiusa ad ulteriori risposte.

Ci sono discussioni simili a riguardo, dai un'occhiata!

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili