Java Robocode 以示例wall为基准的一个坦克

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/twentyonepilots/article/details/80919175
package hit;
import robocode.HitRobotEvent;
import robocode.Robot;
import robocode.ScannedRobotEvent;
import java.awt.*;

public class HIT1172800111 extends Robot {

    boolean flag; 
    double num; 
    public void run() {
        setBodyColor(Color.blue);
        //设置坦克颜色
        setGunColor(Color.green);
        //设置炮塔颜色
        setRadarColor(Color.pink);
        //设置雷达颜色
        setScanColor(Color.red);
        //设置扫描区域颜色
        setBulletColor(Color.white);
        //设置子弹颜色

        flag = false;
        //初始化flag
        num = Math.max(getBattleFieldWidth(), getBattleFieldHeight());
        //初始化可一直移动的最大值
        turnLeft(getHeading() % 90);
        //调整角度,使坦克运动与墙平行
        ahead(num-1);
        //前进直到墙,但不要撞到墙
        flag= true;
        //标志坦克到达接近墙的位置
        turnGunRight(90);
        //炮塔旋转
        turnRight(90);
        //坦克旋转

        while (true) {    //循环
            flag = true;
            ahead(num-1);
            //前进直到墙,但不要撞到墙
            flag = false;
            turnRight(90);
            //到达墙之后旋转
        }
    }

    public void onHitRobot(HitRobotEvent e) {   //防撞坦克
        if (e.getBearing() > -90 && e.getBearing() < 90) {
            back(100);
            //防御性后退
        } 
        else {
            ahead(100);
            //防御性前进
        }
    }

    public void onScannedRobot(ScannedRobotEvent e) {
        fire(2);
        //雷达识别成功后开火
        if (flag) {
            scan();
            //行进时扫描
        }
    }
}

猜你喜欢

转载自blog.csdn.net/twentyonepilots/article/details/80919175