0

サイコロゲームをしています

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() のループで何をしていますか?

ありがとう

4

1 に答える 1

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

この行はあなたの問題です。C++ は短絡評価を使用します。この場合、userGame() == 7成功すると後半はチェックしません。ただし、失敗した場合userGame()は後半に再度呼び出されます。つまり、if のコード セクションに入る前に 2 回プレイすることになります。

    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;
        }
    }
于 2012-09-17T00:15:06.970 に答える