几个要点:
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