快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23
Name和ScannedRobotEvent的getName()是否相同了。

敌人不见了

在 Robocode的战场上,杀戮与被杀的几率是相同的。不知道大家想过没有, 如果一个敌人被干掉了,他的对象还保存在我们的vector中!如果我们的火控系 统偏巧选中了他来作为下一个攻击目标的话……不用担心,如果我的机器人真那 么傻,他恐怕等不到别人被杀的情况。很简单,我们只需要在 onRobotDeath事 件中调用Vector类型的remove方法。Remove方法是用来删除指定位置上的对象的 。下面代码的基本思路和 isInVector是一样的。显示如下:

/**     * onScannedRobot:有机器人被消灭时产生该事件     */      public void onRobotDeath(RobotDeathEvent event)      {         int i=0;         while(i<trackVector.size())         {             Track myTrack=(Track)trackVector.get(i);             if(myTrack.Name==event.getName())             {                trackVector.remove(i);             }             i++;         }      }

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

时间:2010-11-29 IBM 羌狼

显示敌人的距离

我们这么辛苦地保存了战场上所有敌人的信息后,由myVector在每个基本时 间里报告每个机器人距我们的距离。但这里应该注意的是,myVector报告的距离 是我们的雷达最后一次看到敌人时的距离,敌人很可能已经移动了。正如一位物 理学家所说:“我们无法预测未来是因为我们无法看到真实的现在。”

我在run的while中调用了下面的函数,用来显示当前的时间、敌人的数量及 每个敌人与我们的距离。对数量的计算用到了Vector 的size方法。

/**     * 自定义函数:显示当前敌人的距离     */    public void showTrack()    {        int i=0;         out.println("This Time is "+getTime());         out.println("Track''s count is "+trackVector.size ());         while(i<trackVector.size())         {             Track myTrack=(Track)trackVector.get(i);             out.println(myTrack.Name+"''s Distance is  "+myTrack.Distance);             i++;         } }

好了,一个简单的使用vector来保存敌人信息的机器人完成了,你可以在这 里下载他的代码。在这里我们的机器人仅仅是将敌人的距离显示了出来,但是, 实战中我们可以通过对这些信息的分析,来确定下一个攻击目标,比如最近的一 个。这就要看你的发挥了。我在这里提供的机器人可以说是很幼稚的,甚至公然 违反了一些面向对象编程的原则,比如把类中的元素直接声明成public。这些问 题请大家在编码的过程中避免。我在这里想说明的是,在Robocode中你可以使用 任何的JAVA技术,让你的机器人更强大。

下面是我写的机器人myVector输出测量结果时的情况,大家可以看到Time2和 Time3时的情况是不同的,在Time2时,雷达只扫描到了Crazy和Fire两个敌人; Time3的时候雷达又发现了Corner。当有机器人被消灭的时候,Vector中的对象 会马上被删除。大家如果有兴趣可以从下面找到myVector的源代码(resource), 大家可以亲自实验一下。

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

时间:2010-11-29 IBM 羌狼

Vector基本概念

最后,我来为不十分熟悉JAVA的朋友来简单讲解一些Vector的基础知识,熟 悉这些内容的朋友可以跳过。

Vector 类型定义了Object 类

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