获取当前帧的敌人的位置和自己的位置以及射击的角度,子弹的速度
每一帧获取一次
当有足够多的数据后,根据当前的位置和角度,获取之前最有可能打中地方的攻击方式。
Robocode 模式匹配和随机移动
波保存敌人的起始点、自己的起始点、与敌人的绝对夹角、敌人的距离、发现敌人的时间、射击角度、速度的水平分量、速度的垂直分量
“波”统计瞄准算法进行模式匹配
直线瞄准以及圆周瞄准算法都是全匹配算法
我们将拥有超级机器人“波”统计瞄准算法与直线瞄准和圆周瞄准算法的机器人进行比拼
//传播波的算法
package
com.xalead.superrobot;
import
java.awt.geom.Point2D;
import
robocode.AdvancedRobot
;
import
robocode.Condition;
import
robocode.Rules;
import
robocode.util.Utils;
import
com.xalead.superrobot.model.Battle;
public
class
Wave
extends
Condition{
//自己的起始点坐标
private
Point2D.Double
myStartPos
=
null
;
//创建这个波时敌人的绝对夹角
private
double
absBearing
= 0;
//发现敌人的时间
private
double
startTime
;
//敌人的距离
private
double
dist
;
//速度垂直分量
private
double
adSeg
;
//速度的水平分量
private
double
velSeg
;
//这个值只有当波碰到敌人时才能产生
private
double
angle
;
//战场模型的引用
private
Battle
battle
=
null
;
//执有机器人的引用
private
WaveSurfing
robot
=
null
;
public
Wave(){}
public
Wave(Battle battle){
this
.
battle
= battle;
robot
= (WaveSurfing)battle.getRobot();
}
public
Point2D.Double getMyStartPos() {
return
myStartPos
;
}
public
void
setMyStartPos(Point2D.Double myStartPos) {
this
.
myStartPos
= myStartPos;
}
public
double
getAbsBearing() {
return
absBearing
;
}
public
void
setAbsBearing(
double
absBearing) {
this
.
absBearing
= absBearing;
}
public
double
getStartTime() {
return
startTime
;
}
public
void
setStartTime(
double
startTime) {
this
.
startTime
= startTime;
}
public
double
getDist() {
return
dist
;
}
public
void
setDist(
double
dist) {
this
.
dist
= dist;
}
public
double
getAdSeg() {
return
adSeg
;
}
public
void
setAdSeg(
double
adSeg) {
this
.
adSeg
= adSeg;
}
public
double
getVelSeg() {
return
velSeg
;
}
public
void