Informatikunterricht

am Gymnasium Kirchenfeld

Benutzer-Werkzeuge

Webseiten-Werkzeuge


robocode:target-linear-1

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
robocode:target-linear-1 [2015/03/23 13:51] rosrobocode: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, wo sich der Roboter befinden wird, wenn er gleichförmig weiterfährt. Wenn sich der gegnerische Roboter bewegt, befindet er sich nicht mehr am gleichen Ort, wenn das Geschoss diesen erreicht. Ein Ansatz ist, auszurechnen, wo sich der Roboter befinden wird, wenn er gleichförmig weiterfährt.
 +
 +{{robocode.pdf|Die Mathematik}} (PDF)
  
 <code java> <code java>
- final double FIREPOWER = 2.0;+public void onScannedRobot(ScannedRobotEvent e) { 
 +    final double FIREPOWER = 2.0;
     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(); +    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();+    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) {
-     // Keine Loesung vorhanden, Ende+        // Keine Loesung vorhanden, Ende
         return;         return;
     }     }
Zeile 59: Zeile 62:
     y = Math.max(ROBOT_HEIGHT, Math.min(y, getBattleFieldHeight() - ROBOT_HEIGHT));     y = Math.max(ROBOT_HEIGHT, Math.min(y, getBattleFieldHeight() - 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("xE= " + xE + ", yE= " + yE + ", x=" + x + ", y= " + y + ", aimAt=" + aimAt); 
     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)