📑

あまりにも大変だったはじめてのゲーム作成の記録(PHP)

2023/12/24に公開

スクールの提出課題としてPHPを使用し「ブラックジャック」を作成しました。
この記事では作成の流れと振り返りを記述しています。

設計

設計しようにもWEBサイト以外はコードで動くものをイチから作った事がないため、まずは情報取集。ブラックジャック、PHP言語にこだわらず、他のトランプゲーム、PyhsonやC言語での例についても積極的に調べました。

方針

その結果決めたのが以下の方針です。

  • カード番号の大元は整数で取り扱う
    問題になりそうだったのが、トランプの番号 A J Q K の取り扱いでした。
    大元のデータが文字列の場合、計算時に整数に変換することになりコードが煩雑になることが予想できたため、カード番号は基本的に整数で取り扱うことにしました。
  • トランプの山札 
    もう1つ大変そうだったのがトランプの山札です。組み合わせであることから配列で作ることにしました。
    -- 初期の配列
    -- シャッフル
    -- プレイヤーまたはディーラーが取るたびに1枚ずつ減っていく
  • プレイの流れ
    ゲームの進行については
    -- プレイヤー1回目
    -- ディーラー1回目
    -- プレイヤーの番
    -- ディーラーの番
    -- 勝敗判定
    以上をクラスで作成し、順番に実行することでゲームを進めていくことにしました。

作成の流れ

  • プログラムの命令を文章を項目にして作ってみる
  • クラス図を作る
  • 最初から別ファイルに分けず一つのファイル内でコードを書く(これが後で大変なことになりました)

学んだこと

  • クラス分けは設計図のメイン
    クラス分けがコードに与える影響が大きい。クラス、メソッドあたりまで最初に決めておくとスムーズに進みそうです。

  • 変数や引数の受け渡しの難しさと複雑さ
    クラスやファイルを分けて作成する場合、実際にプログラムを組むと、クラスやファイル間の受け渡しが発生し、コードも「入れ子状態」「承継の承継」が頻出する。かなり苦しんで作ることになりました。
    →勉強不足はもちろん、モノを何度も作る経験が必要だと感じました。

  • コード規約は頭に入れておく&最初に決めておく
    PSR-2に沿ったコードにするということで、クラスごとにファイルを分割することになったのはいいものの、一度出来上がったプログラムにエラーが続出。この修正にほぼ1日かかりました。

  • 最後のチェックも余裕をもって
    後半で「もっと違う方法でスマートに出来たのでは?」と考えるタイミングが何回も出てきた。また、一度出来上がったコードであっても、少しのエラー修正が大きな変更を産むことも。十分な余裕をもって仕上げるべきだと感じた。

今後に向けて

  • 動かすものを何回も作ることが大事
  • 勉強量を圧倒的に増やす(技術力不足を痛感したため)特にオブジェクト指向を中心に
  • 製品については3回は作り直す予定で時間の余裕を持たせる

Discussion