ゲームを作ろう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の目的は「正しいブラックジャック」を作ることではありません。
上記のプログラムをヒントに、自分自身で何か作ってみることを考えてみてください。