MENU

【C言語】クイズゲーム作成(1)簡単な三択形式の問題

クイズゲーム作成(1)簡単な三択形式の問題_サムネ

こんにちは、コン(@pippi_kon)です。

この記事では、『C言語でのクイズゲームの作り方』をご紹介します。

テキストベースのシンプルなクイズゲームですが、プログラミングの学習にはもってこいだと思っています。

段階を踏んで、徐々に凝ったものに改変していこうと思います。

まずはクイズプログラムの超基本となる『3択形式の問題の出力、および答えの入力・判定』についてです。

OS:Windows 10(x64)
開発環境:Visual Studio 2019(Community)

目次

今回の目標

今回は初回の記事ということで、まずはクイズゲームのベースとなるシンプルな三択問題の作成を目指します。

以下は今回作成するプログラムの出力結果です。

クイズゲーム01_今回の目標

やっていることは以下の通り。

  1. 問題文および三択内容の表示
  2. 解答の入力
  3. 解答判定

▲目次へ戻る

プログラム全文

今回作成したプログラムのご紹介です。

のちほど、プログラムの解説を行います。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void)
{
	int		ans;

	printf("[第1問]\n");
	printf("リンゴは英語で何と言う?\n");
	printf("1:apple  2:orange  3:banana\n");
	printf(">>> ");
	scanf("%d", &ans);
	if (ans == 1) {
		printf("正解!\n\n");
	}
	else {
		printf("不正解...\n");
		printf("正解は 1:apple です。\n\n");
	}

	printf("[第2問]\n");
	printf("大正->昭和->○○->令和\n○○に入る年号は?\n");
	printf("1:慶応  2:明治  3:平成\n");
	printf(">>> ");
	scanf("%d", &ans);
	if (ans == 3) {
		printf("正解!\n\n");
	}
	else {
		printf("不正解...\n");
		printf("正解は 3:平成 です。\n\n");
	}

	printf("[第3問]\n");
	printf("世界三大珍味はどれ?\n");
	printf("1:イカスミ  2:キャビア  3:チーズ\n");
	printf(">>> ");
	scanf("%d", &ans);
	if (ans == 2) {
		printf("正解!\n\n");
	}
	else {
		printf("不正解...\n");
		printf("正解は 2:キャビア です。\n\n");
	}

	return 0;
}

▲目次へ戻る

スポンサーリンク

プログラムの解説

scanfのエラー回避

#define _CRT_SECURE_NO_WARNINGS

先頭行のこれはscanf関数実行時に出力されるエラーを回避するものです。

この行がなかったらコンパイル時に以下のようなエラーが出力されます。

error C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

おまじないと思っていれておきましょう。

▲目次へ戻る

問題文の表示

	printf("[第1問]\n");
	printf("リンゴは英語で何と言う?\n");
	printf("1:apple  2:orange  3:banana\n");
	printf(">>> ");

シンプルにprintf関数で問題を表示しています。

最後の「>>> 」は特に深い意味はなく、単に解答を促している記号です。

今回は直接問題文を表示していますが、次回以降の記事でもっとスマートになるよう改変していく予定です。

▲目次へ戻る

解答の入力

	scanf("%d", &ans);

scanf関数でキーボードの入力を取得します。

今回は「1」「2」「3」(いずれも半角数字)のいずれかの入力を期待しているので、整数型での入力の受け取りを行っています。

しかし、実際は「4」などの数字や、「c」などの文字も入力できてしまいます。

このあたりは次回以降の記事でケアしていきます。

▲目次へ戻る

解答の判定

	if (ans == 1) {
		printf("正解!\n\n");
	}
	else {
		printf("不正解...\n");
		printf("正解は 1:apple です。\n\n");
	}

if文で解答内容のチェックを行っています。

scanf関数で受け取った値…つまり、キーボード入力された値が正しければ「正解!」と表示します。

間違っていたら「不正解...」と表示した後、正解も表示します。

▲目次へ戻る

スポンサーリンク

次回

▲目次へ戻る

created by Rinker
¥2,750 (2023/02/04 10:34:35時点 Amazon調べ-詳細)
created by Rinker
¥2,530 (2023/02/04 10:34:36時点 Amazon調べ-詳細)
  • URLをコピーしました!