1

这个应用程序的目的是模拟大量的掷骰子游戏。我有另一个版本,它玩一个游戏,要求用户输入和输出信息。此版本的目的是仅显示 10,000 场比赛后的结果。结果是房子赢了多少场比赛,玩家赢了多少场比赛以及每场比赛的平均掷骰数。我还没有实现滚动,因为我想让游戏首先正确增加。

当我执行这是一堵数字墙时会发生什么(这是由于 cout << playerwintotal;)并且是故意的,但是数字重复了 3-4 次,直到循环执行了 10,000 次。

IE。1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 5 5 5 等

最终结果通常是这样的:

10,000 局掷骰子后:
玩家赢了 2502 局。
房子赢了 3625 场比赛。

我不确定如何解决这个问题,据我所知,一切都应该是这样,尽管这只是我使用 C++ 的第四天。

#include <iostream>
#include <string>
#include "randgen.h"

using namespace std;

const int MAX_PLAYS = 10000;

int main() {

    int roll;
    RandGen rg;
    int die1 = rg(6) + 1;
    int die2 = rg(6) + 1;
    int point;
    int total = die1 + die2;
    bool playerwin;
    bool housewin;
    int playerwintotal = 0;
    int housewintotal = 0;

    for (int i = 0; i < MAX_PLAYS; ++i) {
        roll = 1;

        if (roll == 1 && (total == 7 || total == 11)) {
            playerwin = true;
            ++playerwintotal;
        }
        if (roll == 1 && (total == 2 || total == 3 || total == 12)) {
            housewin = true;
            ++housewintotal;
        }
        if (roll == 1 && (total != 2 || total != 3 || total != 12)) {
            point = total;
            playerwin = false;
            housewin = false;
        }

        die1 = rg(6) + 1;
        die2 = rg(6) + 1;
        total = die1 + die2;
        ++roll;
        if (total == point) {
            playerwin = true;
            ++playerwintotal;
        }
        if (total == 7) {
            housewin = true;
            ++housewintotal;
        }

        cout << playerwintotal;

    }
    cout << "After " << MAX_PLAYS << " games of craps:\n" << "Player won "
            << playerwintotal << " times\n" << "The house won " << housewintotal
            << " times\n";

    return 0;
}
4

3 回答 3

5
total != 2 || total != 3 || total != 12

总是正确的。你可能是说

total != 2 && total != 3 && total != 12
于 2013-08-09T16:40:03.913 回答
4

数字是重复的,因为当房子赢或没有人赢时,数字playerwintotal是不变的,因此会重复。也许你打算这样做:

cout << "Turn: " << i+1 << " Player wins: " << playerwintotal << ' ';

此外,正如塞巴斯蒂安在他的回答中指出的那样,或者不是一个好主意,所以一定要给他一个赞成票。

于 2013-08-09T16:38:19.053 回答
1

但是数字重复了3-4次

他们应该是 - 你不打印当前游戏的数量,而是你的玩家赢得的次数(他每次都没有)。

于 2013-08-09T16:38:55.807 回答