1

このアプリケーションの目的は、多数のクラップス ゲームをシミュレートすることです。1 つのゲームをプレイし、ユーザーの入力を求めて情報を出力する別のバージョンがあります。このバージョンの目的は、10,000 ゲーム後の結果のみを表示することです。結果は、ハウスが勝ったゲーム数、プレイヤーが勝ったゲーム数、およびゲームごとのロールの平均数です。最初に勝ったゲームを適切にインクリメントしたかったので、まだロールに実装していません。

これを実行するとどうなるかは数字の壁 (これは cout << playerwintotal; によるものです) であり、意図的なものですが、ループが 10,000 回実行されるまで、数字は 3 ~ 4 回複製されます。

すなわち。1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 5 5 5など

最終結果は通常、次のようになります。

10,000 ゲームのクラップスの後:
プレイヤーは 2502 ゲームに勝ちました。
家は3625試合に勝ちました。

これを修正する方法はよくわかりませんが、すべてが本来あるべき状態であると言える限り、これは C++ の 4 日目に過ぎません。

#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 に答える