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)