在Robocode中操纵Vector实现仇人列表[Java编程]
本文“在Robocode中操纵Vector实现仇人列表[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
前言
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实现仇人列表[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |