Informatikunterricht

am Gymnasium Kirchenfeld

Benutzer-Werkzeuge

Webseiten-Werkzeuge


robocode:anti-gravity

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:anti-gravity [2015/03/30 14:26] rosrobocode:anti-gravity [2020/10/13 14:25] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 14: Zeile 14:
  
 Bevor die Kräfte ausgerechnet werden können, müssen zuerst die Positionen der Roboter bekannt sein. Dies kann mittels [[tracking]] erreicht werden. Bevor die Kräfte ausgerechnet werden können, müssen zuerst die Positionen der Roboter bekannt sein. Dies kann mittels [[tracking]] erreicht werden.
 +
 +==== 2. Kräfte Berechnen ====
 +
 +Die Gravitationskraft ist proportional zur Umkehrung der zweiten Potenz der Distanz. Mit Hilfe der Position der Gegner (Punkt 1 – Enemy Tracking) können nun die verschiedenen Distanzen berechnet und summiert werden, um den Betrag und die Richtung resultierende Kraft herauszufinden. Codebeispiel:
  
 <code java> <code java>
 +        double fx = 0;
 +        double fy = 0;
 +        for (EnemyRobot enemy : enemyTracker.getEnemies()) {
 +            double heading = enemy.getHeading();
 +            double distance = enemy.getDistance();
 +            fx = fx - Math.sin(heading) / (distance * distance);
 +            fy = fy - Math.cos(heading) / (distance * distance);
 +        }
 +
 +        double angle = Math.atan2(fx, fy);
 +</code>
 +
 +===== 3. Roboter bewegen =====
 +
 +Um den Zeitgebrauch zu minimieren, muss bei der Bewegung darauf geachtet werden, dass  unser Roboter  nie  mehr  als  90° dreht. Im Code sieht das dann so aus:
  
robocode/anti-gravity.1427718365.txt.gz · Zuletzt geändert: 2020/10/13 14:25 (Externe Bearbeitung)