Created
March 29, 2013 22:17
-
-
Save bradp/5274064 to your computer and use it in GitHub Desktop.
brad_bot_make_circles
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class BradBot < RTanque::Bot::Brain | |
NAME = 'brad_bot' | |
include RTanque::Bot::BrainHelper | |
TURRET_FIRE_RANGE = RTanque::Heading::ONE_DEGREE * 5.0 | |
def tick! | |
## main logic goes here | |
# use self.sensors to detect things | |
# use self.command to control tank | |
# self.arena contains the dimensions of the arena | |
self.make_circles | |
if we_have_target | |
target = we_have_target | |
track_target(target) | |
aim_at_target(target) | |
fire_at_target(target) | |
else | |
self.scan_with_radar | |
end | |
self.cover_fire | |
end | |
def make_circles | |
command.speed = 5 #MAX_BOT_SPEED # takes a value between -5 to 5 | |
command.heading = sensors.heading + MAX_BOT_ROTATION # or you can do something like 0.01 instead of MAX_BOT_ROTATION | |
end | |
def we_have_target | |
puts self.nearest_target | |
self.nearest_target | |
end | |
def nearest_target | |
self.sensors.radar.min { |a,b| a.distance <=> b.distance } | |
end | |
def track_target(target) | |
self.command.radar_heading = target.heading | |
self.move_towards_target(target) | |
end | |
def move_towards_target(target) | |
self.command.heading = target.heading | |
end | |
def aim_at_target(target) | |
self.command.turret_heading = target.heading | |
end | |
def fire_at_target(target) | |
if self.pointing_at_target?(target) | |
command.fire(MAX_FIRE_POWER) | |
else | |
self.cover_fire | |
end | |
end | |
def pointing_at_target?(target) | |
(target.heading.delta(sensors.turret_heading)).abs < RTanque::Heading::ONE_DEGREE * 1.5 | |
end | |
def scan_with_radar | |
self.command.radar_heading = self.sensors.radar_heading + MAX_RADAR_ROTATION | |
end | |
def cover_fire | |
command.fire(MIN_FIRE_POWER) | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment