見出し画像

#14 React.js でプログラミング・プラモデル Vol.2 「Border7」:ゲーム進行ボタンを実装する

これまで

前回は、Message コンポーネントの実装をして、画面にメッセージが出力されるようにしました。

現時点のコード

前回までの工程で出来上がるコードは以下です。
はじめましての方はこの sandbox 上でコーディングしてみてください。

今回のタスク

src/components/GameProgressButton.js の処理を実装する
src/Border7.js関数 next() の処理を実装する
GameProgressButton.js を呼び出す

では、早速始めましょう!

GameProgressButton.js を開く

jsDoc の処理詳細を参考にして、処理を実装してください。

ここにも CHALLENGE TASK!! がありますね。
Border7Buttons.js のときと同様、このタスクはキーボード操作でボタンを押せるようにするための処理です。
余力があれば、ぜひチャレンジしてみてください!

/**
* ゲーム進行ボタンコンポーネント
*
* 処理概要
*  - ゲームを進めるためのボタンを作成する
*
* 処理詳細
*  - Button コンポーネントの onClick プロパティに props.onClickNext を設定する
*
*  - props.isTheLastGame の値に従って、ボタンの名称を設定する
*     - props.isTheLastGame が true の場合
*        - "FINISH"
*  - props.isTheLastGame が false の場合
*     - "NEXT"
*
* CHALLENGE TASK!!
*   省略
*
* @param {*} props
*/

src/Border7.js を開き、関数 next() を見つける

続いて、関数 next() の処理を実装しましょう。
jsDoc を参考にして、処理を実装してください。

  /**
  * ゲーム進行関数
  *
  * 処理概要
  *  - next ボタン, finish ボタンが押されたときの処理を行う
  *
  * 処理詳細
  *  - state deck の長さが 0 の場合
  *     - satate isGameFinished を true に更新する
  *  - それ以外の場合
  *     - state card の値を null に更新する
  *     - state answered の値を false に更新する
  *
  */
 function next() {}

GameProgressButton.js を呼び出す

関数 next() の実装が完了したら早速呼び出してみましょう!
Border7.js の関数 getButtons() を見つけてください。

      /**
  * ボタンコンポーネント取得関数
  *
  * 処理概要
  * state answered の値に従って、ボタンコンポーネントを返却する
  *
  * 処理詳細
  *  - state answered が true の場合
  *     - ゲーム進行ボタンコンポーネント GameProgressButton を返却する
  *       ※ props には以下の関数、値を設定する
  *        - onClickNext: next()
  *        - isTheLastGame: deck.length が 0 かどうか
  *
  *  - state answered が false の場合
  *     - Border7 ボタンコンポーネント Border7Buttons を返却する
  *       ※ props には以下の関数を設定する
  *        - onClickOver: chechOver()
  *        - onClick7: check7()
  *        - onClickUnder: checkUnder()
  *
  * 参考
  *   省略
  *
  * @return {component} <GameProgressButton /> or <Border7Buttons />
  */
 function getButtons() {
   省略

関数 getButtons() はすでに手を加えていましたね。
jsDoc の処理詳細を参考にして、条件分岐を追加して表示分けされるようにしましょう。

完成イメージ

今回のタスクの実装例を以下に示します。

今回のタスクを実装すると、ほぼほぼゲームとしては完成です。
数字選択をして、勝ち負けを確認して、それを NEXT ボタンで繰り返せるようになりました。

ただ、ゲームを最後まで進めると以下のような画面になります。

画像1

ゲームが終わったのにも関わらず FINISH ボタンが表示されています。

次回

次回はこの不具合を修正しましょう。
そして、最終的な確認をして Border7 ゲームは完成です!

この記事があなたのお役に立ちましたら、よろしければサポートをお願いいたします! より良い記事をお届けできるよう、活動費に充てさせていただきます。