Visualizzazione dei risultati da 1 a 6 su 6

Discussione: [C++] Morra cinese

  1. #1

    [C++]morra cinese

    TESTO:
    Si scriva un programma per giocare alla morra cinese.Due giocatori lanciano simultaneamente un simbolo che puo essere:"rete,forbice,sasso".Il giocatore immette la sua scelta da tastiera scrivendo una parola che inizia per R,F o S.Ogni altra parola determina l'uscita dal gioco.Si usi il tipo"ENUM" sia per rappresentare le scelte dei giocatori che i risultati della giocata.

    ho provato a farlo csi ma credo che c siano abbastanza errori sapete aiutarmi?

    codice:
    #include<iostream>
    using namespace std;
    
    int main()
    {
       do
       {
          enum tipo{s,r,f}giocata;
          enum vittoria{computer,giocatore,pareggio)resoconto;
          char scelta;
          int n,v;
          giocata=(tipo)scelta;
          resoconto=(vittoria)v;
          giocata=(tipo)n;
          cout<<"scegli: ";
          cin>>scelta;
          n=rand();
          cout<<"il computer ha tirato: "<<n<<endl;
          switch(scelta)
          {
             case('s' && n=='f'):v=1;break;
             case('s' && n=='r'):v=0;break;
             case('f' && n=='r'):v=1;break;
             case('f' && n=='s'):v=0;break;
             case('r' && n=='s'):v=1;break;
             case('r' && n=='f'):v=0;break;
             case(('s'&& n=='s')||('r'&& n=='r')||('f'&& n=='f')):v=2;break;
             default:cout<<"fine gioco"<<endl;
          }
          switch(v)
          {
             case 0:cout<<"hai vinto"<<endl;
             case 1:cout<<"ha vinto il computer"<<endl;
             case 2:cout<<"pareggio"<<endl;
             default:break;
          }
          while(scelta=='s' || scelta=='f' || scelta=='r');
          system("pause");
          return 0;
    }

  2. #2
    sapete aiutarmi?

  3. #3
    Utente di HTML.it L'avatar di netarrow
    Registrato dal
    Apr 2004
    Messaggi
    1,425
    al posto dello switch

    codice:
    switch(scelta)
          {
             case('s' && n=='f'):v=1;break;
             case('s' && n=='r'):v=0;break;
             case('f' && n=='r'):v=1;break;
             case('f' && n=='s'):v=0;break;
             case('r' && n=='s'):v=1;break;
             case('r' && n=='f'):v=0;break;
             case(('s'&& n=='s')||('r'&& n=='r')||('f'&& n=='f')):v=2;break;
          [...]
    usa un if-else-if

    Imparare è un'esperienza, tutto il resto è solo informazione. (Albert Einstein)

  4. #4
    grazie..!!
    cmq sn riuscito a rifarlo in questo modo..:

    codice:
    #include<iostream>
    using namespace std;
    
    int main()
    {
        enum tipo{sasso,rete,forbici}giocata;
        enum vittoria{computer,giocatore,pareggio}resoconto;
        string scelta;
        int mia,tua,q,v;
        
        do
        {
            giocata=(tipo)mia;
            giocata=(tipo)tua;
            v=(vittoria)resoconto;
            v=giocatore;        
            cout<<"scegli: ";
            cin>>scelta;
            q=rand();
            switch(scelta[0])
            {
                    case 's':case'S':mia=sasso;break;
                    case 'r':case'R':mia=rete;break;
                    case 'f':case'F':mia=forbici;break;
                    default:cout<<"ok!alla prossima,ciao!"<<endl;
            }
            switch(q%3)
            {
                    case 0:tua=sasso;cout<<"io ho tirato sasso"<<endl;break;
                    case 1:tua=rete;cout<<"io ho tirato rete"<<endl;break;
                    case 2:tua=forbici;cout<<"io ho tirato forbici"<<endl;
            }
            if(mia==tua)
                    v=pareggio;
            if(mia==rete && tua==forbici || mia==forbici && tua==sasso || mia==sasso && tua==rete)
                    v=computer;
            switch(v)
            {
                    case giocatore:cout<<"hai vinto"<<endl;break;
                    case computer:cout<<"ho vinto"<<endl;break;
                    case pareggio:cout<<"pareggio"<<endl;
            }
        }
        while(scelta[0]=='s'||scelta[0]=='r'||scelta[0]=='f');
    }
    ke dici c sn parekki errori nella versione precedente?
    +ke altro xke era un esame e devo fare l'autocorrezione..

  5. #5
    dicevi csi tu?




    codice:
    #include<iostream>
    using namespace std;
    
    enum tipo{s,r,f}giocata;
    enum  vittoria{computer,giocatore,pareggio}resoconto;
    char scelta;
    int n,v,q;
    int main()
    {
       do
       {
          giocata=(tipo)scelta;
          resoconto=(vittoria)v;
          giocata=(tipo)n;
          cout<<"scegli: ";
          cin>>scelta;
          q=rand();
          switch(q%3)
          {
                case 0:n='s';cout<<"computer=sasso"<<endl;break;
                case 1:n='r';cout<<"computer=rete"<<endl;break;
                case 2:n='f';cout<<"computer=forbice"<<endl;
          }
             if( (scelta=='s' && n=='f')||(scelta=='f' && n=='r')||(scelta=='r' && n=='s') )
                      v=0;
             else if((scelta=='s' && n=='r')||(scelta=='f' && n=='s')||(scelta=='r' && n=='f') )
                      v=1;
             else if((scelta=='s'&& n=='s')||(scelta=='r'&& n=='r')||(scelta=='f'&& n=='f'))
                      v=2;
             else cout<<"fine gioco"<<endl;
    
          switch(v)
          {
             case 0:cout<<"hai vinto"<<endl;break;
             case 1:cout<<"ha vinto il computer"<<endl;break;
             case 2:cout<<"pareggio"<<endl;break;
             default:break;
          }
       }
       while(scelta=='s' || scelta=='f' || scelta=='r');
          system("pause");
          return 0;
    }

  6. #6
    Utente di HTML.it L'avatar di netarrow
    Registrato dal
    Apr 2004
    Messaggi
    1,425
    si intendevo così.
    Lo switch non supporta operatori booleani devi fare semplice o sennò li crei annidati.


    Imparare è un'esperienza, tutto il resto è solo informazione. (Albert Einstein)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.