プログラミングのメモ帳(C/C++/HSP)

日々のプログラミングで気づいた点や小技集を紹介します。(Windows 10/XP/Vista、VC2017、HSP)

じゃんけんゲームの製作講座(入門編)

2012年02月20日 23時12分01秒 | 無料で学べる講座

じゃんけんゲームの入門編です。
ここでは、じゃんけんゲームの処理手順や考え方の仕組みを説明します。(戻る)

じゃんけんゲームのルール

まず最初に「じゃんけんゲーム」のルール(仕様)を決めます。

  1. 人間とコンピュータとの2人対戦を行う。
  2. 人間はキーボードの[1]、[2]、[3]キーで「グー」「チョキ」「パー」を決定する。
  3. コンピュータは乱数関数によって自動的に「グー」「チョキ」「パー」を決定させる。
  4. じゃんけんゲームは10回行ったら終了して「勝ち」「負け」「引き分け」の結果を表示する。

上記のルール(仕様)は、どこにでもありそうなゲームの仕様です。
しかし、このようなルール(仕様)をちゃんと決めないとゲームを作れませんので要注意。
また、3人大戦、4人大戦などに改良できるように作るか、2人対戦のみにして簡略化するか決めます。
今回は2人対戦のみにしてプログラミングを簡略化した内容を載せます。

じゃんけんゲームの考え方

ゲームのアルゴリズムとは、考え方の事で「じゃんけんゲームのルール」に見合うようにプログラミング(記述)する必要があります。
それでは文章で「じゃんけんゲームの考え方」であるアルゴリズムを紹介します。

  1. じゃんけんゲームの初期化を行う。
  2. じゃんけんゲームの開始メッセージを表示する。
  3. じゃんけんゲームが10回以下なら(a)~(e)を繰り返す。

    1. じゃんけんゲームの入力メッセージを表示する。
    2. 人間の入力処理を行う。
    3. コンピュータの乱数処理を行う。
    4. 人間とコンピュータの勝負判定を行う。
    5. 人間とコンピュータの勝負メッセージを表示する。

  4. じゃんけんゲームの終了メッセージを表示する。
  5. プログラムが終了する。

上記の「終了メッセージ」がじゃんけんゲームの結果表示となります。

じゃんけんゲームの作り方

じゃんけんゲームのルール(仕様)や作り方の考え(アルゴリズム)は上記のようになりました。
しかし、どうやって仕様やアルゴリズム通りに処理すれば良いでしょうか?

一度に全てをメイン関数などで処理するのはソースが長くなり、醜いため処理を分割するのが普通です。
分割の方法もいろいろありますが、今回は次の3つに分割して処理させます。

  1. 人間の入力処理(funcHuman)
  2. コンピュータの乱数処理(funcComputer)
  3. 人間とコンピュータの勝負判定(funcJudge)

上記の3つだけはサブ関数として処理を分割した方がメイン関数を見やすく分かりやすくバグが入らないようにできます。
カッコ内はサブ関数の関数名を意味します。
下図は「じゃんけんゲーム」のメイン関数のイメージです。

メイン関数
1じゃんけんゲームの初期化
2開始メッセージの表示
3
10回戦の処理
a入力メッセージの表示
b人間の入力処理funcHuman
cコンピュータの乱数処理funcComputer
d人間とコンピュータの勝負判定funcJudge
e勝負メッセージの表示
4終了メッセージの表示
5プログラムの終了

じゃんけんゲームのメイン

じゃんけんゲームのメイン関数だけを紹介します。

//------------------------------------------------
// メイン関数
//------------------------------------------------
int main( void )
{
    int kati = 0;
    int make = 0;
    int count;
    int human;
    int computer;
    
    printf( "★じゃんけんゲーム(10回戦)\n\n" );
    
    for ( count = 1 ; count <= 10 ; count++ ){
        printf( "%2d回目…[1]グー、[2]チョキ、[3]パーを入力して下さい:", count );
        human       = funcHuman();
        computer    = funcComputer();
        
        switch ( funcJudge(human,computer) ){
            case 0:
                kati++;
                printf( "⇒勝ち。\n" );
                break;
            case 1:
                make++;
                printf( "⇒負け。\n" );
                break;
            case 2:
                printf( "⇒引き分け。\n" );
                break;
            default:
                printf( "⇒エラー。\n" );
                break;
        }
    }
    printf( "\n" );
    printf( "★じゃんけんゲームの結果発表\n" );
    printf( "人間    :%d 回勝ち\n", kati );
    printf( "コンピュータ:%d 回勝ち\n", make );
    printf( "※引き分け回数は %d 回ありました。\n", (10 - kati - make) );
    return 0;
}

上記のメイン関数で分割したサブ関数の funcHuman()、funcComputer()、funcJudge() の3つを呼び出してます。
メイン関数を良く見ると「じゃんけんゲームの考え方」で紹介した文章とソースコードのプログラミング内容が一致すると思います。
また、「じゃんけんゲームの作り方」で紹介したイメージともソースコードのプログラミング内容が同じであることが分かります。
このようにゲームのアルゴリズムをしっかりと考えてからプログラミング(記述)すれば良いのです。
詳しい説明は次のページです。(基本編を読む)

関連記事



コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« じゃんけんゲームの製作講座 ... | トップ | じゃんけんゲームの製作講座(... »
最新の画像もっと見る

コメントを投稿

無料で学べる講座」カテゴリの最新記事