2020 ソフトウェア設計及び演習用の班Wiki
20::gr05::第13回活動記録
8/2
-
特殊ルールブラックジャックを実現する関数を作った。
- n = 1 バースト無効
- n = 2 カードを見る...1度カードをヒットし、もしヒットされなかったらそれを手札から削除する。
- n = 4 カードを捨てる...カードを捨てる関数discard()を呼び出す。
- n = 8 ホストのカードを見る...裏返すカードアニメーションを呼び出す(システム的にはアニメーションだけでOK)
- n = 16 二枚引く...hit()を二回呼び出す。
- n = 32 強制オールイン...chipの値を全てbetに代入し、chipを0にする。
- n = 64 ベット半分没収...betの値を1/2にして再代入
- n = 0 エラー
8/3
-
自分の引いたカードが特殊効果のもつカードかどうかを返す関数を作成した
- n = 0 なし
- n = 1 バースト無効
- n = 2次のカードが分かる
- n = 4カードを捨てる。
- n = 8ホストのカードを見る。
- n = 16二枚引く
- n = 32強制オールイン
- n = 64ベット半分没収
- 返り値がどの特殊効果を持つかは論理積を用いて計算する。
8/4
- 特殊効果のブラックジャックを完成させた。が、デバッグをしていくと予期せぬ動作があった。
- 山札の次のカードがわかる効果をもつカードを発動すると次のカードがすでに配列に格納されてしまい、その結果、カードを発動して確認したカードと実際に引いたカードが違うというエラーが発生した。
8/5
- 昨日の問題を解決した、hitの条件をif(nextcardじゃない)に変更し、もしnextcardだったら引かないとする事で解決した。
- 画面上にベット額とチップ額を表示させるラベルを追加した。
- ゲームの結果を表示させるラベルが消えてくれないというエラーが発生した。
8/6
-
プレイヤーがAと「次のカードが分かる」をひいて次のカードが10だった場合、無条件にBJ勝利になってしまうエラーが発覚した
-
解決策1.通常はhit関数を呼び出し、その直後にplayer_sumをしていたが、player_sumをするタイミングをずらすことで、プレイヤーの役の合計が21を超えたかどうかを
- ↑失敗、プレイヤーの役がブラックジャックかどうかを判定する関数でplayer_sumを行っていたため、結局配列に足されてしまいBJと判定されてしまった。
- 解決策2.hit関数を呼び出し、「次のカードが分かる」をひいたらall_cardとplayer_cardから引いたカードを削除し、一時的に保持する変数にその値を代入、
「次のカードが分かる」かどうかを判定する変数を1にする。変数が1になった&hitが押されたらall_cardとplayer_cardに保持していた変数を代入する。
- ↑解決
-
解決策1.通常はhit関数を呼び出し、その直後にplayer_sumをしていたが、player_sumをするタイミングをずらすことで、プレイヤーの役の合計が21を超えたかどうかを
最終更新日:2020/08/06 21:47:23