私は C プログラミング コースの学習タスクを行っています。次のことを依頼されました。
タスク 2. クラップス。
クラップスのゲームでは、「パス ライン」ベットは次のように進行します。2 つの 6 面サイコロを使用して、クラップス ラウンドで最初にサイコロを振ることを「カムアウト ロール」と呼びます。カムアウト ロールが 7 または 11 の場合、ベットはすぐに勝ち、カムアウト ロールが 2、3、または 12 の場合は負けです。カムアウト ロールで 4、5、6、8、9、または 10 がロールされた場合、その数が「ポイント」になります。プレーヤーは、7 またはポイントが出るまでサイコロを転がし続けます。ポイントが最初にロールされた場合、プレーヤーは賭けに勝ちます。プレーヤーが最初に 7 をロールした場合、プレーヤーは負けます。
上記のルールを使用してクラップスのゲームをプレイするプログラムを作成し、人間の入力なしでゲームをシミュレートします。賭け金を要求する代わりに、プログラムはプレーヤーが勝つか負けるかを計算する必要があります。2 つのサイコロを振ることをシミュレートし、合計を返す関数を作成します。プログラムが 10,000 ゲームをプレイするようにループを追加します。
プレイヤーが勝った回数と負けた回数をカウントするカウンターを追加します。10,000 ゲームの最後に、勝つ確率、つまり Wins / (Wins + Losses) を計算し、この値を出力します。長期的に見て、クラップスのゲームで最も多く勝つのはあなたですか、それともハウスですか?
これまでに書いたものは次のとおりです。
# include <stdio.h>
# include <stdlib.h>
# include <time.h>
// Craps Program
// Written by Kane Charles
// Lab 2 - Task 2
// 7 or 11 indicates instant win
// 2, 3 or 12 indicates instant los
// 4, 5, 6, 8, 9, 10 on first roll becomes "the point"
// keep rolling dice until either 7 or "the point is rolled"
// if "the point" is rolled the player wins
// if 7 is rolled then the player loses
int wins = 0, losses = 0;
int r, i;
int N = 1, M = 12;
int randomgenerator();
main(void){
/* initialize random seed: */
srand (time(NULL));
/* generate random number 10,000 times: */
for(i=0; i < 10000 ; i++){
int r = randomgenerator();
if (r == 7 || r == 11) {
wins++;
}
else if (r == 2 || r == 3 || r == 12) {
losses++;
}
else if (r == 4 || r == 5 || r == 6 || r == 8 || r == 9 || r == 10) {
int point = r;
int temproll;
int *tr = &temproll;
do
{
*tr = randomgenerator();
}while (temproll != 7 || temproll != point);
if (temproll == 7) {
losses++;
}
else if (temproll == point) {
wins++;
}
}
}
printf("Wins\n");
printf("%d",&wins);
printf("\nLosses\n");
printf("%d",&losses);
}
int randomgenerator(){
r = M + rand() / (RAND_MAX / (N - M + 1) + 1);
return r;
}
プログラムは常に次で終了します。
Wins:
0.000000
Losses:
0.000000
一方、プログラムが勝った回数と負けた回数を (10000 のうち) 表示することになっています。これで私を助けてくれる人はいますか?スコアがグローバルに保持されるように、 wins++
andの代わりにポインターを使用する必要があるのではないかと思います。losses++
私はこれに慣れていないので、どんな助けでも大歓迎です。