概要
独学エンジニア さんで課題となっていたブラックジャック作成に取り組みました。
Git Hubにソース公開しております。
ルール
ブラックジャックはカジノで行われるカードゲームの一種です。
1〜13までの数が書かれたカード52枚を使ってゲームが行われます。
ルールは次の通りです。
・ 実行開始時、ディーラーとプレイヤー全員に2枚ずつカードが配られる。
・ 参加できるプレイヤーは3名(ディーラー含めて合計4名までとする)。
・ 自分のカードの合計値が21に近づくよう、カードを追加するか、追加しないかを決める
・ プレイヤーはカードの合計値が21を超えない限り、好きなだけカードを追加できる
・ ディーラーはカードの合計値が17を超えるまでカードを追加する
各カードの点数は次のように決まっています。
・ 2から9までは、書かれている数の通りの点数
・ 10,J,Q,Kは10点
・ Aは1点あるいは11点として、手の点数が最大となる方で数える
アピールポイント
2人でプレイする場合と3人以上でプレイする場合には勝者の判定の仕方が変わるのでGameMaster.phpとGameMaster.phpを継承したGameMasterOverTwoPlayer.phpを作成することで対応しました。勝者判定のメソッドをオーバーライドしています。
あわせて行った学習内容
- PHPUnit
- PHP_CodeSniffer
- PHPMD
- PHPStan
感想
最初はどこから手をつけていいのかわからず難しかったです。Xdebugでデバッグしながら、プロパティがどのように設定されていくのかわかったくらいから徐々に感覚がつかめてきました。2022年のGWはほぼこれに費やしましたが、まとまった時間で学習を進めることができてよかったです。
独学エンジニア さんでは、このブラックジャックの開発以外にも、きれいにコードを書くために必要なことがたくさん学べます。真偽値を返すためにメソッドを書いて、何をしようとしているのかわかりやすくする、ということは今まで意識したことがありませんでした(宣伝を依頼されているわけではございません)。
フレームワークの使い方が学べるプログラミング講座は多いですが、PHPの、しかもオブジェクト指向が学べるプログラミング講座はなかなか少ないのではないでしょうか。おすすめです。