📑
あまりにも大変だったはじめてのゲーム作成の記録(PHP)
スクールの提出課題としてPHPを使用し「ブラックジャック」を作成しました。
この記事では作成の流れと振り返りを記述しています。
設計
設計しようにもWEBサイト以外はコードで動くものをイチから作った事がないため、まずは情報取集。ブラックジャック、PHP言語にこだわらず、他のトランプゲーム、PyhsonやC言語での例についても積極的に調べました。
方針
その結果決めたのが以下の方針です。
- カード番号の大元は整数で取り扱う
問題になりそうだったのが、トランプの番号 A J Q K の取り扱いでした。
大元のデータが文字列の場合、計算時に整数に変換することになりコードが煩雑になることが予想できたため、カード番号は基本的に整数で取り扱うことにしました。 - トランプの山札
もう1つ大変そうだったのがトランプの山札です。組み合わせであることから配列で作ることにしました。
-- 初期の配列
-- シャッフル
-- プレイヤーまたはディーラーが取るたびに1枚ずつ減っていく - プレイの流れ
ゲームの進行については
-- プレイヤー1回目
-- ディーラー1回目
-- プレイヤーの番
-- ディーラーの番
-- 勝敗判定
以上をクラスで作成し、順番に実行することでゲームを進めていくことにしました。
作成の流れ
- プログラムの命令を文章を項目にして作ってみる
- クラス図を作る
- 最初から別ファイルに分けず一つのファイル内でコードを書く(これが後で大変なことになりました)
学んだこと
-
クラス分けは設計図のメイン
クラス分けがコードに与える影響が大きい。クラス、メソッドあたりまで最初に決めておくとスムーズに進みそうです。 -
変数や引数の受け渡しの難しさと複雑さ
クラスやファイルを分けて作成する場合、実際にプログラムを組むと、クラスやファイル間の受け渡しが発生し、コードも「入れ子状態」「承継の承継」が頻出する。かなり苦しんで作ることになりました。
→勉強不足はもちろん、モノを何度も作る経験が必要だと感じました。 -
コード規約は頭に入れておく&最初に決めておく
PSR-2に沿ったコードにするということで、クラスごとにファイルを分割することになったのはいいものの、一度出来上がったプログラムにエラーが続出。この修正にほぼ1日かかりました。 -
最後のチェックも余裕をもって
後半で「もっと違う方法でスマートに出来たのでは?」と考えるタイミングが何回も出てきた。また、一度出来上がったコードであっても、少しのエラー修正が大きな変更を産むことも。十分な余裕をもって仕上げるべきだと感じた。
今後に向けて
- 動かすものを何回も作ることが大事
- 勉強量を圧倒的に増やす(技術力不足を痛感したため)特にオブジェクト指向を中心に
- 製品については3回は作り直す予定で時間の余裕を持たせる
Discussion