2014年8月8日金曜日

Ruby Warrior をやってみる(Level2)

昨日に引き続き Level2 です。
Level1 をクリアして次の画面へ進むとセーブの確認と、FaceBook に投稿が出来るっぽいのですが、FaceBook は使っていないのでここは SKIP LOGIN を選択します。
image
すると、次の Level2 が表示されます。
image
上部の説明文には
It is too dark to see anything, but you smell sludge nearby.
Use warrior.feel.empty? to see if there is anything in front of you, and warrior.attack! to fight it. Remember, you can only do one action (ending in !) per turn.
。。。意訳します。
とても暗く何も見えないが、臭いを感じ取る事はできる。
warrior.empty? を使えば、目の前に何かあるか確かめる事が出来る。そして warrior.attack! を使って戦う事が可能だ。
しかし忘れないでくれ、お前が動けるのは1ターンに一度だけだという事を。
こんな感じ?
要するに新しいメソッドが増えたって事ですね。
ここら辺は、画面の ABILITIES のボタンをクリックすると内容が書かれています。
image
これをみると、戦士の行動以外に周りの状況判断のメソッドも有る事が書かれています。
使い方は、warrior.feel.メソッド とやるみたいです。
(今回の .empty? も書かれています。)
画面の説明では、warrior.feel.empty? を使えばいけそうなので、早速使ってみたいと思います。
このメソッドは、目の前が空いているか?のチェックを行うもので、空いていれば true が返ってきて、何か障害物があれば false が返ってくる様になっています。
この判断を行うには if 文を使えば分岐が出来るので、今回は以下のような実装になります。
class Player
  def play_turn(warrior)
    if warrior.feel.empty? then
      warrior.walk!
    else
      warrior.attack!
    end
  end
end

見たまんまですけど、目の前が空いていれば歩き、空いていないなら敵がいる物として攻撃を行うようにしています。
あとは、特に説明する必要がないので、実行してみます。

道中を歩き、敵がいるところでは攻撃を行い、敵がない無くなったら再度歩き出してゴールまで行きクリアの動作となります。

image

今回も上手くいきました。
ここで得た内容は、if 文による分岐と、feel にぶら下がるメソッドです。

次回も頑張ります。

0 件のコメント:

コメントを投稿