見出し画像

#35 勝敗を表示する②:React でプロプラ! Vol.3 「BlackJack」

「React.js でプログラミング・プラモデル」の連載第3弾。
React.js で、カジノゲーム「BlackJack」を作ろう!

これまで

前回は、勝敗を表示するための Chip コンポーネントを実装しました。

現時点の Sandbox

前回までの Sandbox はこちら。
はじめての方は、ここから一緒に作り始めることができます。

今回のゴール

・BlackJackUtils.judge(dealersHand, playersHand) を実装する

今回の設計書

src/utils/BlackJackUtils.js

勝敗判定
// function judge(dealersHand, playersHand) を見つけてください
-----
■定数定義
1. 定数 dealersScore を宣言し、BlackJackUtils.getLastScore(hand) の戻り値で初期化する
2. 定数 playersScore を宣言し、BlackJackUtils.getLastScore(hand) の戻り値で初期化する

■処理詳細
1. プレイヤーがバーストしているとき
 1.1 "LOSE!!" を返却する
2. プレイヤーとディーラーのスコアが等しいとき
 2.1 "PUSH" を返却する
3. プレイヤーのハンドがブラックジャックのとき
 3.1 "BLACK JACK!!" を返却する
4. ディーラーのハンドがブラックジャックのとき
 4.1 "LOSE!!" を返却する
5. ディーラーがバーストしているとき
 5.1 "WIN!!" を返却する
6. プレイヤーのスコアが、ディーラーのスコアより大きいとき
 6.1 "WIN!!" を返却する
7. プレイヤーのスコアが、ディーラーのスコアより小さいとき
 7.1 "LOSE!!" を返却する

ヒント

・if 文を書くとき、1. 〜 5. の順番は大事だよ!

1. プレイヤーがバーストした場合は、「無条件で」プレイヤーの負け
// だから最初に書く

2. 引き分けかどうか
// お互いブラックジャックだと引き分けなので、ブラックジャック判定より前に書く

3. プレイヤーがブラックジャックかどうか
// ブラックジャックは最強の手なので、通常のスコア比較より前に書く

4. ディーラーがブラックジャックかどうか
// 同上

5. ディーラーがバーストした場合は、プレイヤーの勝ち

// あとは通常のスコア比較をする

・「バーストしているとき」は「スコアが 21 を超えているとき」のことだよ!
・「ブラックジャック判定」は、BlackJackUtils.js の中の処理を使おう!

実装例

judge(dealersHand, playersHand) の実装はできましたか?
判定処理を作るときは、「パターンの洗い出し」「パターンの順番」を色々試してみましょう!

次回

次回は、getLastScore(hand) を実装します!

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