KCRuby is running a RTanque contest right now. I heard about this when Wes Garrison gave a presentation on Ruby at Cerner’s internal tech conference and gave a plug to KCRuby.
RTanque is a tank game where you create your own tank (a bot) and target and shoot other tanks. It is based on Robotwar that is back from the 1970s. The underlying framework for RTanque is written in Ruby and uses the Gosu library , a 2d game platform that is available for IOS and soon Android. Your bots are written in Ruby and look like this:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
class Moses < RTanque::Bot::Brain
NAME = 'Moses'
include RTanque::Bot::BrainHelper
TURRET_FIRE_RANGE = RTanque::Heading::ONE_DEGREE * 1.0
def tick!
self.evade
if(self.nearest_target)
target = nearest_target
kill(target)
else
scan
end
end
def evade
command.speed = MAX_BOT_SPEED
command.heading = sensors.heading + 0.02
end
def kill(target)
self.command.radar_heading = target.heading
self.command.turret_heading = target.heading
if self.sensors.turret_heading.delta(target.heading).abs < TURRET_FIRE_RANGE
self.command.fire(MAX_FIRE_POWER)
end
end
def nearest_target
self.sensors.radar.min { |a,b| a.distance <=> b.distance }
end
def scan
self.command.radar_heading = self.sensors.radar_heading + MAX_RADAR_ROTATION
end
end
The RTanque repo has instructions on setting the game up. You will need version 1.9.2 of Ruby or higher. By default Mac has 1.8.7 installed, so you will have to use RVM to get it going. Here is a screenshot of the actual game in action.