Sha256: 01c7c9fbf22d6d84eb29b36afdd32557440547390875c0b8c120a3ac386bb221

Contents?: true

Size: 1.13 KB

Versions: 5

Compression:

Stored size: 1.13 KB

Contents

# follows and shoots
require 'robot'

class Seeker
include Robot

  attr_accessor

  def initialize *args, &block
    @rt = @radar_scan = 10
    @min_radar_scan = 10.0
    @max_radar_scan = 30.0
    @radar_turned = false
    @min_distance = 0
    @direction = 1
    super
  end

  def tick events
    @direction = @min_distance - 175
    accelerate(@direction)
    wturn = 180 - ((radar_heading-heading)%360) + @rt*0.5
    wturn = [-10,[10,wturn].min].max
    turn wturn
    scan events
    turn_radar @rt - wturn
    fire @direction > 0 ? 0.5 : 3.0
  end

  def scan events
    if events['robot_scanned'].empty?
      increase_radar_scan
    else
      decrease_radar_scan
      @min_distance = events['robot_scanned'].min.first
    end
    @rt = if @radar_turned
            -@radar_scan
          else
            @radar_scan
          end if @radar_scan.abs < @max_radar_scan - 0.1
    @radar_turned = !@radar_turned
    @rt
  end

  def increase_radar_scan
    @radar_scan *= 1.5
    @radar_scan = [@radar_scan, @max_radar_scan].min
  end

  def decrease_radar_scan
    @radar_scan *= 0.5
    @radar_scan = [@radar_scan, @min_radar_scan].max
  end

end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
UG_RRobots-2.0 robots/Seeker.rb
UG_RRobots-1.3 robots/Seeker.rb
UG_RRobots-1.2 robots/Seeker.rb
UG_RRobots-2.2 robots/Seeker.rb
UG_RRobots-2.1 robots/Seeker.rb