2012-09-17 3 views
0

J'ai un jeu de désvérifier pour voir qui gagne dans un jeu de dés

int userGame() 
{ 
    cout << " User turn --- Press 2 to roll" << endl; 
    cin >> userInput; 

    if (userInput == 2) 
    { 
     Dice(); 
     cout << "The user rolled  Dice 1 =" << die1 << " and Dice 2 = " << die2 << endl; 
     cout << "Total = " << die1 + die2 << endl; 
    } 

    else { 
     cout << "Wrong input. Try again"; 
     //userGame(); 
    } 


    return (die1 + die2); 
} 

et maintenant int main, je -

int main() 
{ 
    // set the seed 
    srand(time(0)); 
    userGame(); 

     while (true) 
     { 


      if (userGame() == 7 || userGame() == 11) 
      { 
       cout << "You won" << endl; 
       break; 
      } 

      else if (userGame() == 2) 
      { 
       cout << "You loose" <<endl; 
       break; 
      } 

      else 

      { 
       break; 

      } 


     } 




     return 0; 

Dice();

#include<iostream> 
#include<ctime>  // for the time() function 
#include<cstdlib> // for the srand() and rand() functions 
using namespace std; 
int compInput; 
int userInput; 
int die1 = 0; 
int die2 = 0; 
int Dice() 
{ 

    // roll the first die 
    die1 = (rand() % 6) + 1; 
    // roll the second die 
    die2 = (rand() % 6) + 1; 


} 

Mais la sortie pour une raison quelconque ne s'affiche pas correctement. Une fois que cela montrera que l'utilisateur a gagné quand la sortie est 7 et l'autre fois, il continuerait simplement avec le jeu.

Que fais-je avec la boucle dans main()?

Merci

+0

au lieu de rompre; utilisez return false dans les deux premiers cas. –

Répondre

2
if (userGame() == 7 || userGame() == 11) 

Cette ligne est votre problème. C++ utilise l'évaluation de court-circuit. Dans ce cas, si userGame() == 7 réussit, il ne vérifie pas la seconde moitié. Cependant, s'il échoue userGame() sera appelé à nouveau pour la seconde moitié, ce qui signifie que vous jouerez deux fois avant d'aller dans la section de code pour le si.

while (true) 
    { 
     int result = userGame(); 
     if (result == 7 || result == 11) 
     { 
      cout << "You won" << endl; 
      break; 
     } 
     else if (result == 2) 
     { 
      cout << "You loose" <<endl; 
      break; 
     } 
     else 
     { 
      break; 
     } 
    } 
+0

il agit encore bizarrement ... – user15169

+0

Il a montré 7 et au lieu de montrer "vous avez gagné" il a demandé de jouer encore, ... – user15169

+0

Vous avez également ce userGame supplémentaire(); appel avant la boucle while ... – Borgleader

Questions connexes