丁半博打ゲーム
丁半博打ゲーム:さいころを2つ使用して、それぞれの上面に現れる目の合計が偶数か奇数かを当てるゲーム
<ルール>
・最初の手持ち金額は50,000
・手持ちの金額が100,000以上になればプレイヤーの勝ち
・手持ちの金額が0以下になればプレイヤーの負け
・掛け金は10,000を上限とし、手持ちの金額以下とする
・掛け金を0にするとゲームを終了する
(河野英昭他 『基礎C言語プログラミング』のルールを使用)
# include <stdio.h> # include <stdlib.h> # include <time.h> # define f_money 50000 int main(void) { int money = f_money; int d_money, bet, n; int d1, d2, dice; //乱数の種をまく関数(同じ環境でrand関数を実行すると毎回同じ数が出現するため) //種を変えることで実行するたびに異なる乱数を呼び出す //time(NULL)は現在の時刻(1970年1月1日からの経過秒数)を表す srand(time(NULL)); d_money = 2 * f_money; while((money > 0) && (money < d_money)) { do { printf("手持ち金額は%dです。\n", money); printf("掛け金を入力してください(10000以下)。 > "); scanf("%d", &bet); if(bet > 10000) { printf("10000以下の数字を入力してください。\n"); } if((money < 10000) && (money < bet)) { printf("%d以下の数字を入力してください。\n", money); } } while((bet > 10000) || (money < bet) || (bet < 0)); if(bet == 0) { printf("ゲームを終了します。\n"); break; } do { printf("丁(偶数)なら1、半(奇数)なら2を入力してください。 > "); scanf("%d", &n); } while((n < 1) || (n > 2)); d1 = rand()%6 + 1; d2 = rand()%6 + 1; dice = (d1 + d2)%2 + 1; printf("いざ、勝負!\n"); if(dice == 1) { printf("%d, %d の丁\n", d1, d2); } else { printf("%d, %d の半\n", d1, d2); } if((dice) == n) { printf("正解です。\n"); money = money + bet; } else { printf("はずれです。\n"); money = money - bet; } printf("\n"); } if(money <= 0) { printf("あなたの負けです。\n"); } if(money >= d_money) { printf("あなたの勝ちです。\n"); } return 0; }
実行結果
手持ち金額は50000です。
掛け金を入力してください(10000以下)。 > 10000
丁(偶数)なら1、半(奇数)なら2を入力してください。 > 1
いざ、勝負!
5, 5の丁
正解です。
・
・
手持ち金額は90000です。
掛け金を入力してください(10000以下)。 > 10000
丁(偶数)なら1、半(奇数)なら2を入力してください。 > 2
いざ、勝負!
2, 5の半
正解です。
あなたの勝ちです。