2014年8月10日日曜日

Ruby Warrior をやってみる(Level3)

前回に引き続き、今回は Level3 をやっていきます。

画面を見てみると、敵の数が増えています。


そして、例のごとく説明文

The air feels thicker than before. There must be a horde of sludge.
Be careful not to die! Use warrior.health to keep an eye on your health, and warrior.rest! to earn 10% of max health back. 


毎度の意訳

空気がさっきよりも重たく感じる。どうやら敵の大群が居る感じがする。
殺られたらだめだ!warrior.health を使えば、戦士の体力を確認できる。
そして warrior.rest! で最大体力の 10% の体力を回復する事ができる。

とのこと。

戦士の初期体力が 20 で、敵は 3 回の攻撃で倒す事ができる。
つまり 2 回は敵の攻撃を貰う事になる。
敵の 1 回の攻撃で -3 のダメージなので、 (-3 x 2) x 4 = -24 となり、Level2 のままではクリアできない。

敵一体であれば、6 より大きい体力があれば倒す事ができる。
この判定を行うためには、自分の体力を見て判定するとよいので、今回の warrior.health を使えば乗り切れる体力かどうかの判断が出来る。
そして、体力的にまずい場合は warrior.rest! を使用すれば、最大体力の 10 % 回復できるということで、今回の場合は最大体力 20 の 10% で 2 回復できる事になる。

これを踏まえた上でプログラムを書いていく。

当然のことながら、目の前に敵がいるのに回復などしているとダメージ量と回復量の差によってクリアができないので、目の前に何も居ない事を見てから回復動作を行う必要がある。

これを踏まえて書いたコードがこちら

class Player
  def play_turn(warrior)
    if warrior.feel.empty? then
      # 目の前が空いている
      if warrior.health <= 6 then
        # 体力が 6 以下の場合は回復
        warrior.rest!
      else
        warrior.walk!
      end
    else
      # 敵がいる
      warrior.attack!
    end
  end
end

上手くいきました。
ここでは、条件分岐での関係演算子の使い方が分かりました。

まだなんとか行けるね。

0 件のコメント:

コメントを投稿