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に保持していた変数を代入する。
      • ↑解決


最終更新日:2020/08/06 21:47:23