robocode:anti-gravity
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
robocode:anti-gravity [2015/03/30 14:26] – ros | robocode: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, | ||
+ | </ | ||
+ | |||
+ | ===== 3. Roboter bewegen ===== | ||
+ | |||
+ | Um den Zeitgebrauch zu minimieren, muss bei der Bewegung darauf geachtet werden, dass unser Roboter | ||
robocode/anti-gravity.1427718365.txt.gz · Zuletzt geändert: 2020/10/13 14:25 (Externe Bearbeitung)