ゲームを作ろう1の最後は「ブラックジャックもどき」です。
本来の「ブラックジャック」はルールがきっちり決まっていますので、その通りに作れば良いのですが、「A(エース)」の扱い等、難しい部分もありますので、ここでは「もどき」を作ってみたいと思います。
ルール 1〜11の乱数を2回発生させ、合計が 21であれば「ブラックジャック!」と表示 21未満であれば「合計値」を表示 21より大きければ「オーバーです・・・」と表示 する。 |
これで作ってみましょう。
解答例です。
<sample program 026-01>
#include <stdio.h> #include <stdlib.h> #include <time.h> int main(void) { int number; int sum = 0; srand((unsigned int)time(NULL)); printf("1枚目のカードを配ります。\n"); number = rand() % 11 + 1; getchar(); printf("%dです。\n", number); sum = sum + number; getchar(); printf("2枚目のカードを配ります。\n"); number = rand() % 11 + 1; getchar(); printf("%dです。\n", number); sum = sum + number; getchar(); printf("結果は・・・\n"); getchar(); if (sum == 21) { printf("ブラックジャック!\n"); } else { if (sum > 21) { printf("オーバーです・・・\n"); } else { printf("%dです。\n", sum); } } return 0; } |
<実行結果>
1枚目のカードを配ります。 11です。 2枚目のカードを配ります。 10です。 結果は・・・ ブラックジャック! 続行するには何かキーを押してください・・・
「getchar」を使って「自分でカードを引いている感覚」を表現しています。
2枚のカードの合計を求めるために変数「sum(合計)」を使っています。
合計を求める計算は、以前に書きました。
この「ブラックジャックもどき」はA(エース)の扱いが正しくない上に、3枚以上カードを引けません。
また、絵札(11、12、13)の扱いも正しくありません。
現時点では、難しいプログラムになりますので、シンプルに作ってみました。
今後、色々と学習していく中で、正しいブラックジャックに近づけるようになると思いますが、このHPの目的は「正しいブラックジャック」を作ることではありません。
上記のプログラムをヒントに、自分自身で何か作ってみることを考えてみてください。