-1

私は現在、ダイスゲームに取り組んでいます。ここで、ユーザーは最初にサイコロのペアを振ったので、サイコロ1=2とサイコロ2=3としましょう。つまり、合計は5になります。今、彼は勝つために再び5(合計)を獲得する必要があります。次の動きで5を獲得しなかった場合、彼は再びロールし、ゲームは続行されます。しかし、いずれかの時点で、彼が合計2をロールした場合、彼は負けます。

それで、最初のロールの値を保存して次の動きと比較する方法を教えてください。何か試しましたが、うまくいかないようです。

#include<iostream>
#include<ctime>      // for the time() function
#include<cstdlib>    // for the srand() and rand() functions
using namespace std;

// Declare variables
//int compInput;
int userInput;
int die1 = 0;
int die2 = 0;
int dieTotal = 0;
int Dice ()
{
    // roll the first die
    die1 = (rand() % 6 ) + 1;
    // roll the second die
    die2 = (rand() % 6 ) + 1;


}

// iniating a second two pair dice function.
int compDice()

{
    Dice();
    dieTotal = die1 + die2;
    return (dieTotal);
}



// User Rolling the dice and calucalting the total here

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

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

    else {
        cout << "Wrong input.";
        //userGame();
    }
    return (die1 + die2 );
}

int checkForWin ()
{
    while (true)
    {

        int result1 = compDice();
        int result = userGame();

        // int finalResult = dieTotal;
        if (result == result1 )
        {
            cout << "\nUser won. Computer looses....m " << endl;
            break;
        }

        else if (result == 2)
        {
            cout << "\nUser looses. Computer won." <<endl;
            break;
        }

        else
        {
        }
    }
}

// Calling for the checkForWin() function in main and the srand.
int main ()
{
    cout << "This is the Dice game. " << endl;

    // set the seed
    srand(time(0));
    checkForWin(); // Initiating the game.
    return 0;
}
4

1 に答える 1

0

コメントチャット/誤解の後、私は自由にコードをコピーして変更し(コーディングスタイルを維持するために可能な限り少なく、将来のプロジェクトではこのスタイルをお勧めしません)、希望する結果を生成します。それが機能するかどうかを教えてください(簡単なテストで機能することが示されましたが、他の癖を見逃している可能性があります)

#include<iostream>
#include<ctime>      // for the time() function
#include<cstdlib>    // for the srand() and rand() functions
using namespace std;

// Declare variables
//int compInput;
int userInput;
int firstRoll = 1;
int die1 = 0;
int die2 = 0;
int dieTotalToMatch = 0;
void Dice ()
{
    // roll the first die
    die1 = (rand() % 6 ) + 1;
    // roll the second die
    die2 = (rand() % 6 ) + 1;

}

// iniating a second two pair dice function.
void compDice()
{
    Dice();
    dieTotalToMatch = die1 + die2;
}



// User Rolling the dice and calucalting the total here

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

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

    else {
        cout << "Wrong input.";
        //userGame();
    }
    return (die1 + die2 );
}

void checkForWin ()
{

    while (true)
    {

        int result = userGame();
        if (firstRoll)
        {
            dieTotalToMatch = result;
            firstRoll = 0;
            continue;
        }
        // int finalResult = dieTotal;
        if (result == dieTotalToMatch )
        {
            cout << "\nUser won. Computer looses....m " << endl;
            break;
        }

        else if (result == 2)
        {
            cout << "\nUser looses. Computer won." <<endl;
            break;
        }

        else
        {
        }
    }
}

// Calling for the checkForWin() function in main and the srand.
int main ()
{
    cout << "This is the Dice game. " << endl;

    // set the seed
    srand(time(0));
    checkForWin(); // Initiating the game.
    cin.ignore();

    return 0;
}
于 2012-09-17T21:13:00.670 に答える