C言語ケーススタディ 数当てゲーム1(ハイ・ローゲーム)




2014年10月より個人の方を対象に、Study C無料提供を開始しました。
C言語を勉強中の方は、学習・教育に最適なC言語インタープリタのStudy Cを使ってみてください(個人の方は無料です)。
大学・高専・高校などの教育機関での採用実績も多数あるロングセラー商品Study Cが、個人向けに無料提供を始めました。
インタープリタの手軽さに加え、ゲームや3Dタートルグラフィックで楽しく勉強したりと、C言語の学習を強力にサポートします。
ブロック崩しゲーム 3Dツリー クリスマスツリー
また、このようなボタンの用意されているページでは、掲載しているプログラムをStudy Cに直接ロードし実行したりすることができます。
Study Cにロードする Study Cにロードし編集する Study Cにロードし実行する
Study C無料利用についての詳細は、このページを参照してください。



簡単な数当てゲームを作成します。 プログラムが作成した0から999の数を当てるゲームです。 プレイヤーが適当な数字を入力すると、プログラムは答えの数が入力した数より小さいか大きいか調べ表示します。
プログラムが考え出す規則性のない数字を乱数といいます。乱数はrand関数で作成することができます。 rand関数はプログラム起動後に毎回同じ値を返してきます(Study CではVer1.08iまでは異なった値を返します)。 次のプログラムをコンパイルし実行すると、毎回同じ値を表示します(Study C Ver1.08iまでは異なる値を表示します)。
#include <stdio.h>

main()
{
        printf("%d\n", rand());
        printf("%d\n", rand());
        printf("%d\n", rand());
}
Study Cにロードする Study Cにロードし編集する Study Cにロードし実行する ブラウザとの連携機能が使用可能なStudy Cのバージョンなどについて...
これを回避するためには、rand関数の使用に先立ちsrand関数に毎回異なった値を与える必要があります。 通常、time関数が返す値をsrand関数に渡します。
#include <stdio.h>

main()
{
        srand(time(NULL));
        printf("%d\n", rand());
        printf("%d\n", rand());
        printf("%d\n", rand());
}
Study Cにロードする Study Cにロードし編集する Study Cにロードし実行する ブラウザとの連携機能が使用可能なStudy Cのバージョンなどについて...
一秒以内にもう一度起動すればsrand関数に同じ値を渡してしまいますが、この方法で実用上問題ないと思います。 通常、乱数は0から32767間の数を返してくるので今回のゲームの0から999までの間の数を作成するには'%'で1000で割ったときの余りを求めそれを使用します。 後はループを作成しscanf関数で数値を入力しその値と解答の値を比較して大きい/小さい/等しいかを判定するだけです。
#include <stdio.h>

main()
{
        int     num, inp, count;

        srand(time(NULL));
        num = rand() % 1000;
        count = 0;
        for(;;){
                printf("INPUT : ");
                scanf("%d", &inp);
                count++;
                if(num < inp)
                        printf("答えは入力した数値より小さい値です。\n");
                if(num > inp)
                        printf("答えは入力した数値より大きな値です。\n");
                if(num == inp){
                        printf("*** %d回で当たりです ****\n", count);
                        break;
                }
        }
}
Study Cにロードする Study Cにロードし編集する Study Cにロードし実行する ブラウザとの連携機能が使用可能なStudy Cのバージョンなどについて...