0

OOP の基本は知っていますが、この通常の php コードを OOP のように動作させる方法がわかりません。書き留めたのはジャンケンみたいなゲームです。誰かが私を助けるために時間を犠牲にしてくれませんか? 私は本当にそれが上手になりたい. 私は感謝されます。

<?php

    if(isset($_POST['submit']))
    {

        $array = array('water', 'wood' 'fire');
        $enemy_guess = array_rand(1,3);
        $player_guess = $_POST['picked_skill'];

            switch ($player_guess){

            case 'water':

                if($enemy_guess == 'fire'){
                        echo "you won";
                    }
                }else
                    {
                        echo "you lost";
                    }
            break;

            case 'wood':

                if($enemy_guess == 'water'){
                        echo "you won";
                }
                }else
                    {
                        echo "you lost";
                    }
            break;

            case 'fire':

                if($enemy_guess == 'wood'){
                        echo "you won";
                }
                }else
                    {
                        echo "you lost";
                    }
            break;
        }

    }

    ?>
4

3 に答える 3

2

これは例です。ドローシナリオを考慮していないことを考慮してください。質問がある場合は、先に進んで作成してください:)

class Game {

   private $player_guess;
   private $enemy_guess;
   private $rules = array( //basically, water beats fire, fire beats wood and wood beats water, anything else is a lose scenario.
           array("water" => "fire"),
           array("fire" => "wood"),
           array("wood" => "water"));

   private $options = array("water", "wood", "fire");


   public function compGuess() {    
        $this->enemy_guess = array_rand($this->options);
   }
   public function playerGuess($guess) {
        $this->player_guess = $guess;
   }

   public function result() {
        if($this->rules[$this->enemy_guess] == $this->player_guess) {
          echo "You loose";
        } else {
           echo "You WIN!";       
        }

   }
}

//Usage:
$game = new Game();
$game->compGuess();
$game->playerGuess($_POST['picked_skill']);
$game->result();
于 2012-10-03T21:12:14.997 に答える
0

OOP を行うには多くの方法がありますが、それはあなた次第です。これが私がすることです。

class Skill
{
    static $skills = array("Wood", "Water", "Fire");
    $skill;

    __construct($skill)
    {
        if is_int($skill)
        {
            $this->skill = $skill;
        }
        else
        {
            $this->skill = array_search($skill, self::$skills);
        }
    }

    function Beats($other)
    {
        $beat_other = $other->skill - 1;
        if($beat_other < 0)
        {
            $beat_other = count(self::$skills) - 1;
        }
        if($beat_other == $this->skill)
        {
            return true;
        }
        return false;
    }
}

$Enemy_Skill = new Skill(rand(0,2));
$My_Skill = new Skill($_POST['picked_skill']);

if($My_Skill->Beats($Enemy_Skill))
{
    echo "You Win";
}
elseif($Enemy_Skill->Beats($My_Skill))
{
    echo "You Lose";
}
else
{
    echo "Draw";
}
于 2012-10-03T21:20:01.840 に答える
0

大まかな戦略は、2 人のプレーヤーの推測をクラスとしてモデル化することです。入力検証を内部に配置して、無効な推測が行われないようにします。

次は、誰が勝つかを比較する機能です。次のように、ある推測と別の推測を比較します。

$result = $guess->compare($otherGuess);

この時点でこれを試してみましょう... :)

于 2012-10-03T21:14:21.283 に答える