robocode:target-linear-1
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
robocode:target-linear-1 [2015/03/23 13:51] – ros | robocode:target-linear-1 [2020/10/13 14:25] (aktuell) – Externe Bearbeitung 127.0.0.1 | ||
---|---|---|---|
Zeile 2: | Zeile 2: | ||
Wenn sich der gegnerische Roboter bewegt, befindet er sich nicht mehr am gleichen Ort, wenn das Geschoss diesen erreicht. Ein Ansatz ist, auszurechnen, | Wenn sich der gegnerische Roboter bewegt, befindet er sich nicht mehr am gleichen Ort, wenn das Geschoss diesen erreicht. Ein Ansatz ist, auszurechnen, | ||
+ | |||
+ | {{robocode.pdf|Die Mathematik}} (PDF) | ||
<code java> | <code java> | ||
- | final double FIREPOWER = 2.0; | + | public void onScannedRobot(ScannedRobotEvent e) { |
+ | | ||
final double ROBOT_WIDTH = 16.0; | final double ROBOT_WIDTH = 16.0; | ||
final double ROBOT_HEIGHT = 16.0; | final double ROBOT_HEIGHT = 16.0; | ||
- | double headingToRobot = getHeading() + e.getBearing(); | + | |
- | // Bekannte Werte bestimmen | + | // Bekannte Werte bestimmen |
double xB = getX(); | double xB = getX(); | ||
double yB = getY(); | double yB = getY(); | ||
Zeile 16: | Zeile 19: | ||
double yE = yB + e.getDistance() * Math.cos(Math.toRadians(headingToRobot)); | double yE = yB + e.getDistance() * Math.cos(Math.toRadians(headingToRobot)); | ||
double vE = e.getVelocity(); | double vE = e.getVelocity(); | ||
- | double phiE = e.getHeading(); | + | |
// Konstanten A bis D bestimmen | // Konstanten A bis D bestimmen | ||
double A = (xE - xB) / vB; | double A = (xE - xB) / vB; | ||
Zeile 29: | Zeile 32: | ||
double d = b*b - 4*a*c; | double d = b*b - 4*a*c; | ||
if (d < 0) { | if (d < 0) { | ||
- | | + | |
return; | return; | ||
} | } | ||
Zeile 59: | Zeile 62: | ||
y = Math.max(ROBOT_HEIGHT, | y = Math.max(ROBOT_HEIGHT, | ||
double aimAt = Math.toDegrees(Math.atan2(x - xB, y - yB)); | double aimAt = Math.toDegrees(Math.atan2(x - xB, y - yB)); | ||
- | System.out.println(" | ||
turnGunRight(Utils.normalRelativeAngleDegrees(aimAt - getGunHeading())); | turnGunRight(Utils.normalRelativeAngleDegrees(aimAt - getGunHeading())); | ||
fire(FIREPOWER); | fire(FIREPOWER); |
robocode/target-linear-1.1427115073.txt.gz · Zuletzt geändert: 2020/10/13 14:25 (Externe Bearbeitung)