Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung |
robocode:start [2015/03/16 16:33] – rothe | robocode:start [2020/10/13 14:25] (aktuell) – Externe Bearbeitung 127.0.0.1 |
---|
====== Robocode ====== | ====== Robocode ====== |
| |
| <WRAP download> |
| [[http://downloads.sourceforge.net/project/robocode/robocode/1.9.2.4/robocode-1.9.2.4-setup.jar|Robocode 1.9.2.4 für Windows]] |
| </WRAP> |
==== Spielregeln ==== | ==== Spielregeln ==== |
| |
=== Energie === | === Energie === |
| |
Ein Roboter verliert Energie bei folgenden Ereignissen: | Beim Start eines Kampfes hat ein Robotes eine Energie von 100. |
| |
^ Ereignis ^ Schaden ^ | Ein Roboter verliert/gewinnt Energie bei folgenden Ereignissen: |
| in eine Wand fahren | max(abs(v) * 0.5 - 1, 0) | | |
| von einem gegnerischen Geschoss getroffen werden | 4 * P + 2 * max(P - 1 , 0) | | ^ Ereignis ^ +/- ^ Schaden ^ |
| von einem Gegner gerammt werden | 0.6 | | | in eine Wand fahren | - | max(abs(v) * 0.5 - 1, 0) | |
| feuern | 3 * P | | | von einem gegnerischen Geschoss getroffen werden | - | 4 * P + 2 * max(P - 1 , 0) | |
| | von einem Gegner gerammt werden | - | 0.6 | |
| | Treffen eines Gegners | + | 3 * P | |
| |
Dabei steht **v** für die Geschwindigkeit des Roboters und **P** für die Geschosskraft (//bullet power//). | Dabei steht **v** für die Geschwindigkeit des Roboters und **P** für die Geschosskraft (//bullet power//). |
| |
=== Bewegung === | === Bewegung === |
* <javadoc robocode>robocode.Robot#ahead(double)|ahead(double)</javadoc>: Vorwärts fahren. | * <javadoc robocode>robocode.Robot#ahead(double)|ahead(double)</javadoc>: Vorwärts fahren |
* <javadoc robocode>robocode.Robot#back(double)|back(double)</javadoc>: Rückwärts fahren. | * <javadoc robocode>robocode.Robot#back(double)|back(double)</javadoc>: Rückwärts fahren |
* <javadoc robocode>robocode.Robot#turnLeft(double)|turnLeft(double)</javadoc>: Nach links drehen. | * <javadoc robocode>robocode.Robot#turnLeft(double)|turnLeft(double)</javadoc>: Nach links drehen |
* <javadoc robocode>robocode.Robot#turnRight(double)|turnRight(double)</javadoc>: Nach rechts drehen. | * <javadoc robocode>robocode.Robot#turnRight(double)|turnRight(double)</javadoc>: Nach rechts drehen |
* <javadoc robocode>robocode.Robot#getVelocity()|getVelocity()</javadoc>: Aktuelle Geschwindigkeit in Pixel pro Sekunde. | * <javadoc robocode>robocode.Robot#getVelocity()|getVelocity()</javadoc>: Aktuelle Geschwindigkeit in Pixel pro Sekunde |
* <javadoc robocode>robocode.Robot#getHeading()|getHeading()</javadoc>: Aktuelle Fahrtrichtung in Grad. | * <javadoc robocode>robocode.Robot#getHeading()|getHeading()</javadoc>: Aktuelle Fahrtrichtung in Grad |
* <javadoc robocode>robocode.Robot#getX()|getX()</javadoc>: Aktuelle x-Koordinate des Roboters. | * <javadoc robocode>robocode.Robot#getX()|getX()</javadoc>: Aktuelle x-Koordinate des Roboters |
* <javadoc robocode>robocode.Robot#getY()|getY()</javadoc>: Aktuelle y-Koordinate des Roboters. | * <javadoc robocode>robocode.Robot#getY()|getY()</javadoc>: Aktuelle y-Koordinate des Roboters |
| * <javadoc robocode>robocode.Robot#getBattleFieldHeight()|getBattleFieldHeight()</javadoc>: Höhe des Spielfelds |
| * <javadoc robocode>robocode.Robot#getBattleFieldWidth()|getBattleFieldWidth()</javadoc>: Breite des Spielfelds |
| |
=== Radar === | === Radar === |
* <javadoc robocode>robocode.Robot#turnRadarLeft(double)|turnRadarLeft(double)</javadoc>: Nach links drehen. | * <javadoc robocode>robocode.Robot#turnRadarLeft(double)|turnRadarLeft(double)</javadoc>: Nach links drehen |
* <javadoc robocode>robocode.Robot#turnRadarRight(double)|turnRadarRight(double)</javadoc>: Nach rechts drehen. | * <javadoc robocode>robocode.Robot#turnRadarRight(double)|turnRadarRight(double)</javadoc>: Nach rechts drehen |
* <javadoc robocode>robocode.Robot#getRadarHeading()|getRadarHeading()</javadoc>: Aktuelle Richtung des Radars in Grad. | * <javadoc robocode>robocode.Robot#getRadarHeading()|getRadarHeading()</javadoc>: Aktuelle Richtung des Radars in Grad |
| |
=== Kanone === | === Kanone === |
* <javadoc robocode>robocode.Robot#turnGunLeft(double)|turnGunLeft(double)</javadoc>: Nach links drehen. | * <javadoc robocode>robocode.Robot#turnGunLeft(double)|turnGunLeft(double)</javadoc>: Nach links drehen |
* <javadoc robocode>robocode.Robot#turnGunRight(double)|turnGunRight(double)</javadoc>: Nach rechts drehen. | * <javadoc robocode>robocode.Robot#turnGunRight(double)|turnGunRight(double)</javadoc>: Nach rechts drehen |
* <javadoc robocode>robocode.Robot#getGunHeading()|getGunHeading()</javadoc>: Aktuelle Richtung des Radars in Grad. | * <javadoc robocode>robocode.Robot#getGunHeading()|getGunHeading()</javadoc>: Aktuelle Richtung des Radars in Grad |
* <javadoc robocode>robocode.Robot#fire(double)|fire(double)</javadoc>: Mit angegebener Energie schiessen. | * <javadoc robocode>robocode.Robot#fire(E)|fire(double)</javadoc>: Mit angegebener Energie **E** schiessen. Die Geschwindigkeit des Schusses beträgt 20 - 3 * **E** |
* <javadoc robocode>robocode.Rules#MIN_BULLET_POWER|Rules.MIN_BULLET_POWER</javadoc>: Minimale Energie eines Schusses (0.1). | * <javadoc robocode>robocode.Rules#MIN_BULLET_POWER|Rules.MIN_BULLET_POWER</javadoc>: Minimale Energie eines Schusses (0.1) |
* <javadoc robocode>robocode.Rules#MAX_BULLET_POWER|Rules.MAX_BULLET_POWER</javadoc>: Maximale Energie eines Schusses (3). | * <javadoc robocode>robocode.Rules#MAX_BULLET_POWER|Rules.MAX_BULLET_POWER</javadoc>: Maximale Energie eines Schusses (3) |
| * <javadoc robocode>robocode.Rules#getBulletSpeed(double)|Rules#getBulletSpeed(E)</javadoc>: Geschwindigkeit eines Geschosses mit der angegebenen Energie **E** |
| |
| |
=== Gegner scannen === | === Gegner scannen === |
Wenn ein Roboter vom Radar erfasst wird, wird die Methode <javadoc robocode>robocode.Robot#onScannedRobot(robocode.ScannedRobotEvent)|onScannedRobot()</javadoc> aufgerufen. Das mitgelieferte <javadoc robocode>robocode.ScannedRobotEvent|ScannedRobotEvent</javadoc> enthält Informationen über den gegnerischen Roboter: | Wenn ein Roboter vom Radar erfasst wird, wird die Methode <javadoc robocode>robocode.Robot#onScannedRobot(robocode.ScannedRobotEvent)|onScannedRobot()</javadoc> aufgerufen. Das mitgelieferte <javadoc robocode>robocode.ScannedRobotEvent|ScannedRobotEvent</javadoc> enthält Informationen über den gegnerischen Roboter: |
| |
* <javadoc robocode>robocode.ScannedRobotEvent#getBearing()|getBearing()</javadoc>: Richtung in Grad, in welcher der gescannte Roboter liegt relativ zur eigenen Fahrtrichtung. | * <javadoc robocode>robocode.ScannedRobotEvent#getBearing()|e.getBearing()</javadoc>: Richtung in Grad, in welcher der gescannte Roboter liegt relativ zur eigenen Fahrtrichtung |
* <javadoc robocode>robocode.ScannedRobotEvent#getDistance()|getDistance()</javadoc>: Distanz zum gescannten Roboter in Pixel. | * <javadoc robocode>robocode.ScannedRobotEvent#getDistance()|e.getDistance()</javadoc>: Distanz zum gescannten Roboter in Pixel |
| * <javadoc robocode>robocode.ScannedRobotEvent#getEnergy()|e.getEnergy()</javadoc>: Energie des gescannten Roboters |
| * <javadoc robocode>robocode.ScannedRobotEvent#getVelocity()|e.getVelocity()</javadoc>: Geschwindigkeit des gescannten Roboters |
| * <javadoc robocode>robocode.ScannedRobotEvent#getHeading()|e.getHeading()</javadoc>: Fahrtrichtung des gescannten Roboters |
| * <javadoc robocode>robocode.ScannedRobotEvent#getName()|e.getName()</javadoc>: Name des gescannten Roboters |
| |
Die absolute Richtung (//heading//) zum gescannten Roboter kann so ermittelt werden: | Die absolute Richtung (//heading//) zum gescannten Roboter kann so ermittelt werden: |
<code java> | <code java> |
double headingToRobot = getHeading() + e.getBearing() | double headingToRobot = getHeading() + e.getBearing() |
</cod> | </code> |
| |
| ===== Allgemeines ===== |
| |
| * [[looks]] |
| * [[tracking]] |
| |
| ===== Bewegung ===== |
| * [[anti-gravity]] |
| |
| ===== Zielen ===== |
| |
| Es gibt verschiedene Ansätze zum Zielen. |
| |
| * [[target-none]] |
| * [[target-static]] |
| * [[target-linear-1]] |
| |
[[first-robot]] | [[first-robot]] |