Rubywarrior Level 4(清理我的代码帮助)
我正在通过Ruby学习编程,我从Railscasts的Ryan Bates那里找到了令人敬畏的Rubywarrior。 不幸的是,我被困在我的代码中抛出了语法错误消息(意外的$ end)。
我不是要求答案,我想自己解决这个问题,但如果有人能够指出我的代码在哪里得到错误,那将是超级的。 谢谢!
class Player def initialize @maxhealth = 20 @dying = 7 @previoushealth = @maxhealth @health = warrior.health @warrior = warrior end def play_turn(warrior) # If there are no enemies, rest until health is 100% turn_start_check(warrior) actions(warrior) turn_end_check(warrior) end def actions(warrior) if @damaged_since_last_turn warrior.shoot! elsif @health < @maxhealth warrior.rest! else warrior.walk! end end def hurt?(warrior) warrior.health warrior.health end def turn_end_check(warrior) @previoushealth = warrior.health end end
我猜:
def should_i_move?(warrior) if healthy? and alone? warrior.rest! else warrior.walk! end # <
该错误消息意味着您在某处丢失了end
关键字。 检查您的代码,看看您的所有陈述是否都写得正确。
使用Ruby 1.9.3,如果打开警告,则会收到以下警告:
-:46: warning: mismatched indentations at 'end' with 'if' at 42 -:57: warning: mismatched indentations at 'end' with 'def' at 41
然后是错误
-:57: syntax error, unexpected $end, expecting keyword_end
第46行对应def should_i_move?(warrior)
后的第一个end
def should_i_move?(warrior)
这应该适用于早期版本的Ruby 1.9。