ivaneeo's blog

自由的力量,自由的生活。

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks
看rrobots的一个简单的例子:

----------------------- code -----------------------
require 'robot'

class NervousDuck
   include Robot

  def tick events
    turn_radar 1 if time == 0
    turn_gun 30 if time < 3
    accelerate 1
    turn 2
    fire 3 unless events['robot_scanned'].empty?
  end
end

----------------------- code -----------------------

这里至少要实现tick方法.

下面是控制robot的一些方法和属性:

  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
  speed               #your speed (-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
  say(msg)            #shows msg above the robot on screen
  broadcast(msg)      #broadcasts msg to all bots (they recieve 'broadcasts'
                      #events with the msg and rough direction)

posted on 2006-11-18 00:33 ivaneeo 阅读(454) 评论(0)  编辑  收藏 所属分类: ruby-宝石也锋芒

只有注册用户登录后才能发表评论。


网站导航: