Rubyで作られたRubyWarriorというゲームをPHPに移植しました。

yandod/php-warrior

Rubyで実装して2つの塔を攻略していくゲームですが、晴れてPHPでも攻略できるようになりました。 初心者モードと中級者モードに9面づつ、最後までクリアすると同じコードで最初から最後までプレイするepicモードが始まります。

RubyWarriorの場合、プレイヤーの動きを実装するplayer.rbは次のような形です。

class Player
  def play_turn(warrior)
    # cool code goes here
    if warrior.feel.enemy?
      warrior.attack!
    else
      warrior.walk!
    end
  end
end

一方、PHPでは戦士の挙動を実装するplayer.phpは次のようになりました。 Rubyの!ニュアンスが失われているのがやや心残りですが、ひとまずひと通りのステージクリアできるのは確認できました。

<?php
class Player {

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

ちなみにPython移植版の場合は!を_に変えて移植していました。

arbylee/python-warrior

TravisCIを使ってPHP7での動作も確認しましたが、気軽に遊んでもらえると嬉しいです。 インストールはcomposerから可能です。

composer global require "yandod/php-warrior=*"
export PATH=$HOME/.composer/vendor/bin:$PATH