检查骰子游戏中谁赢了

时间:2012-09-17 00:09:25

标签: c++ dice

我有一个骰子游戏

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);
}

现在在int main中,我有 -

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;

骰子();

#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;


}

但由于某种原因,输出没有正确显示。一旦它显示用户在输出为7和其他时间时赢了,它就会继续游戏。

我在main()中使用循环做什么?

由于

1 个答案:

答案 0 :(得分:2)

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

这一行是你的问题。 C ++使用短路评估。在这种情况下,如果userGame() == 7成功,则不会检查后半部分。但是,如果失败,userGame()将在下半场再次被调用,这意味着在进入if的代码部分之前你将玩两次。

    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;
        }
    }