Robocode学习笔记(四)
上一次我所提到的躲避方法,确实存在一点问题。对方子弹一发射,我的Bot就移动,并且这个移动是规律的来回移动。如果移动距离短了,就可能在回来的时候撞到对方的子弹;如果移动距离长了,就等于做一个直线运动,对方很容易计算得到Bot的运动轨迹。还有一个问题,躲避的时候很有可能撞到墙上……(撞墙是要减energy的:~()
针对以上的问题,我另写了一个Bot。代码如下:
import Robocode.*;
public class HanicBot extends AdvancedRobot{ private double eDist; //对方的距离 private double move; //移动的距离 private double radarMove = 45; //雷达移动的角度 private double dFirePower; //火力
/** * main func run() */ public void run() { eDist = 300; while(true){ //每过一个周期,运动随机的距离 double period = 4*((int)(eDist/80)); //周期;敌人越接近,周期越短,移动越频繁 //周期开始,则移动 if(getTime()%period == 0){ move = (Math.random()*2-1)*(period*8 - 25); setAhead(move ((move >= 0) ? 25: -25)); } //避免撞墙 double heading = getHeadingRadians(); //取得bot方向的弧度数 double x = getX() move*Math.sin(heading); //移动move后将要达到的x坐标 double y = getY() move*Math.cos(heading); //移动move后将要达到的y坐标 double dWidth = getBattleFieldWidth(); //战场的宽度 double dHeight = getBattleFieldHeight(); //战场的长度 //当(x,y)超过指定的范围,则反向移动move if(x < 30 || x > dWidth-30 || y < 30 || y > dHeight-30){ setBack(move); } turnRadarLeft(radarMove); //转动雷达 } }//end run()
您可能感兴趣的文章:
Robocode学习笔记(四)
Robocode学习笔记(三)
J2EE学习笔记--MVC框架
Struts 学习笔记之Action
J2SE学习笔记--集合框架
php入门篇-php学习笔记
webwork学习笔记
photoshop设计父亲节主题粉笔画效果制作教程
学习笔记之JAVA图形设计卷I AWT——第3章 图 形
怎么用python实现画爱心