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