六、Robocode 中的不同的坦克种类
在Robocode的包中一共定义了3种机器人类,AdvancedRobot, Robot, JuniorRobot。分别代表了不同的复杂
等级,复杂等级为AdvancedRobot> Robot> JuniorRobot
还有一个TeamRobot类,可以用来创造一个机器人团队。
七、Robocode参考代码
package test;
import robocode.*;
import java.awt.Color;
public class test extends AdvancedRobot{
double movementDirection=1;//定义躲避时的方向
double previousEnergy = 100;//定义敌人的初始能量值
Enemy target;//定义敌人
final double PI = Math.PI;//创建常量PI
int direction = 1; //向前方向值为1,向后为-1
double firePower;//定义开火时使用的火力
public void run() {
target = new Enemy();//创建一个敌人的实例
target.distance = 100000; //初始化敌人的距离,以便选择目标
setBodyColor(Color.white);//设置坦克主体的颜色
setGunColor(Color.white);//设置炮管的颜色
setRadarColor(Color.white);//设置雷达的颜色
setBulletColor(Color.white);//设置子弹的颜色
setScanColor(Color.white);//设置雷达扫描区域的颜色
setAdjustGunForRobotTurn(true);//使枪和坦克独立开
setAdjustRadarForGunTurn(true);//使枪和雷达独立开
turnRadarRightRadians( 2 * PI); //使雷达转过一圈看是否有别的坦克
//此处的避墙功能没做完
/*addCustomEvent(new Condition("NearWall"){
public boolean test(){
if((getX()<=50)||(getX()>=getBattleFieldWidth()-50)||(getY()<=50)||(getY()>getBattleFieldHeight()-50)){
out.println("true");
return true;
}else{
out.println("false");
return false;
}
};
});*/
while(true){
doMovement(); //移动坦克
doFirePower();//选择适当的火力
doScanner(); //扫描别的坦克
doGun(); //把枪移动到敌人预计会出现
的地方
//out.println(target.distance);
fire(f
irePo
wer);
//
据距离选择火力并开火
execute(); //执行以上所有的命令
}
}
void doFirePower(){
firePower = 400/target.distance;//基于目标的远近程度改变子弹的能量
}
void doMovement(){
if (getTime()%20 == 0) {
//每20个时间间隔执行一次
direction *= -1; //反向运动
setAhead(direction*300); //前后运动
}
setTurnRightRadians(target.bearing + (PI/2));
}
void doScanner() {
double radarOffset;
评论0