C++ débutant

Résolu/Fermé
sakuraaa Messages postés 18 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 24 février 2011 - 24 févr. 2011 à 22:27
somehow Messages postés 84 Date d'inscription mercredi 19 janvier 2011 Statut Membre Dernière intervention 2 mars 2011 - 24 févr. 2011 à 22:43
Bonjour,

Je dois faire un jeu de roche-papier-ciseaux dans mon cours de c++ et mon programme est vraiment boiteux et je ne comprends pas pourquoi.

Le programme doit absoluement utiliser enum , switch and doit, en plus de faire générer le coup de l'ordi aléatoirement, afficher le coup du joueur et de l'ordi, compiler leurs points et demander à la fin de chaque partie si le joueur veut rejouer.

Est-ce que quelqu'un peut m'aider? S'il vous plait!!!!


#include <iostream> // Pour l'utilisation de cin et cout
#include <cstdlib> // Pour l'utilisation de srand() et rand()
#include <ctime> // Pour l'utilisation de time()
#include <cctype> // Pour l'utilisation de toupper()
using namespace std;

void main (void)
{
enum TypeJeu {ROCK, PAPER, SCISSORS, LIZARD, SPOCK}; // variables de type enumération

TypeJeu CoupJoueur, CoupOrdi;
int PointJoueur, PointOrdi, Reponse, y, n;
char

srand ((unsigned) time(NULL)); // Précise un germe pour le générateur

cout << "You are about to play a more evolved and geeky version of the original Rock-Paper-Scissors game\n";
cout << "Here are the rules\n";
cout << "Scissors cut Paper\n";
cout << "Paper covers Rock\n";
cout << "Rock crushes Lizard\n";
cout << "Lizard poisons Spock\n";
cout << "Spock smashes Scissors\n";
cout << "Scissors decapitate Lizard\n";
cout << "Lizard eats Paper\n";
cout << "Paper disproves Spock\n";
cout << "Spock vaporizes Rock\n";
cout << "Rock crushes Scissors\n";
cout << "Now you know the rules. Let's play!\n";

do
{
cout << "What would you like to play?\n";
cout << "R-ROCK, P-PAPER, S-SCISSORS, L-LIZARD, K-SPOCK\n";
cin >> (toupper(CoupJoueur))

switch (toupper(CoupJoueur))
{
case "R" :
CoupOrdi = TypeJeu (rand() % (SPOCK+1));
switch (CoupOrdi)
{
case "ROCK" : cout << "You chose ROCK/n";
cout << "The computer chose ROCK/n";
cout << "It's a tie!";
PointJoueur += 0;
PointOrdi += 0; break;

case "PAPER" : cout << "You chose ROCK/n";
cout << "The computer chose PAPER/n";
cout << "PAPER covers ROCK. You lose!";
PointJoueur += 0;
PointOrdi += 1; break;

case "SCISSORS" : cout << "You chose ROCK/n";
cout << "The computer chose SCISSORS/n";
cout << "ROCK crushes SCISSORS. You win!";
PointJoueur += 1;
PointOrdi += 0; break;

case "LIZARD" : cout << "You chose ROCK/n";
cout << "The computer chose LIZARD/n";
cout << "ROCK crushes LIZARD. You win!";
PointJoueur += 1;
PointOrdi += 0; break;

case "SPOCK" : cout << "You chose ROCK/n";
cout << "The computer chose SPOCK/n";
cout << "SPOCK vaporizes ROCK. You lose!";
PointJoueur += 0;
PointOrdi += 1; break;
}

case "P" :
CoupOrdi = TypeJeu (rand() % (SPOCK+1));
switch (CoupOrdi)
{
case "ROCK" : cout << "You chose PAPER/n";
cout << "The computer chose ROCK/n";
cout << "PAPER covers ROCK. You win!";
PointJoueur += 1;
PointOrdi += 0; break;

case "PAPER" : cout << "You chose PAPER/n";
cout << "The computer chose PAPER/n";
cout << "It's a tie!";
PointJoueur += 0;
PointOrdi += 0; break;

case "SCISSORS" : cout << "You chose PAPER/n";
cout << "The computer chose SCISSORS/n";
cout << "SCISSORS cut PAPER. You lose!";
PointJoueur += 0;
PointOrdi += 1; break;

case "LIZARD" : cout << "You chose PAPER/n";
cout << "The computer chose LIZARD/n";
cout << "LIZARD eats PAPER. You lose!";
PointJoueur += 0;
PointOrdi += 1; break;

case "SPOCK" : cout << "You chose PAPER/n";
cout << "The computer chose SPOCK/n";
cout << "PAPER disproves SPOCK. You win!";
PointJoueur += 1;
PointOrdi += 0; break;
}

case "S" :
CoupOrdi = TypeJeu (rand() % (SPOCK+1));
switch (CoupOrdi)
{
case "ROCK" : cout << "You chose SCISSORS/n";
cout << "The computer chose ROCK/n";
cout << "ROCK crushes SCISSORS. You lose!";
PointJoueur += 0;
PointOrdi += 1; break;

case "PAPER" : cout << "You chose SCISSORS/n";
cout << "The computer chose PAPER/n";
cout << "SCISSORS cut PAPER. You win!";
PointJoueur += 1;
PointOrdi += 0; break;

case "SCISSORS" : cout << "You chose SCISSORS/n";
cout << "The computer chose SCISSORS/n";
cout << "It's a tie!";
PointJoueur += 0;
PointOrdi += 0; break;

case "LIZARD" : cout << "You chose SCISSORS/n";
cout << "The computer chose LIZARD/n";
cout << "SCISSORS decapitate LIZARD. You win!";
PointJoueur += 1;
PointOrdi += 0; break;

case "SPOCK" : cout << "You chose SCISSORS/n";
cout << "The computer chose SPOCK/n";
cout << "SPOCK smashes SCISSORS. You lose!";
PointJoueur += 0;
PointOrdi += 1; break;
}

case "L" :
CoupOrdi = TypeJeu (rand() % (SPOCK+1));
switch (CoupOrdi)
{
case "ROCK" : cout << "You chose LIZARD/n";
cout << "The computer chose ROCK/n";
cout << "ROCK crushes LIZARD. You lose!";
PointJoueur += 0;
PointOrdi += 1; break;

case "PAPER" : cout << "You chose LIZARD/n";
cout << "The computer chose PAPER/n";
cout << "LIZARD eats PAPER. You win!";
PointJoueur += 1;
PointOrdi += 0; break;

case "SCISSORS" : cout << "You chose LIZARD/n";
cout << "The computer chose SCISSORS/n";
cout << "SCISSORS decapitate LIZARD. You lose!";
PointJoueur += 0;
PointOrdi += 1; break;

case "LIZARD" : cout << "You chose LIZARD/n";
cout << "The computer chose LIZARD/n";
cout << "It's a tie!";
PointJoueur += 0;
PointOrdi += 0; break;

case "SPOCK" : cout << "You chose LIZARD/n";
cout << "The computer chose SPOCK/n";
cout << "LIZARD poisons SPOCK. You win!";
PointJoueur += 1;
PointOrdi += 0; break;
}
case "K" : CoupOrdi = TypeJeu (rand() % (SPOCK+1));
switch (CoupOrdi)
{
case "ROCK" : cout << "You chose SPOCK/n";
cout << "The computer chose ROCK/n";
cout << "SPOCK vaporizes ROCK. You win!";
PointJoueur += 1;
PointOrdi += 0; break;

case "PAPER" : cout << "You chose SPOCK/n";
cout << "The computer chose PAPER/n";
cout << "PAPER disproves SPOCK. You lose!";
PointJoueur += 0;
PointOrdi += 1; break;

case "SCISSORS" : cout << "You chose SPOCK/n";
cout << "The computer chose SCISSORS/n";
cout << "SPOCK smashesSCISSORS. You win!";
PointJoueur += 1;
PointOrdi += 0; break;

case "LIZARD" : cout << "You chose SPOCK/n";
cout << "The computer chose LIZARD/n";
cout << "LIZARD poisons SPOCK. You lose!";
PointJoueur += 0;
PointOrdi += 1; break;

case "SPOCK" : cout << "You chose SPOCK/n";
cout << "The computer chose SPOCK/n";
cout << "It's a tie!";
PointJoueur += 0;
PointOrdi += 0; break;
}
cout << "Would you like to play again? (y/n)/n";
cin >> Reponse

}

while ( toupper(Reponse) == y);

cout << "Your total:" PointJoueur"/n";
cout << "Computer's total: PointOrdi"/n";
if (PointJoueur < PointOrdi)
{
cout << "You lost!/n";
}
else if (PointJoueur > PointOrdi)
{
cout << "You won!/n";
}
else
{
cout << "It's a tie!/n";
}

System ("PAUSE");
}





1 réponse

somehow Messages postés 84 Date d'inscription mercredi 19 janvier 2011 Statut Membre Dernière intervention 2 mars 2011 11
24 févr. 2011 à 22:43
Déjà, ton while est mauvais


while ( toupper(Reponse) == y);

si "toupper" (et j'ai un gros doute sur la fonction toupper.. Tu l'as testée ? Elle est de toi ?) met une chaine de caractère ou un caractère en majuscule.. Alors jamais "Reponse" ne sera égal à y. D'ailleurs, en l'absence de ' ' autour de y, y est considéré comme une variable. Normal que ça ne marche pas. Je ne suis même pas sûr que le programme compilerait.

de souvenir, rand() renvoie une valeur entre 0 et 1. Tu ne peux pas utiliser de modulo (%) avec ça. Rajoute une ligne de texte pour tester la valeur de la variable coupOrdi, tu risques d'avoir des surprises.
0