Laravel – 例題 – Rock-Paper-Scissors

概要

LaravelのToy problemとして、簡単なじゃんけんのアプリケーションを作る。

  • 初期画面にRock/Paper/Scissorsの3つのラジオボタンと”Match!”ボタンを表示
  • ユーザーがラジオボタンのいずれかを選択して”Match!”ボタンを押すと、コンピューター側の手をランダムに発生させて勝敗比較
  • ユーザー/コンピューターの名前と手、結果を表示に加えて再表示

ユーザー、コンピューターのオブジェクトを生成するPlayerクラスを作成する。

また、手の値のバリデーションは行っていない。

Playerクラス

ユーザー/コンピューターに関わらず、プレーヤーの名前と現在の手(Rock/Paper/Scissors)を保持し、勝ち負け・あいこの判定機能を備えるクラス。

クラスファイルはpublic下のサブディレクトリ―に置く

  • クラスファイルの配置はpublic/rock_paper_scissors/Player.php
  • コントローラーなどからアクセスする場合、public_path()を使う

クラスの仕様は以下の通り。

  • 名前空間を含むフルパスのクラス名はrock_paper_scissors\Player
  • このクラスからユーザーとコンピューターそれぞれのインスタンスを生成
  • Playerのプロパティーは名前($name)とじゃんけんの手($hand_number)
  • $hand_numberは0: rock、1: paper、2: scissorsに対応
  • $hand_numberは外部からpublicメソッドで設定
  • $hand_numberに対応した手の名称をクラス定数の配列として準備し、現在の手の名前を返すメソッドを準備
  • 自身が他のPlayerに対して勝っているか(wins)、あいこか(draws)を判定するメソッドをそれぞれ準備

ルーティング

ルーティングはGETメソッドとPOSTメソッドに対応して2つ。

コントローラー

コントローラーのアクションは、GETに対する初期ページへの遷移と、POSTに対する処理・遷移の2つ。

ビュー

GETの場合はフォームだけ表示し、POSTでじゃんけんを実行したときには結果も表示する。

実行結果

初期表示

Rock-Paper-Scissors

  

 

結果表示

Rock-Paper-Scissors

  


User

  1. Name: USER
  2. Hand: Rock

Computer

  1. Name: COM
  2. Hand: Paper

Result

Computer won

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です