第12回:演習

今週は,これまでに学習した知識を活用して,いろいろなプログラムを作っていきます.


2003年度後期定期試験 2004年1月28日(水) 2時限 0406教室


まず,先週までの演習がきちんと理解できていない人は,今週中に完成させること.


乱数

ゲームなどのプログラムを作成するのに必ず必要となる乱数について説明し,じゃんけんや,おみくじを作ってみましょう.

「でたらめな数」を乱数といい,プログラミングの重要なテクニックになっています.まずは,乱数を生成する関数の使い方を見てみましょう.

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

void main()
{
    int i;

    randomize();    // 乱数発生ルーチンの初期化
    printf("0 から 99 までの 10 個の乱数\n\n");
    for(i=0; i<10; i++){
       printf("%d\n", rand() % 100);
    }
}

関数randomize()で乱数生成関数を初期化し,rand()で0からRAND_MAX(システムによって異なる)までの間の数をランダムに発生します.上のように書くと,0から99の間の数がランダムに得ることができます.

この乱数を利用して,プログラムをスタートすると

0がグー,1がチョキ,2がパー

として,どれかを出してくるプログラムをまず作ってみる.

これができるようになったら,こちらの手を数字で入力し,勝ち負けの判定もできるようにする.

さらに,じゃんけんプログラムを強くする方法について考えてください.

【ヒント】コンピュータゲームを学習して強くする常套手段は,相手のだした手を記憶して,パターンをみつけることです.何手前まで記憶させるかで,学習の成果が違ってきます.

開発の手順
レベル1.じゃんけんを何回でも繰り返して行えるようにする.9が入力されたらおしまい.
レベル2.前に人間が出した手を記憶して,これに勝つ手を出す.
レベル3.人間の出した手の統計をとり,一番出しそうな手に勝つ手をだす.
レベル4.人間の出す手を2手記憶し,パターンをみつける.

出来上がったら,どのようなプログラムができたか,小林まで説明してください.