快速业务通道

在Robocode中使用Vector实现敌人列表 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23

在Robocode中使用Vector实现敌人列表

时间:2010-11-29 IBM 羌狼

前言

RoboCode的混战模式中,如何更好的掌握多个对手的情况,从而采取更好的 策略,成为每一个玩家迫切需要解决的问题。而世界级的机器人大都采用了向量 (vector)数组的方式来保存多个对手的信息。

而且vector的作用不止于此,上届世界冠军Yngwie还使用vector来保存子弹 的命中率信息,为更好的决策提供依据。当然这超出了我们今天的话题,有兴趣 的朋友可以看一下Yngwie中的Enemy类和Strategy类。

好了,让我们正式开始今天的vector之旅吧,如果您对JAVA中的vector还不 是特别了解,没关系,我在最后介绍了一些关于vector的知识。

给我们的敌人排个队

熟悉JAVA的朋友都知道,vector是用来保存一系列对象的集合。今天我们用 他来保存我们的敌人的一些信息,把这些四处乱跑的家伙都抓进我们的集合还真 不是个轻松的活。孔子云:“万物皆类”。所以,我们首先要声明一个类: Track类。将我们能知道的敌人的属性全都作为这里类中的一个属性:名称、绝 对角度、敌人坦克相对于你车头方向的相对角度、距离、能量、速率和敌人坦克 所面对的方向等。这些都是通过ScannedRobotEvent对象得到的,具体的API函数 请参考Robocode的API帮助。代码如下:

/**   * Track类,保存目标的信息   */ package mytest; import robocode.*; public class Track {      public String Name; //敌人坦克的名称      //敌人的绝对角度,通过计算得出     public double Heading;      //敌人坦克相对于你车头方向的相对角度     public double Bearing;      public double Distance; //敌人坦克的距离      public double Energy; //能量      public double Velocity; //速率      public double FaceHeading; //敌人坦克面向的方向      public double trackX,trackY; //敌人坦克的坐标     //下一个标准时间中敌人坦克所在的位置    public double nextTrackX,nextTrackY;      public void update(ScannedRobotEvent e)      {         Name=e.getName(); //敌人坦克的名称         Bearing=e.getBearing(); //敌人坦克相对于你车头方向的 相对角度         Distance=e.getDistance(); //敌人坦克的距离         Energy=e.getEnergy(); //能量         Velocity=e.getVelocity(); //速率         FaceHeading=e.getHeading(); //敌人坦克面向的方向      } }

在Robocode中使用Vector实现敌人列表(2)

时间:2010-11-29 IBM 羌狼

在战场上,一个优秀的指挥官会很好的利用他手头有限的信息,而我们的信 息都来自于雷达找到敌人后产生的ScannedRobotEvent事件,至于我们能得到哪 些信息,看上边的注释好了,不多解释了。

下一步就是如何把已经现身在雷达中的敌人抓到一个vector里去了,让我们 回到我们的机器人主体中去:派生自AdvancedRobot 类的MyVector类中。

首先,声明一个vector类型,并在run中进行初始化。

public class MyVector extends AdvancedRobot {      final double version=0.1; //版本号      private Vector trackVector; //声明我们的向量数组      /**      * run: MyVector''s default behavior      */      public void run() {         out.println("myVector Version is  "+version);         trackVector=new Vector(); //初始化我们的向量数组         while(true) {        

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号