画像(logo)

HOME/[C言語]サンプルプログラム集 目次/数当てゲーム

広告

[C言語 サンプルプログラム集]
数当てゲーム

広告

↓2016年02月29日発売↓

12歳からはじめる ゼロからのC言語 ゲームプログラミング教室

目次へ戻る

数当てゲーム

今回は数当てゲームをつくります。

画像(cs_11_1)

正解の数字になるまで数字の範囲をせばめながら入力していくというゲームになります。

今回正解の数は最初に入力するカタチをとっておりますが、自分一人でもこのゲームを楽しみたいという方は乱数などで最初の数を発生させてください。

ゲームテクニック集の乱数

乱数の説明になります。

ヘッダファイル

今回必要なヘッダファイルです。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>

<stdio.h>以外を説明します。

<stdlib.h>

乱数を発生させる「srand()」、「rand()」、画面を消去する「system("cls")」などで使います。

#define _CRT_SECURE_NO_WARNINGS

ヘッダファイルとは少し違いますがこちらは「scanf()」命令などを使う時の警告を無視するものになります。

ヘッダファイルの意味についてはわからなそうな用語集のヘッダファイルを見てください。

変数

int ans, ans2, count;
int min = 0;
int max = 100;

大事な役割を持つ変数が

/*正解の数を保存*/
int ans;
/*入力された数を保存*/
int ans2;
/*答えの下限*/
int min = 0;
/*答えの上限*/
int max = 100;

になります。

その他はゲームの回数をカウントする変数などになります。

正解の数を決める

正解の数を決めます。

なにもしないとどのような数でも入力できてしまうのであらかじめ範囲を定めます。

int min = 0;
int max = 100;

while (1){
	printf("正解の数字を入力してください(%d < x < %d) > ",min,max);
	scanf("%d", &ans);
	if (ans > min && ans < max)break;
	else{
		printf("不正な数です。やり直してください。\n");
		continue;
	}
}

まず変数初期化の際、上限と下限をきめます。

int min = 0;
int max = 100;

その範囲内の数が入力されるまで「while()」ループを使って入力を促します。

while (1){
}

「while()」は中の条件を「1」にして無限ループにしてしまいます。

printf("正解の数字を入力してください(%d < x < %d) > ",min,max);
scanf("%d", &ans);

数を入力させます。

そしてここで入力された数を判定、ループ脱出か継続かを条件分岐していきます。

ループ脱出

まずはループ脱出です。

if (ans > min && ans < max)break;

入力された数が上限・下限の範囲内におさまっていれば「break」文でループを抜けます。

ループ継続

次はその「else」文にあたるループ継続処理です。

else{
	printf("不正な数です。やり直してください。\n");
	continue;
}

警告を出して「continue」文でさきほどのループの先頭に処理をもどします。

これで正解の数を決める処理は完了です。

数当て処理

数当ての処理部分になります。

基本的には最初の正解の数を決める処理と似たような処理で数を入力させてその数を判定していくようなカタチになります。

while (1){
	printf("残り%dゲーム\n",10 - count);
	printf("数を当ててください(%d < x < %d) > ", min, max);
	scanf("%d", &ans2);
	if (ans2 > min && ans2 < max)break;
	else{
		printf("不正な数です。やり直してください。\n");
		continue;
	}
}

さきほどと同じように決まった範囲内で数を入力させます。

入力→数字が範囲内におさまっているか判定→おさまっていれば「break」→そうでなければ「continue」

さきほどとほとんど変わらないですね。

最後に正解の数と比較する部分になります。

if (ans == ans2){
	printf("正解\n");
	break;
}
else{
	printf("残念\n");
	if (ans2 < ans){
		min = ans2;
	}
	else{
		max = ans2;
	}
}

まず正解の数と同じかどうか比較

if (ans == ans2){
	printf("正解\n");
	break;
}

そうでなければ

else{
	printf("残念\n");
	if (ans2 < ans){
		min = ans2;
	}
	else{
		max = ans2;
	}
}

大きさを比較して上限、下限の数を入れ替えれば完了です。

完成

あとは数を当てるまでの回数などゲーム全体のカタチを整えれば完成です。

ソースになります。

数当てゲームソース

□ページの先頭へ□

□目次へ戻る□

□HOME□

広告

↓2017年06月16日発売↓

やさしいC 第5版 (「やさしい」シリーズ)

新品価格
¥2,700から
(2017/5/1 13:05時点)

↓2014年08月09日発売↓

新・明解C言語 入門編 (明解シリーズ)

新品価格
¥2,484から
(2017/5/1 13:08時点)

↓2016年02月20日発売↓

新・解きながら学ぶC言語

新品価格
¥2,160から
(2017/5/1 13:10時点)

↓2017年02月11日発売↓

C言語プログラミング基本例題88 88

新品価格
¥3,024から
(2017/5/1 13:12時点)

↓2016年12月15日発売↓

Cの絵本 第2版 C言語が好きになる新しい9つの扉

新品価格
¥1,490から
(2017/5/1 13:13時点)

↓2017年02月08日発売↓

新・明解C言語で学ぶアルゴリズムとデータ構造 (明解シリーズ)

新品価格
¥2,700から
(2017/5/1 13:15時点)