0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【PHP】PHP課題14-8 ジャンケンゲーム 難易度(高)

Last updated at Posted at 2021-06-21

image.png

image.png

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;
    }

}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?