LoginSignup
10
10

More than 5 years have passed since last update.

PHPWarriorで学ぶ役に立たないPHP芸 その1 #phpwarrior

Last updated at Posted at 2015-06-03

RubyWarriorをPHPに移植したPHPWarriorを地味にメンテしています。

yandod/php-warrior

PHPWarriorはPHPで戦士に指令を与えて塔を登っていくというゲームです。
ゲームをクリアするだけならば標準の1メソッド内に素直なロジックを書いていく事になりますが、PHPの構文の許す範囲でトリッキーなコードや整理されたコードを書く余地もあります。

たとえば2面で使うことになる前方に敵が居たら攻撃し、そうでなければ歩くというコードは素直に書くと次のようになります。

<?php
class Player {

    public function play_turn($warrior) {
        # add your code here
        if ($warrior->feel()->is_enemy()) {
            $warrior->attack();
        } else {
            $warrior->walk();
        }
    }
}

元祖であるRubyWarriorをプレイした人をみていると例えばifを使わないという縛りプレイがあります。ここから連想したのがswitchにtrueを与える次の形式です。

<?php
class Player {
    public function play_turn($warrior) {
        switch (true) {
            case $warrior->feel()->is_enemy():
                $warrior->attack();
                break;
            default:
                $warrior->walk();
        }
    }
}

業務ならまずしないであろうコーディングですが、かつてhaltさんが書いたWikiパーサーの中にあって鮮烈な印象を受けた記憶があります。

続き
PHPWarriorで学ぶ役に立たないPHP芸 その2 #phpwarrior - Qiita

10
10
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
10
10