教你玩Robocode(3) —— 坦克基础知识

来源:互联网 发布:泰拉瑞亚手机联机软件 编辑:程序博客网 时间:2024/05/01 21:38

在Robocode中,坦克分为3个部件: 身体(Body)、炮塔(Gun)、雷达(Radar)。

image

因此,在Robot类(还记得吗,它是任何坦克的父类)中,有对这些部件操作的方法。

要查看Robocode提供的API,可以在robocode目录下的javadoc下找到,也可以在Robocode程序的帮助菜单中找到:

image

对于Body来说,Robot类提供了4个方法:

ahead(double distance)  //向前移动指定距离

back(double distance)    //向后移动指定距离

turnLeft(double degrees)  //左转指定角度

turnRight(double degrees) //右转指定角度

对于Gun来说,提供了两个旋转方法和一个开火方法:

turnGunLeft 、turnGunRight

fire(double power)  //开炮,参数power指定开炮能量(0-3),关于开炮能量和其它参数的关系我们后面的文章会讨论到

对于Radar来说,提供了两个旋转方法:

turnRadarLeft、turnRadarRight.

在默认情况下,车身旋转会带动炮塔转动,炮塔转都会带动雷达转动。

在Robot类中,还提供了一些事件处理方法,下面列出最重要的一些:

onScannedRobot(ScannedRobotEvent event) //当雷达扫描到敌人的时候触发此事件

onBulletHit(BulletHitEvent event) //当你收到敌人攻击时,会触发此事件

最后要强调一点是,你往往需要在run方法中写一个死循环来重复的执行你指定的动作,在死循环前,你可以做些初始化动作,如:

setColors(Color.red,Color.blue,Color.green); //设置Body、GUn、Radar颜色
while(true) {
    // Replace the next 4 lines with any behavior you would like
    ahead(100);
    turnGunRight(360);
    back(100);
    turnGunRight(360);
}

另外,还需要注意的是,Robot类中提供的所有动作方法都是阻塞式的。比方说,ahead(100)方法必须要等坦克执行完移动动作后,才会返回。

有了这些知识,你已经能做一个“笨笨的”坦克了。动手试试吧!

原创粉丝点击