1・画面のレイアウトは画像の通り
2・ユーザーはグー・チョキ・パーのいずれかをラジオボタンで入力する
3・submitされたら、ユーザーの手を表示する
4・submitされたら、コンピュータの手をグー・チョキ・パーからランダムに選択し、表示する
5・submitされたら、じゃんけんの勝敗を判定し、出力する
6・利用するクラスは public/object_sample/classes 内に作成し、適宜読み込む。
7・JankenGameクラスとHandクラスを作成する。
JankenGameクラスはコンピュータの手をランダムに決める。
JankenGameクラスはユーザーの手とコンピュータの手を比べて勝敗を判定できる。
JankenGameクラスは勝敗に応じて結果のテキストを返す。
/laravel_bbs/public/object_sample/rock_paper_scissors.php
<?php
require_once 'classes/Hand.php';
require_once 'classes/JankenGame.php';
$hand = new Hand();
$cpu = new Hand();
$result = '';
if($_SERVER['REQUEST_METHOD'] === 'POST'){
$hand->set($_POST['hand']);
$cpu->random();
$jankenGame = new jankenGame($hand,$cpu);
$result = $jankenGame->get_result();
}
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<title>じゃんけん</title>
</head>
<body>
<h1>じゃんけん勝負</h1>
<p>あなたの手: <?php print $hand->get(); ?> </p>
<p>コンピューターの手: <?php print $cpu->get(); ?> </p>
<p>結果: <?php print $result; ?> </p>
<form method="post">
<label> グー <input type="radio" name="hand" value="グー" required ></label>
<label>チョキ <input type="radio" name="hand" value="チョキ" required ></label>
<label>パー <input type="radio" name="hand" value="パー" required ></label>
<input style="display:block;" type="submit" value="勝負">
</form>
<p><a href="rock_paper_scissors.php">初画面</a></p>
</body>
</html>
/laravel_bbs/public/object_sample/classes/Hand.php
<?php
class Hand {
const HANDS = ['グー', 'チョキ', 'パー'];
private $hand;
public function __construct(){
$this->hand = '';
}
public function random(){
$this->hand = Hand::HANDS[array_rand(Hand::HANDS)];
}
public function set($hand){
$this->hand = $hand;
}
public function get(){
return $this->hand;
}
}
/laravel_bbs/public/object_sample/classes/JankenGame.php
<?php
class JankenGame {
private $hand;
private $cpu;
public function __construct($hand, $cpu){
$this->hand = $hand;
$this->cpu = $cpu;
}
public function get_result(){
$playerHand = $this->hand->get();
$pcHand = $this->cpu->get();
if ($playerHand == $pcHand) {
$result ='あいこ';
} elseif ($playerHand == 'グー' && $pcHand == 'チョキ') {
$result = '勝ち';
} elseif ($playerHand == 'チョキ' && $pcHand == 'パー') {
$result = '勝ち';
} elseif ($playerHand == 'パー' && $pcHand == 'グー') {
$result = '勝ち';
} else {
$result = '負け';
}
return $result;
}
}