I just ventured into the dungeons of the Ruby Warrior and spent an hour of my life that I can not get back, but would like to if that is at all possible. What a great time to be writing ruby, to program a knight, in a live dungeon.
I made it to Level 7 before my code was so complex that refactoring is inevitable. I count at least infinity code smells in this. Flags, single method, no intentional behavior, no single responsibility. I am considering some UI testing tool to prove that I can pass each level with the same codebase.
Good times.
class Player
def play_turn(warrior)
if !warrior.feel(:backward).empty?
if warrior.feel(:backward).captive?
warrior.rescue! :backward
@saved_captive = true
else
warrior.attack! :backward
end
elsif !warrior.feel.empty?
if warrior.feel.captive?
warrior.rescue!
@saved_captive = true
else
warrior.attack!
end
elsif warrior.health < 20
if warrior.health < @health
if warrior.health < 12
warrior.walk! :backward
else
warrior.walk!
end
else
warrior.rest!
end
else
if @saved_captive
warrior.walk!
else
warrior.walk! :backward
end
end
@health = warrior.health
end
end
No comments:
Post a Comment