[前へ]   [目次へ]   [次へ]

単語当てゲームLv2の設計(C/C++)


(11/08/26) 余計な(未定義)を修正しました

今回は、単語当てゲームLv2の設計を行います。
Lv2の仕様はLv1から機能追加したものなので、
まずLv1の仕様から振り返ってみます。

●Lv1の仕様
[要素]ソース上に直接書き込んだ問題
   [属性]複数:問題
         入力 固定:[機能]乱数を使って選択し表示します→[処理]問題を選択する
[要素]選択された問題
   [属性]参照 単体:問題
         作成:[機能]乱数を使って選択し表示します→[処理]問題を選択する
         入力 固定:[機能]乱数を使って選択し表示します→[処理]選択された問題を表示する
         入力 固定:[機能]成否を判定します→[処理]結果を判定し、分岐する
[要素]入力された答え
   [属性]単体:プレイヤーの回答
         出力:[機能]その問題の答えをプレイヤーはキーボードから入力し→プレイヤーから答えが入力されるのを待つ
         入力 固定:[機能]成否を判定します→[処理]結果を判定し、分岐する
[要素]問題
   [属性]単体:問題文 正解文
         被参照:選択された問題
[機能]乱数を使って選択し表示します
   [処理]乱数を発生させる
   [処理]問題を選択する
   [処理]選択された問題を表示する
[機能]その問題の答えをプレイヤーはキーボードから入力し
   [処理]プレイヤーから答えが入力されるのを待つ:「[要素]入力された答え」へ結果を出力
[機能]成否を判定します
   [処理]結果を判定して分岐:正解なら「[機能]クリア表示して終了」へ進む
                         間違いなら「[機能]その問題の答えをプレイヤーはキーボードから入力し」へ進む
[機能]クリア表示して終了
   [処理]クリアを表示する
   [処理]プログラムを終了する

各要素の関係図


変更点の詳細については 第75回 を参照していただくとして、
ざっくり言えばヒント追加です。

なので新しく要素としてヒント文字列を追加します。
[要素]ヒント文字列
   [属性]単体:ヒントとして表示する文字列
         作成:[機能]乱数を使って選択し表示します
         入力 出力:[機能]ヒント文字列の更新(未定義)
         入力 固定:[機能]ヒント文字列の表示(未定義)

加えて、関連する機能を追加します。
[機能]ヒント文字列の更新
   [処理]入力と正解の比較:「[要素]入力された答え」と「[要素]選択された問題の正解文」を比較し、
   [処理]ヒント文字列を更新:「[処理]入力と正解の比較」で一致した部分の「[要素]ヒント文字列」を更新する
[機能]ヒント文字列の表示
   [処理]ヒント文字列を表示する:「[要素]ヒント文字列」を表示する

また、「[機能]乱数を使って選択し表示します」の処理に以下の処理を追加します。
   [処理]ヒント文字列を初期化する:「[要素]選択された問題の正解文」を**にして「[要素]ヒント文字列」に設定する


追加点はこれだけです。
これを仕様に合うようにLv1の仕様の中に組み込めばOKです。

●Lv2の仕様に合わせて作成した新しい関係(赤太字部分が変更点)

[要素]ソース上に直接書き込んだ問題
   [属性]複数:問題
         入力 固定:[機能]乱数を使って選択し表示します→[処理]問題を選択する
[要素]選択された問題
   [属性]参照 単体:問題
         作成:[機能]乱数を使って選択し表示します→[処理]問題を選択する
         入力 固定:[機能]乱数を使って選択し表示します→[処理]選択された問題を表示する
         入力 固定:[機能]成否を判定します→[処理]結果を判定し、分岐する
         入力 固定:[機能]ヒント文字列の更新→[処理]入力と正解の比較
[要素]入力された答え
   [属性]単体:プレイヤーの回答
         出力:[機能]その問題の答えをプレイヤーはキーボードから入力し→[処理]プレイヤーから答えが入力されるのを待つ
         入力 固定:[機能]成否を判定します→[処理]結果を判定し、分岐する
         入力 固定:[機能]ヒント文字列の更新→[処理]入力と正解の比較
[要素]問題
   [属性]単体:問題文 正解文
         被参照:選択された問題
[要素]ヒント文字列
   [属性]単体:ヒントとして表示する文字列
         作成:[機能]乱数を使って選択し表示します→[処理]ヒント文字列を初期化する
         入力 出力:[機能]ヒント文字列の更新→[処理]ヒント文字列を更新
         入力 固定:[機能]ヒント文字列の表示→[処理]ヒント文字列を表示する

[機能]乱数を使って選択し表示します
   [処理]乱数を発生させる
   [処理]問題を選択する:「[要素]選択された問題」を作成
   [処理]選択された問題を表示する
   [処理]ヒント文字列を初期化する:「[要素]ヒント文字列」を作成
[機能]ヒント文字列の表示
   [処理]ヒント文字列を表示する

[機能]その問題の答えをプレイヤーはキーボードから入力し
   [処理]プレイヤーから答えが入力されるのを待つ:「[要素]入力された答え」へ結果を出力
[機能]ヒント文字列の更新
   [処理]入力と正解の比較
   [処理]ヒント文字列を更新:「[要素]ヒント文字列」を更新

[機能]成否を判定します
   [処理]結果を判定して分岐:正解なら「[機能]クリア表示して終了」へ進む
                         間違いなら「[機能]その問題の答えをプレイヤーはキーボードから入力し」へ進む
[機能]クリア表示して終了
   [処理]クリアを表示する
   [処理]プログラムを終了する

新しい各要素の関係図

これで単語当てゲームLv2を作成するのに必要な情報が揃いました。
文字列の直接操作について忘れたという人は 第30回 あたりから読んで来てください。

次回は単語当てゲームLv1をLv2に改造していきます。

[前へ]   [目次へ]   [次へ]

プログラミング講座 総合目次

最終更新 2011/08/26