Ruby Warrior
行動が一回という制限が厳しくて、
行動と評価を別にするしかなかった。
eachをつかえてよかった。
class Player def play_turn(warrior) @walk_flag = warrior.feel.empty? @health = warrior.health @captive_flag =warrior.feel.captive? @Bcaptive_flag = warrior.feel(:backward).captive? @back_flag = warrior.feel(:backward).empty? @wall_flag = warrior.feel.wall? @enemy_flag = warrior.feel.enemy? @look = warrior.look @lookback = warrior.look:backward #back_flag if @back_flag == true if @walltouch_flag == false @back_flag =false elsif @Brescued_flag == true @back_flag = false else @walk_flag =false end end #shootback_flag @lookback.each {|space| if space.enemy? @shootback_flag = true else @shootback_flag = false end } #shoot_flag @look.each {|space| if space.enemy? @shoot_flag = true else @shoot_flag = false end } #lookcaptive_flag @look.each {|space| if space.captive? @shoot_flag = false end } #attack_flag if @enemy_flag == true @back_flag = false end #restflag if @walk_flag == true if @health < 20 @rest_flag = true @walk_flag = false else @rest_flag = false end end #ashe_flag if @rest_flag == true if @health < @resthealth @rest_flag =false @walk_flag = true end end #rescue_flag if @walk_flag == false if @captive_flag == true @rescue_flag = true else @rescue_flag = false end end #Brescue_flag if @back_flag == false if @Bcaptive_flag == true @Brescue_flag = true @walk_flag = false else @Brescue_flag = false end end if @shootback_flag == true warrior.shoot!:backward elsif @shoot_flag == true warrior.shoot! elsif @walk_flag == true warrior.walk! elsif @wall_flag == true warrior.pivot! elsif @rescue_flag == true warrior.rescue! elsif @Brescue_flag == true warrior.rescue!:backward @Brescued_flag = true elsif @back_flag == true warrior.walk!:backward @walltouch_flag = warrior.feel(:backward).wall? elsif @rest_flag == true warrior.rest! else warrior.attack! end @resthealth = warrior.health end end