robocode:anti-gravity
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
robocode:anti-gravity [2015/03/30 14:07] – angelegt ros | robocode: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 | + | 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; |
- | | + | for (EnemyRobot |
- | } | + | |
+ | | ||
+ | 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.1427717220.txt.gz · Zuletzt geändert: 2020/10/13 14:25 (Externe Bearbeitung)