rrobots
Home
Rules
Examples
Screenshots
Download
Forum
Rubyforge

Rules

The first rule of Fight Club is - you do not talk about Fight Club.
The second rule of Fight Club is - you DO NOT talk about Fight Club.
Third rule of Fight Club, someone yells Stop!, goes limp, taps out, the fight is over.
Fourth rule, only two guys to a fight.
Fifth rule, one fight at a time, fellas.
Sixth rule, no shirt, no shoes.
Seventh rule, fights will go on as long as they have to.
And the eighth and final rule, if this is your first night at Fight Club, you have to fight.
[Tyler Durden]

By including Robot you get all this methods to controll your bot:
  battlefield_height  #the height of the battlefield
battlefield_width #the width of the battlefield
energy #your remaining energy (if this drops below 0 you are dead)
gun_heading #the heading of your gun, 0 pointing east, 90 pointing
#north, 180 pointing west, 270 pointing south
gun_heat #your gun heat, if this is above 0 you can't shoot
heading #your robots heading, 0 pointing east, 90 pointing north,
#180 pointing west, 270 pointing south
size #your robots radius, if x <= size you hit the left wall
radar_heading #the heading of your radar, 0 pointing east,
#90 pointing north, 180 pointing west, 270 pointing south
time #ticks since match start
velocity #your velocity (-8/8)
x #your x coordinate, 0...battlefield_width
y #your y coordinate, 0...battlefield_height
accelerate(param) #accelerate (max speed is 8, max accelerate is 1/-1,
#negativ speed means moving backwards)
stop #accelerates negativ if moving forward (and vice versa),
#may take 8 ticks to stop (and you have to call it every tick)
fire(power) #fires a bullet in the direction of your gun,
#power is 0.1 - 3, this power will heat your gun
turn(degrees) #turns the robot (and the gun and the radar),
#max 10 degrees per tick
turn_gun(degrees) #turns the gun (and the radar), max 30 degrees per tick
turn_radar(degrees) #turns the radar, max 60 degrees per tick
dead #true if you are dead

These methods are intentionally of very basic nature, you are free to unleash the whole power of ruby to create higher level functions (e.g. move_to, fire_at and so on). You are not allowed however to read, write or use in any way information not resolved from the above methods (like using ObjectSpace and so on).

Some words of explanation: The gun is mounted on the body, if you turn the body the gun will follow. In a simmilar way the radar is mounted on the gun. The radar scans everything it sweeps over in a single tick (100
degrees if you turn your body, gun and radar in the same direction) but will report only the distance of scanned robots, not the angle. If you want more precission you have to turn your radar slower.