【C言語】第10章第1回:数当てゲームの作成
C言語を使って、楽しい数当てゲームを作ってみましょう。本記事では、ゲームの基本構造から完成までの手順を解説します。
0. 記事の概要
この記事を読むメリット
- 基本的なプログラミング構造の理解:ゲームロジックの作成を通じて、プログラミングスキルを向上させます。
- ユーザーインタラクションの実装:ユーザー入力と応答の処理を学べます。
- 実践的な応用力:ゲーム開発の基本を学び、他のプロジェクトへの応用が可能です。
この記事で学べること
- 乱数の使用方法
- 条件分岐とループの活用
- ユーザー入力の処理
1. 数当てゲームの基本設計
1.1 ゲームの流れ
数当てゲームの基本的な流れは以下の通りです。
- コンピュータが1から100のランダムな数を選びます。
- ユーザーが数を予想して入力します。
- コンピュータが「もっと大きい」または「もっと小さい」とヒントを出します。
- 正解するまで繰り返します。
1.2 必要なプログラム構造
このゲームでは以下の要素を実装します。
- 乱数生成
- ユーザー入力
- 条件分岐とループ
- 終了条件のチェック
2. コード例と詳細解説
2.1 基本コード例
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
int secret, guess, attempts = 0;
srand(time(0)); // 乱数の種を初期化
secret = rand() % 100 + 1; // 1から100のランダムな数
printf("数当てゲームへようこそ!1〜100の間の数を当ててください。\n");
do {
printf("あなたの予想を入力してください: ");
scanf("%d", &guess);
attempts++;
if (guess < secret) {
printf("もっと大きいです。\n");
} else if (guess > secret) {
printf("もっと小さいです。\n");
} else {
printf("正解です!%dが正しい数字でした。\n", secret);
printf("試行回数: %d\n", attempts);
}
} while (guess != secret);
return 0;
}
動作解説
- 乱数の生成:`srand`と`rand`を使用して1〜100の範囲でランダムな数を生成します。
- ユーザー入力の取得:`scanf`でプレイヤーの予想を入力します。
- 条件分岐によるヒント提供:入力値が秘密の数より小さいか大きいかでヒントを表示します。
- ゲームの終了:正解するとループを終了し、結果を表示します。
3. 練習問題
以下の課題に挑戦して、数当てゲームを拡張してみましょう。
- 試行回数に制限を追加してください(例:10回以内に当てる)。
- ゲーム終了後に、再度プレイするかどうかを尋ねる機能を追加してください。
- 難易度を選択できるようにし、それに応じて数値の範囲を変更してください。
4. 練習問題の解答と解説
問1の解答例
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
int secret, guess, attempts = 0, max_attempts = 10;
srand(time(0));
secret = rand() % 100 + 1;
printf("数当てゲーム(試行回数制限あり)へようこそ!\n");
printf("1〜100の間の数を当ててください。\n");
do {
printf("あなたの予想を入力してください: ");
scanf("%d", &guess);
attempts++;
if (guess < secret) {
printf("もっと大きいです。\n");
} else if (guess > secret) {
printf("もっと小さいです。\n");
} else {
printf("正解です!%dが正しい数字でした。\n", secret);
printf("試行回数: %d\n", attempts);
break;
}
if (attempts >= max_attempts) {
printf("ゲームオーバー!正しい数字は%dでした。\n", secret);
break;
}
} while (1);
return 0;
}
このプログラムでは、試行回数を10回に制限し、それを超えた場合にゲームオーバーを表示します。
5. まとめ
本記事では、数当てゲームの作成手順を解説しました。プログラムを拡張して、さらに面白いゲームに進化させてみましょう。