快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23
     // Replace the next 4 lines with any  behavior you would like             showTrack();             setTurnRadarRight(360); //让雷达不停转             execute();         }      }

好了,vector建好了,那下一步就……

请君入队

在Robocode中90%以上的外界信息来自于雷达的扫描,在这个例子里,我没有 对雷达的动作进行更细致地处理,一直让他在不停旋转,从而能更多的收集不同 敌人的信息。如果是在单挑模式中,可能采取雷达锁定目标会更加有效。

只要雷达工作正常,我们就能获取每一个敌人的信息了。当敌人的信息源源 不断地涌入我们的onScannedRobot中,我们的机器人要像一个优秀的指挥官一样 去鉴别情报,那些是已经有的,那些是没有的。如果已经存在我们则更新该对象 的属性;如果没有的话,就在向量数组中添加一个新的成员。让我们去 onScannedRobot事件里看一下吧。

/**      * onScannedRobot: What to do when you see  another robot      */      public void onScannedRobot(ScannedRobotEvent e) {         if(!isInVector(e))         {             Track myTrack=new Track();             myTrack.update(e);             trackVector.add(myTrack);         }      }

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

时间:2010-11-29 IBM 羌狼

我的myVector机器人是靠自定义方法 isInVector来判断该机器人是否存在于 向量数组中的,我们等下去看isInVector的里边。如果isInVector返回值为 false,则初始化一个Track对象,调用它的update方法来初始化敌人的信息,然 后调用Vector类型的add方法,将该对象加入到向量数组中。

在这里请大家注意的一点是:同一个Vector对象中可以存储不同类型的对象 ,这是JAVA优于C++的一点,但是切忌滥用,我们在trackVector对象中存贮的对 象都是Track类型。 好了,让我们去isInVector里边看看吧。

/**     * isInVector:自定义方法,判断该机器人是否已存在于队列中     */      public boolean isInVector(ScannedRobotEvent e)      {         int i=0;         while(i<trackVector.size())         {             Track myTrack=(Track)trackVector.get(i);             if(myTrack.Name==e.getName())             {                myTrack.update(e);                return true;             }             i++;         }         return false;      }

isInVector 方法的基本思路是,通过传进来的ScannedRobotEvent中的 getName来和vector中已经存在的对象的Name来进行比较,如果有相同的Name存 在,则说明该敌人的对象已经储存在vector中了,我们只需要简单的调用Track 类的update方法,更新信息,并返回true 就可以了。如果没有在vector中找到 同名的机器人,则返回false,交给onScannedRobot事件来将这个机器人添加到 vector中来。

这里我使用了Vector类型的size方法来得到向量数组中存在的对象的数量, 在后边我们还会用到这个方法。同时使用一个int变量来控制操作哪个对象,更 好的办法是使用迭代器,有兴趣的朋友可以参考一下《JAVA编程指南》。要得到 vector中的Track对象,则需要使用Vector 类型的get方法,它指定返回第几个 对象。注意,这里需要进行强制类型的转换。得到对象后我们就可以比较Track 的

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号