さて、今回は Level7 です。
だいぶんしんどくなってきた。。。
とはいえ、blog を書く気になっている間にやってしまわないとまた時間経ちそうなのでやってしまわないと。
前置きは良いとして、説明文を意訳します。
You feel a wall right in front of you and an opening behind you. You
are not as effective at attacking backward. Use warrior.feel.wall? and
warrior.pivot! to turn around.
壁を目の前にして開始します。
通常の攻撃は、後ろに対して行えません。
warrior.feel.wall? メソッドと warrior.pivot! メソッドを使って向きを変えてください。
かな?
前回、:backward メソッドを使用して後ろ側への移動などを行って来ましたが、今回からなんと! warrior.pivot! メソッドを使うと戦士の向きを変えることができるようになるそうです。
ってか、最初から教えておいてくれたらよかったのに。
ということで、前回の資産を活かせるか試してみたところ、当然うまく行きませんでした。しかし、pivot! を使わずに :backward 引数だけで対応できるのでは無いかと、ちょっと弄るとクリア出来たので、今回はそのコードを載せておきます。
次の回で、実際に pivot! を使った内容を実装します。
コードは以下のとおり
class Player def initialize @health = 20 @direction = :backward end def play_turn(warrior) @warrior = warrior return warrior.rescue!(@direction) if feel_captive? @direction = change_direction if feel_wall? if decrease_health? if pinch_pinch_health? @direction = change_direction warrior_walk! else check_enemy? ? warrior_attack! : warrior_walk! end @direction = change_direction if pinch_health? else if max_health? check_enemy? ? warrior_attack! : warrior_walk! else warrior.rest! end end @health = warrior.health end def decrease_health? @health > @warrior.health end def pinch_pinch_health? @warrior.health <= 2 end def pinch_health? @warrior.health <= 3 end def max_health? @warrior.health == 20 end def feel_captive? @warrior.feel(@direction).captive? end def feel_wall? @warrior.feel(@direction).wall? end def check_enemy? @warrior.feel.enemy? || @warrior.feel(:backward).enemy? end def warrior_walk! @warrior.walk!(@direction) end def warrior_attack! @warrior.attack!(@direction) end def change_direction @direction === :forward ? :backward : :forward end end
今回だけの無理やりコードなので、攻撃にも方向シンボルの指定とメソッド化、ピンチ体力の調整、そして本格的にやばくなった時の動作を無理やり実装しています。
本格的にやばくなった時のコードが何故必要になったかというと、最初の緑の敵ですが、フル体力で殴りあっても勝てないようになっています。。。一旦退いて体力回復後殴らないと勝てない。なんて糞仕様素敵な的なんだ。
一応これで、なんとかクリアできます。
ちょっと無理やりですかね。まあ、本番は次回になるので良いとしましょうか。
Written with StackEdit.
0 件のコメント:
コメントを投稿