Punto informatico Network
Login Esegui login | Non sei registrato? Iscriviti ora (è gratuito!)
Username: Password:
  • Annuncio Pubblicitario

Aiuto codice C++ per Morra cinese

Il forum per tutti i developer. Leggere attentamente il regolamento di sezione prima di postare.

Aiuto codice C++ per Morra cinese

Messaggioda R3wu0 » lun apr 13, 2009 1:32 pm

DUnque l'altro giorno ho provato a creare tramite c++ un'eseguibile per poter giocare a morra cinese contro il mio pc ma ho avuto un po' di poblemi in quanto ho impostato il tutto in modo da fare 13 manches e con un paio di contatori faccio in modo che alla fine chi vince più manches vinca la partita, sembrava tutto a posto ma il programma si chiude da solo alla 12 manches, non so più che fare...sono fermo da una settimana...e non mi è venuta in mente nessuna soluzione...se molto gentilmente potete darmi una mano... [grazie]
Vi posto qui sotto il codice...

Codice: Seleziona tutto
/*
* morra.cpp
* morra
*
*
*/


#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

int main()
{
int youW=0;
int pcW=0;
unsigned you, pc; // variabili intere contenenti le opzioni scelte
you = 0;
unsigned seed= time(NULL);
srand(seed);
// presentazione del gioco e spiegazione delle regole
cout << "Salve, benvenuto nel gioco di Morra cinese anche detto Sasso, Carta, Forbice...\n\n";
cout << "Per giocare scegli un numero ricordando che: \n \t 1 = carta, \n\t 2 = forbice, \n\t 3= sasso \n";
cout << "Dopo che avrai scelto la tua carta toccherà a me giocare.\n Infine vedremo chi vince secondo le seguenti regole: \n\t Carta batte sasso \n\t Sasso batte forbice \n\t Forbice batte Carta\n\n Avanti giochiamo...\n";
cout << "Questo per tredici volte, alla fine chi avrà vinto più manches sarà il vincitore.\n";
for(int i=1; i<13; i++){ // gioca 13 volte a morra
while((you>3)||(you <=0)){
cout << "Scegli la tua carta... ";
cin >> you; // il giocatore sceglie la sua carta
}
if(you == 1) cout << "Hai scelto di buttare carta carta\n\n";
else if(you == 2) cout << "Hai scelto di buttare forbice\n\n";
else if(you == 3) cout << "Hai scelto di buttare sasso\n\n";
pc=rand()%3+1; // pc gioca la sua, genera un numero fra 1 e 3
cout << "Ora gioco io...\n\n" << "Io butto ";
if (pc==1) cout << "Carta\n";
if (pc==2) cout << "Forbice\n";
if (pc==3) cout << "Sasso\n";
if((you==1)&&(pc==1)){ cout << "Pareggio\n";
pcW=pcW+1;
youW=youW+1;
}
else if ((you==1)&&(pc==2)){ cout << "Ho vinto io! Forbice batte Carta\n";
pcW=pcW+1;
}
else if ((you==1)&&(pc==3)){ cout << "Hai vinto tu!! Carta batte Sasso\n";
youW=youW+1;
}
else if ((you==2)&&(pc==1)){ cout << "Ho vinto io! Forbice batte Carta\n";
pcW=pcW+1;
}
else if ((you==2)&&(pc==2)){ cout << "Pareggio\n";
pcW=pcW+1;
youW=youW+1;
}
else if ((you==2)&&(pc==3)){ cout << "Ho vinto io! Forbice batte Sasso\n";
pcW=pcW+1;
}
else if ((you==3)&&(pc==1)){ cout << "Ho vinto io! Carta Batte Sasso\n";
pcW=pcW+1;
}
else if ((you==3)&&(pc==2)){ cout << "Hai vinto tu!! Sasso batte Forbice\n";
youW=youW+1;
}
else if ((you==3)&&(pc==3)){ cout << "Pareggio \n";
pcW=pcW+1;
youW=youW+1;
}
you=0;
}
if (pcW>youW) cout << "Ho vinto io per " << pcW << " manches a " << youW << " manches.";
if (youW>pcW) cout << "Hai vinto tu per " << youW << " manches a " << pcW << " manches.";
if (pcW==youW) cout << "Abbiamo finito in pareggio, tutti e due con " << youW << "manches vinte.";
return 0;
}
Avatar utente
R3wu0
Senior Member
Senior Member
 
Messaggi: 278
Iscritto il: sab gen 31, 2009 9:38 pm
Località: Mogliano Veneto

Re: Aiuto codice C++ per Morra cinese

Messaggioda eDog » lun apr 13, 2009 3:25 pm

Ciao,

credo tu abbia commesso un errore nell'algoritmo..

Il seguente ciclo:
Codice: Seleziona tutto
for(int i=1; i<13; i++){

viene ripetuto esattamente 12 volte e non 13..

Per eseguirlo tredici volte, le soluzioni sono 2..
Codice: Seleziona tutto
for(int i=0; i<13; i++){ //O parti da I = 0

Codice: Seleziona tutto
for(int i=1; i<=13; i++){ //Oppure la condizione deve ammettere che I possa essere uguale a 13


Ciao.
eDog,
"È meglio essere temuti o rispettati? Io dico: è troppo chiedere entrambe le cose?" - Tony Stark
Avatar utente
eDog
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 3679
Iscritto il: sab dic 30, 2006 7:58 pm
Località: Vescovana (Padova)


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 4 ospiti

Powered by phpBB © 2002, 2005, 2007, 2008 phpBB Group
Traduzione Italiana phpBB.it

megalab.it: testata telematica quotidiana registrata al Tribunale di Cosenza n. 22/09 del 13.08.2009, editore Master New Media S.r.l.; © Copyright 2008 Master New Media S.r.l. a socio unico - P.I. 02947530784. GRUPPO EDIZIONI MASTER Spa Tutti i diritti sono riservati. Per la pubblicità: Master Advertising