在Robocode中使用Vector实现敌人列表 - 编程入门网
// Replace the next 4 lines with any behavior you would like
showTrack();
setTurnRadarRight(360); //让雷达不停转
execute();
}
}
好了,vector建好了,那下一步就…… 请君入队 在Robocode中90%以上的外界信息来自于雷达的扫描,在这个例子里,我没有 对雷达的动作进行更细致地处理,一直让他在不停旋转,从而能更多的收集不同 敌人的信息。如果是在单挑模式中,可能采取雷达锁定目标会更加有效。 只要雷达工作正常,我们就能获取每一个敌人的信息了。当敌人的信息源源 不断地涌入我们的onScannedRobot中,我们的机器人要像一个优秀的指挥官一样 去鉴别情报,那些是已经有的,那些是没有的。如果已经存在我们则更新该对象 的属性;如果没有的话,就在向量数组中添加一个新的成员。让我们去 onScannedRobot事件里看一下吧。
在Robocode中使用Vector实现敌人列表(3)时间:2010-11-29 IBM 羌狼我的myVector机器人是靠自定义方法 isInVector来判断该机器人是否存在于 向量数组中的,我们等下去看isInVector的里边。如果isInVector返回值为 false,则初始化一个Track对象,调用它的update方法来初始化敌人的信息,然 后调用Vector类型的add方法,将该对象加入到向量数组中。 在这里请大家注意的一点是:同一个Vector对象中可以存储不同类型的对象 ,这是JAVA优于C++的一点,但是切忌滥用,我们在trackVector对象中存贮的对 象都是Track类型。 好了,让我们去isInVector里边看看吧。
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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |