Robocode坦克机器人源代码2

2020-03-26 21:53

package FlyE;

/**

*东师范大学

*山信息科学与工程学院 * 王赛

*Blog:http://blog.sina.com.cn/u/1878725434 * * * * * * */

import java.awt.Color;

import java.awt.geom.Point2D;

import robocode.*;

import robocode.util.Utils;

public class FlyE extends AdvancedRobot{ /** * 扫描到敌人的时间

*/

private double time1 = 0;

private Enemy enemy = new Enemy();

private boolean discover = false; //敌人是否被发现的属性 private double heading = 0.0; private double radarHeading = 0.0; public double bPower = 2;

private double distance = 800;//敌人即将到的距离 private double time ;

public void onScannedRobot(ScannedRobotEvent e){

discover = true ;

preTime1 = time1;//保存之前扫描到的时间 time1= getTime();//保存当前扫描到的时间

//初始化敌人

enemy.setBearing(e.getBearingRadians());

preHeading1 = enemy.getHeading();//之前扫描到敌人的 heading/// enemy.setHeading(e.getHeadingRadians());

}

enemy.setSpeed( e.getVelocity()); enemy.setDistance(e.getDistance());

time = distance / Rules.getBulletSpeed(bPower);

/**

* 子弹相撞时 */

public void onBulletHitBullet(BulletHitBulletEvent event) { bPower = 0.5; } /**

* 坦克相撞时 */

public void onHitRobot(HitRobotEvent event){ if(getRadarTurnRemainingRadians() <( 0.01) ){ setTurnRadarLeftRadians((Math.PI ) + 0.35);

setBack(20); }

} /**

* 被子弹击中时,??>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>需要继续改进

<<<<<<<<<<<<<<<<<<<<<<< */

public void onHitByBullet(HitByBulletEvent e){ if(getDistanceRemaining() < 1){ setAhead(6);

execute(); } //scan();

} /** * 打扮 */

private void dressing(){ setBodyColor(Color.black);

setRadarColor(Color.yellow); setBulletColor(Color.red); setScanColor(Color.GREEN);

} /**

* 车炮和雷达分离 */

private void severance(){ } /**

* 移动 */

private void movement(){

//随机选点摆脱敌人算法

if(getDistanceRemaining()< 1 ){ double nx = 0;

double ny = 0;

double safDis =68 ;

//随机生成的x,y坐标

nx = Math.random() * (getBattleFieldWidth() - 2 * safDis)+ safDis; ny = Math.random() * (getBattleFieldHeight() - 2 * safDis)+ safDis;

double headArg = (90 - Math.atan2(ny - getY(), nx - getX()));// 计算我们车身要旋headArg = Utils.normalAbsoluteAngle(headArg);

double dis = Point2D.distance(getX(), getY(), nx, ny);// 计算我们的机器人移动的

if (headArg - getHeadingRadians() >= Math.PI / 2) { setTurnRightRadians(headArg - getHeadingRadians() + Math.PI); setAhead(dis); } else { }

setTurnRightRadians(headArg - getHeadingRadians()); setAhead(-dis);

setAdjustGunForRobotTurn(true); setAdjustRadarForGunTurn(true); setAdjustRadarForRobotTurn(true);

转的角度 距离

}

//来回摆动拜托敌人算法 /*

double safDis = 68;

-safDis))) ){

double ex = getX();// 自己目前的X坐标 double ey = getY();// 自己目前的Y坐标 double battleh = getBattleFieldHeight(); double battlew = getBattleFieldWidth();

//if 选择垂直半径方向,切线圆周移动 else选择随机选择安全点移动

if(((ex >= safDis)&&(ex<= (battlew -safDis)))&&((ey >= safDis)&&(ey<= (battleh if(getDistanceRemaining()< 1 ){ double increment = 0;

if (enemy.getBearing() > 0) { increment = Math.PI / 2 - enemy.getBearing();

setTurnLeftRadians(increment);

} else { increment = Math.PI / 2 + enemy.getBearing(); setTurnRightRadians(increment); }

double forba = (int) (Math.random()*200);

forba = forba - 50;

System.out.println(Math.random()*200);

setBack(forba); execute();

} } else { double halfw = battlew / 2 ;//获得战场中心x double halfh = battleh / 2 ; //获得战场中心x

double heading = getHeadingRadians(); // 获得自己的方向角 double a = Math.atan2(halfh-ex, halfw - ey); a = Math.PI - heading - a; // 车身转过的角度 if(getTurnRemainingRadians() <= 0.2){ setTurnRightRadians(a); execute();

if(getTurnRemainingRadians() <= 0.0){

} /**

} */

}

}

setBack(4);

//setAhead(2); execute();

if(((ey >= safDis)&&(ey<= (battleh -safDis)))) { }

setAhead(5);

//setTurnLeft(90); execute();

* 雷达锁定 */

private void doScan(){ } /*

* 选择火力 */

private double firePower() { if(enemy.getDistance() <= 280)

bPower = 3; /*

else if ((178 < enemy.getDistance())&&( enemy.getDistance()<= 280)){ //判断是否扫描到敌人 if(discover){ }

//计算雷达旋转地角度

heading = this.getHeadingRadians();

radarHeading = this.getRadarHeadingRadians();

double temp = radarHeading - heading - enemy.getBearing(); //处理异常角度

temp = Utils.normalRelativeAngle(temp); temp *= 1.3;

//设置机器人的雷达回扫

setTurnRadarLeftRadians(temp); //开始执行机器人初始的设置


Robocode坦克机器人源代码2.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:DAEMON Tools Pro(虚拟光驱)v5.1.0.333 中文特别版

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: