From: "Simon Kröger" Date: 2005-11-26T08:49:58+09:00 Subject: Re: RRobots - ducks, armed and dangerous I wasted my time creating my first real bot (should have fixed more bugs instead) and named it quite arrogant 'Killer': (found one very anoying bug with the scanner pointing east, fixed it, new version v0.1.3) ------------------------------------------------------------------- require 'robot' class Killer include Robot def min_max value, m value-= 360 if value > 180 value+= 360 if value < -180 value = -m if value < -m value = m if value > m return value end def tick events @dist = 1000 if @dist.nil? @target_heading = 0 if @target_heading.nil? @radar_range = 60 if @radar_range.nil? @approach = false if @approach.nil? if !events['robot_scanned'].empty? @dist = events['robot_scanned'].first.first @target_heading = (radar_heading - @radar_range * 0.5 + 360.0) % 360 if @radar_range.abs < 10 @radar_range = (@radar_range.abs > 0.5) ? -@radar_range * 0.5 : -@radar_range else @radar_range *= -2 if (@radar_range.abs < 60) end fire 3 if @radar_range.abs < 10 @approach = true if (@dist < 200 || @dist > 500) @approach = false if (@dist > 250 && @dist < 300) if @approach turn_body = min_max(@target_heading - heading, 10) accelerate(@dist > 275 ? 1 : -1) else turn_body = min_max(@target_heading - heading + 90, 10) accelerate((time / 100) % 2 * 2 - 1) end gun = min_max(@target_heading - gun_heading - turn_body, 30) radar = min_max(@radar_range - gun - turn_body, 60) turn(turn_body) turn_gun(gun) turn_radar(radar) end end ------------------------------------------------------------------- cheers Simon