Robocode如何让敌人坐标

时间:2014-02-28 22:52:32

标签: java robocode

我一直试图获得敌人的坐标,这样我就可以采取行动。我使用的代码似乎不起作用:

    double absBearing = e.getBearingRadians() + e.getHeadingRadians();
    double ex = getX() + e.getDistance() * Math.sin(absBearing);
    double ey = getY() + e.getDistance() * Math.cos(absBearing);

我似乎得到奇怪的回报,它给我的值大于字段的大小甚至是减号,有没有人知道如何修改这段代码来获得敌人的X和{ {1}}以同样的方式返回YX

1 个答案:

答案 0 :(得分:3)

public class MyRobot extends AdvancedRobot {
    private RobotStatus robotStatus;

    (...)

    public void onStatus(StatusEvent e) {
        this.robotStatus = e.getStatus());
    }    

    public void onScannedRobot(ScannedRobotEvent e) {
        double angleToEnemy = e.getBearing();

        // Calculate the angle to the scanned robot
        double angle = Math.toRadians((robotStatus.getHeading() + angleToEnemy % 360);

        // Calculate the coordinates of the robot
        double enemyX = (robotStatus.getX() + Math.sin(angle) * e.getDistance());
        double enemyY = (robotStatus.getY() + Math.cos(angle) * e.getDistance());
    }

    (...)
}