几个要点:

1.这是一个回合制游戏,每次都只能执行一个动作,所以游戏中会出现很多if elsif判断语句,同时不能用while之类的高级语法。经测试,好像数组的length也不能正常使用

2.有关方位的方法,都能传入 :backward 值。 

3.这个游戏中的数组好像是1开始的,经测试

————————————————————————

第五关:

 1 class Player
 2   @health = 20
 3   def play_turn(warrior)
 4     if warrior.feel.empty?
 5     #没有远程攻击时,停下回血     
 6       if warrior.health < 15
 7         if @health <= warrior.health
 8           warrior.rest!          
 9         else
10           warrior.walk!
11         end
12     #有远程攻击时,继续前行
13       else
14         warrior.walk!
15       end
16     elsif warrior.feel.captive?
17       warrior.rescue!
18     else
19       warrior.attack!
20     end
21     
22     @health = warrior.health
23   end
24 end

 

第六关:

 1 class Player
 2   @health = 20
 3   def play_turn(warrior)
 4     if warrior.feel.empty?
 5       if warrior.health < 20 #如果残血
 6           if @health > warrior.health && warrior.health > 10 #遭受远程攻击
 7             warrior.walk!
 8           elsif warrior.feel(:backward).empty?
 9             warrior.walk!:backward
10           elsif warrior.feel(:backward).captive?
11             warrior.rescue!:backward
12           else
13             warrior.rest!
14           end
15       else
16         warrior.walk!
17       end
18     elsif warrior.feel.captive?
19       warrior.rescue!
20     else
21       warrior.attack!
22     end
23     
24     @health = warrior.health
25   end
26 end

第八关:(非当时代码,后来补写的)

 1 class Player
 2   def play_turn(warrior)
 3       if warrior.feel.empty?
 4         if warrior.look[1].enemy?
 5            warrior.shoot!
 6         else
 7           warrior.walk!
 8         end
 9       elsif warrior.feel.captive?
10           warrior.rescue!       
11       end
12   end
13 end

 

第九关:

 1 #这游戏挺简单的,实在不行,直接按回合制写就行了。
 2 #它本身就是回合制的游戏,每次只能有一次动作,但是很多次判断
 3 class Player
 4   @health = 20
 5   def play_turn(warrior)
 6     #向后
 7     if warrior.look(:backward)[2].enemy?
 8       warrior.shoot!(:backward)
 9    elsif warrior.health < 20 && @health <= warrior.health #没有遭受攻击就地回血
10      warrior.rest!
11     #向前
12     elsif warrior.look[1].captive?
13       warrior.walk!
14     elsif warrior.look[1].enemy?
15       warrior.shoot!
16     #如果遭受攻击,就回击
17     elsif @health > warrior.health
18       warrior.shoot!
19     elsif warrior.feel.empty?
20       warrior.walk!
21       
22     #解救人质
23     elsif warrior.feel.captive?
24       warrior.rescue!
25     elsif warrior.feel.wall?
26       warrior.pivot!
27     end
28     
29     @health = warrior.health
30   end
31 end