【发布时间】:2013-08-10 00:45:14
【问题描述】:
这个应用程序的目的是模拟大量的掷骰子游戏。我有另一个版本,它玩一个游戏,要求用户输入和输出信息。此版本的目的是仅显示 10,000 场比赛后的结果。结果是房子赢了多少场比赛,玩家赢了多少场比赛以及每场比赛的平均掷骰数。我还没有实现滚动,因为我想首先让赢得的游戏正确递增。
当我执行这是一堵数字墙时会发生什么(这是由于 cout
即。 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;
}
【问题讨论】:
-
如果你修正了缩进,这段代码会更容易阅读。
-
另外,您可能希望通过使用单个
if (roll == 1)语句和使用else关键字来简化您的 if 逻辑。
标签: c++