标签:
import robocode.AdvancedRobot; import robocode.ScannedRobotEvent; public class RadarTrace extends AdvancedRobot{ public void run(){ setTurnRadarLeft(400); execute(); } /** * 消除错误的角度 * @param errorDegree * @return */ double clearErrorDegree(double errorDegree){ errorDegree = errorDegree % 360; if(errorDegree > 180){ errorDegree = -(360 - errorDegree); } if(errorDegree < -180){ errorDegree = 360 + errorDegree; } return errorDegree; } /** * 计算雷达请转角度 * @param e * @return */ double caculateDegree(ScannedRobotEvent e){ double degree = 0.0; double heading = getHeading();//得到自己机器人的正方向 double radarHeading = getRadarHeading();//得到雷达的正方向 double bearing = e.getBearing();//从雷达事件的参数中得到敌人和自己机器人的夹角 degree = radarHeading - heading - bearing;//得到回扫角度 //处理异常角度 return clearErrorDegree(degree); } /** * 旋转雷达 * @param degree */ void turnRadar(double degree){ setTurnRadarLeft(degree * 1.3);//雷达锁定 } /** * 雷达锁定 */ void radarTrace(ScannedRobotEvent e){ //计算雷达回转角度 double degree = caculateDegree(e); //按角度旋转 turnRadar(degree); } public void onScannedRobot(ScannedRobotEvent e){ //必须让雷达跟踪住敌人 radarTrace(e); } }
标签:
原文地址:http://www.cnblogs.com/aicpcode/p/4290214.html