ソースプログラム
filename: guess.c /************************************
* guess -- a simple guessing game *
* for C language course *
************************************/#include <stdio.h>
#include <stdlib.h>
#include <time.h>int main( )
{
int number_to_guess;
int low_limit, high_limit;
int guess_count;
int player_number;srand( time(0) );
while (1) {
number_to_guess = rand() % 100 + 1;
low_limit = 1;
high_limit = 100;
guess_count = 0;while (1) {
printf("数の範囲は %d から %d まで\n", low_limit, high_limit);
printf("値はいくら? [%d 回目] ", guess_count);guess_count++;
scanf("%d", &player_number);
if (player_number == number_to_guess)
break;if (player_number < number_to_guess)
low_limit = player_number + 1;
else
high_limit = player_number - 1;
}
printf("ビンゴ !\n");
}
}
プログラムの説明
連想ゲーム
コンピュータにランダムな数を選ばせ、プレーヤーがその数を当てる
コンピュータはヒントを表示する実習と復習チェックポイント
- C 言語の main( ) 等の文法・構文について
- scanf( ) での &の扱い
- %、 ++ : 余り・インクリメント等の演算子
- = = と = の違い
- 流れの制御 while 文, if 文
guess.c の中でC言語プログラミングでは出てこなかったもの(これは乱数に関する処理で学習した)
#include <time.h>
srand( )
time( )
rand( )使用変数 number_to_guess :コンピュータが選んだ数
low_limit :ヒントの下限
high_limit :ヒントの上限
guess_count :ユーザのトライカウント
player_number :ユーザが入力した数
個別ポイント
while (1) { }number_to_guess = rand() % 100 + 1;
- ここで 1 を指定する理由は?無限ループとは?
真( true )と偽( false )について
if (a = 0) では何がいけないのか?printf("Bounds %d - %d\n", low_limit, high_limit);
- 1から100までの乱数を選ぶ
printf("Value [%d] ? ", guess_count);
- 数の上限・下限のヒントを表示
scanf("%d", &player_number);
- プレイヤーのトライ数
if (player_number == number_to_guess)
- キーボードから数を入力
- 当たり判定