2005年度の授業は終りました。 この授業のページは参照用の資料として保存しているものです。最新の情報・資料は 江上の授業ページで。 |
サンプル・プログラム "guess.c" (連想ゲーム)を使用してCの復習 |
ソースプログラム
(強調表示の部分はソフトウェア実習Iの学習範囲を超えているが、理解するのは難しくない。授業で説明を加える ことにするが、ゲームに必要な乱数を発生させるための部分である。)
filename: guess.c /************************************
* guess -- a simple guessing game *
* for C language course *
************************************/#include <stdio.h>
#include <stdlib.h>
#include <time.h>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 の中でプログラミング1では出てこなかったもの
#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)
- キーボードから数を入力
- 当たり判定