Informatikunterricht

am Gymnasium Kirchenfeld

Benutzer-Werkzeuge

Webseiten-Werkzeuge


robocode:anti-gravity

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
robocode:anti-gravity [2015/03/30 14:07] – angelegt rosrobocode:anti-gravity [2020/10/13 14:25] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 13: Zeile 13:
 ==== 1. Enemy-Tracking ==== ==== 1. Enemy-Tracking ====
  
-Bevor die Kräfte ausgerechnet werden können, müssen zuerst die Positionen der Roboter static bekannt sein.+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>
-class EnemyRobot { +        double fx = 0; 
-public +        double fy = 0; 
-    EnemyRobot(int x, int y); +        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.1427717220.txt.gz · Zuletzt geändert: 2020/10/13 14:25 (Externe Bearbeitung)