jrobots.simulation.simulationObjects
Class JRobot2012

java.lang.Object
  extended by jrobots.simulation.simulationObjects.Pilot
      extended by jrobots.simulation.simulationObjects.JRobot2012
All Implemented Interfaces:
java.io.Serializable

public abstract class JRobot2012
extends Pilot

The jRobot designed for use as base class for deriving contest bots.

Compared to JRobot2011, it has these functional modifications:

See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class jrobots.simulation.simulationObjects.Pilot
Pilot.DropperCommand, Pilot.LauncherAmmunition
 
Field Summary
protected static java.lang.String constants
          Dieser String hält die Werte für die Konstanten.
 
Fields inherited from class jrobots.simulation.simulationObjects.Pilot
DOWN, LEFT, memoryConsumption, RIGHT, UP
 
Constructor Summary
JRobot2012()
           
 
Method Summary
protected  void addDebugArrow(Vector start, Vector end)
          Mit Hilfe dieser Funktion kann ein Bot einen Pfeil auf's Spielfeld zeichnen.
protected  void addDebugCrosshair(Vector position)
          Mit Hilfe dieser Funktion kann ein Bot ein Kreuz auf's Spielfeld zeichnen.
protected  void addDebugLine(Vector p1, Vector p2)
          Mit Hilfe dieser Funktion kann ein Bot eine Linie auf's Spielfeld zeichnen.
protected  Vector[] getDirectablePositions()
          Liefert die aktuelle Position aller verfügbaren Lenkraketen.
protected static double getEnergyConsumptionBooster()
           
protected static double getEnergyConsumptionEngine()
           
protected static double getEnergyConsumptionRocket()
           
protected static double getEnergyConsumptionRocketRedirection()
           
protected static double getEnergyConsumptionScanner()
           
protected static double getEnergyProduction()
           
protected static int getFramesPerSecond()
           
protected  Scan getLastScan()
          Liefert das Ergebnis des letzten "Scanblitzes".
protected static double getMaxArenaDiameter()
          Zwei Panzer können sich nicht weiter als den zurückgegebenen Wert voneinander entfernen.
protected static double getMaxBackwardVelocity()
           
protected static double getMaxForwardVelocity()
           
protected static double getMaxForwardVelocityWithBooster()
           
protected static Angle getMaxScanAperture()
          Liefert den größtmöglichen öffnungswinkel des Scanners.
protected static double getMaxVelocityRocket()
          Liefert die maximale Geschwindigkeit der Lenkrakete, die der Panzer verschiessen kann.
protected  Angle getOrientation()
          Liefert die aktuelle Ausrichtung des Panzerkörpers.
protected  Vector getPosition()
          Liefert die aktuelle Position des Panzers im Spielfeld relativ zur oberen linken Ecke.
protected  Vector getProximityScanLaunchable()
          Liefert die Position des nächsten gegnerischen Geschosses, oder null, falls sich kein gegnerisches Geschoss in Reichweite des Näherungsradars befindet (siehe Constants.PANZER_PROXIMITY_SCANNER_LAUNCHABLE_RANGE).
protected static double getProximityScannerProjectileRange()
           
protected static double getRocketDamageFront()
           
protected static double getRocketDamageRear()
           
protected static double getRocketDamageSide()
           
protected  Angle getRocketTargetBearing(int idx)
           
protected  Vector getVelocity()
          Liefert den aktuellen Geschwindigkeitsvektor des Panzers.
protected  boolean isScanFromNow()
          Liefert true, wenn der aktuelle Scanwert im Scanner von diesem Frame stammt, also wenn gilt:
getTime() == getLastScan().timeOfScan
Der Scanner hat also in diesem Frame einen Scan durchgeführt.
protected  void setAutopilot(Angle direction, double speed)
          Diese Funktion aktiviert den Autopilot, welcher selbständig die Geschwindigkeiten der beiden Panzerketten regelt.
protected  void setBodyColor(java.awt.Color newColor)
          Hiermit kann eine Farbe eingestellt werden, mit der das Bild des Panzerkörpers gefiltert wird.
protected  void setBoost()
          Executes a mighty boost for the immediate feeling of innate freedom.
protected  void setLaunchRocket(Angle command)
          Setzt die gewünschte Schussrichtung des Bots.
protected  void setNameColor(java.awt.Color newNameColor)
          Hiermit kann die Farbe des Schriftzuges verändert werden, der in der Arena über dem Bot angezeigt wird.
protected  void setRocketHeading(int directableNumber, Angle targetBearing)
          Mit dieser Routine k�nnen eigene Lenkraketen während des Fluges umprogrammiert werden.
protected  void setScanAperture(Angle aperture)
          Hiermit sagt man dem Scanner, mit welchem ??
protected  void setScanDirection(Angle scanDirection)
          Setzt die Richtung, in die der nächste "Scanblitz" gehen soll.
protected  void setTurretColor(java.awt.Color newColor)
          Hiermit kann eine Farbe eingestellt werden, mit der das Bild des Panzerturms gefiltert wird.
 
Methods inherited from class jrobots.simulation.simulationObjects.Pilot
actions, getBodyColor, getEnergy, getHealth, getNameColor, getSafeShootDistance, getTime, getTurretColor, init
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

constants

protected static final java.lang.String constants
Dieser String hält die Werte für die Konstanten.
Er wird beim Start ein Mal ausgegeben.

Constructor Detail

JRobot2012

public JRobot2012()
Method Detail

addDebugArrow

protected final void addDebugArrow(Vector start,
                                   Vector end)
Description copied from class: Pilot
Mit Hilfe dieser Funktion kann ein Bot einen Pfeil auf's Spielfeld zeichnen. Der Pfeil wird in der Farbe des Botnamens gemalt.

Alle Debug-Linien sind jeweils nur in dem Frame sichtbar, in dem sie hinzugef??gt wurden. F??r eine l??ngere Anzeige m??ssen die Linien also in jedem Frame neu deklariert werden.


addDebugCrosshair

protected final void addDebugCrosshair(Vector position)
Description copied from class: Pilot
Mit Hilfe dieser Funktion kann ein Bot ein Kreuz auf's Spielfeld zeichnen. Das Kreuz wird in der Farbe des Botnamens gemalt.

Alle Debug-Linien sind jeweils nur in dem Frame sichtbar, in dem sie hinzugef??gt wurden. F??r eine l??ngere Anzeige m??ssen die Linien also in jedem Frame neu deklariert werden.

Parameters:
position - die Position des Kreuzes

addDebugLine

protected final void addDebugLine(Vector p1,
                                  Vector p2)
Description copied from class: Pilot
Mit Hilfe dieser Funktion kann ein Bot eine Linie auf's Spielfeld zeichnen. Die Linie wird in der Farbe des Botnamens gemalt.

Alle Debug-Linien sind jeweils nur in dem Frame sichtbar, in dem sie hinzugef??gt wurden. F??r eine l??ngere Anzeige m??ssen die Linien also in jedem Frame neu deklariert werden.

Parameters:
p1 - Startpunkt der Linie
p2 - Endpunkt der Linie

getDirectablePositions

protected final Vector[] getDirectablePositions()
Description copied from class: Pilot
Liefert die aktuelle Position aller verfügbaren Lenkraketen.

Die Position im Rückgabearray beschreibt auch die Nummer, mit der die Lenkrakete angesteuert werden kann (beginnend mit 0).

Returns:
absolute Position jeder eigenen Lenkrakete
(ist das Array leer, gibt es keine aktive Lenkrakete)
See Also:
Pilot#setRocketHeading(int, Angle)}, Pilot#setMissileTarget(int, Vector)}

getEnergyConsumptionBooster

protected static final double getEnergyConsumptionBooster()
Returns:
die benötigte Menge an Energie für den Booster pro Simulationszyklus

Hinweis: Der Booster braucht mehr Energie als der Kettenantrieb


getEnergyConsumptionEngine

protected static final double getEnergyConsumptionEngine()
Returns:
die benötigte Menge an Energie für maximale Kettenbeschleunigung pro Simulationszyklus (Autopilot auf -1 oder 1)

getEnergyConsumptionRocket

protected static final double getEnergyConsumptionRocket()
Returns:
die benötigte Menge an Energie für eine Lenkrakete

getEnergyConsumptionRocketRedirection

protected static final double getEnergyConsumptionRocketRedirection()
Returns:
die benötigte Menge an Energie für eine Neuausrichtung der Lenkrakete im Flug (setRocketHeading)

getEnergyConsumptionScanner

protected static final double getEnergyConsumptionScanner()
Returns:
die benötigte Menge an Energie für einen Scanstrahl (Projektil und Minenscanner kosten keine Energie)

getEnergyProduction

protected static final double getEnergyProduction()
Returns:
die Menge an Energie, die der Bot jeden Simulationszyklus generiert.

Hinweis: Nicht alles davon kann auch gespeichert werden.


getFramesPerSecond

protected static final int getFramesPerSecond()
Returns:
die Anzahl Simulationszyklen pro Sekunde. Dieser Wert ist hilfreich, wenn man den zeitlichen Abstand zwischen zwei Aufrufen der actions()-Methode wissen muss.

getLastScan

protected final Scan getLastScan()
Description copied from class: Pilot
Liefert das Ergebnis des letzten "Scanblitzes". Das zurückgelieferte Objekt enthält alle Informationen, die es zu einem einzelnen "Scanblitz" zu wissen gibt.

Returns:
das Ergebnis des letzten Scans.

getMaxArenaDiameter

protected static final double getMaxArenaDiameter()
Zwei Panzer können sich nicht weiter als den zurückgegebenen Wert voneinander entfernen. Falls sie es dennoch versuchen, stoßen sie an die "unsichtbare Arenawand" an, die jedoch ansonsten harmlos ist.

Returns:
Maximum distance between two Panzers in [m]

getMaxBackwardVelocity

protected static final double getMaxBackwardVelocity()
Returns:
Die maximale Geschwindigkeit beim rückwärts Fahren in [m/s]

getMaxForwardVelocity

protected static final double getMaxForwardVelocity()
Returns:
Die maximale Geschwindigkeit beim vorwärts Fahren in [m/s]

getMaxForwardVelocityWithBooster

protected static final double getMaxForwardVelocityWithBooster()
Returns:
Die (theoretische) maximale Geschwindigkeit beim vorwärts Fahren mit Booster [m/s].

Das ist mit Sicherheit die wichtigste Konstante im Spiel - zeigt sie doch, dass der Panzer die Rakete überholen könnte, wenn ihm nicht die Energie ausginge.


getMaxScanAperture

protected static final Angle getMaxScanAperture()
Liefert den größtmöglichen öffnungswinkel des Scanners. Stellt man größere Winkel ein, wird trotzdem nur mit diesem Winkel gescannt.

Returns:
maximaler öffnungswinkel des Scanners

getMaxVelocityRocket

protected static final double getMaxVelocityRocket()
Liefert die maximale Geschwindigkeit der Lenkrakete, die der Panzer verschiessen kann.

Returns:
Lenkraketengeschwindigkeit [m/s]
See Also:
JRobot2012#setLaunchRocket(Angle)}

getOrientation

protected final Angle getOrientation()
Description copied from class: Pilot
Liefert die aktuelle Ausrichtung des Panzerkörpers.
Dieser Wert stimmt nicht immer genau mit dem Winkel des Geschwindigkeitsvektors überein, da der Bot auch seitlich rutschen kann (z.B. in Kurven).

Returns:
aktuelle Ausrichtung im Bogenma??

getPosition

protected final Vector getPosition()
Description copied from class: Pilot
Liefert die aktuelle Position des Panzers im Spielfeld relativ zur oberen linken Ecke.

Returns:
Position des Panzers - wie alles gemessen in Metern

getProximityScanLaunchable

protected final Vector getProximityScanLaunchable()
Description copied from class: Pilot
Liefert die Position des nächsten gegnerischen Geschosses, oder null, falls sich kein gegnerisches Geschoss in Reichweite des Näherungsradars befindet (siehe Constants.PANZER_PROXIMITY_SCANNER_LAUNCHABLE_RANGE).

See Also:
Constants.PANZER_PROXIMITY_SCANNER_LAUNCHABLE_RANGE

getProximityScannerProjectileRange

protected static final double getProximityScannerProjectileRange()
Returns:
die Reichweite des Projektilradars in [m].
See Also:
JRobot2012#getProximityScanLaunchable()}

getRocketDamageFront

protected static final double getRocketDamageFront()
Returns:
Schaden der Rakete, wenn sie den Frontpanzer trifft, in [%]

getRocketDamageRear

protected static final double getRocketDamageRear()
Returns:
Schaden der Rakete, wenn sie in das Heck trifft, in [%]

getRocketDamageSide

protected static final double getRocketDamageSide()
Returns:
Schaden der Rakete von der Seite in [%]

getRocketTargetBearing

protected final Angle getRocketTargetBearing(int idx)
Parameters:
idx - - Raketenindex (Position in getDirectablePositions)
Returns:
liest die eingestellte Zielrichtung der entsprechenden Rakete ein.
See Also:
getDirectablePositions()

getVelocity

protected final Vector getVelocity()
Description copied from class: Pilot
Liefert den aktuellen Geschwindigkeitsvektor des Panzers. Dieser ist nicht notwendigerweise exakt gleich der Ausrichtung. Der Panzer kann ein bißchen rutschen.

Returns:
aktuelle Bewegungsrichtung als Geschwindigkeitsvektor [m/s]

isScanFromNow

protected final boolean isScanFromNow()
Liefert true, wenn der aktuelle Scanwert im Scanner von diesem Frame stammt, also wenn gilt:
getTime() == getLastScan().timeOfScan
Der Scanner hat also in diesem Frame einen Scan durchgeführt.

Returns:
getTime() == getLastScan().timeOfScan

setAutopilot

protected final void setAutopilot(Angle direction,
                                  double speed)
Description copied from class: Pilot
Diese Funktion aktiviert den Autopilot, welcher selbständig die Geschwindigkeiten der beiden Panzerketten regelt.
Der Autopilot fährt so lange mit der angegebenen Geschwindigkeit in die angegebene Richtung, bis diese Funktion mit neuen Daten nochmals aufgerufen wird.

Parameters:
direction - gewünschte Fahrtrichtung
speed - gewünschte Geschwindigkeit im Intervall [-1...+1]

setBodyColor

protected final void setBodyColor(java.awt.Color newColor)
Description copied from class: Pilot
Hiermit kann eine Farbe eingestellt werden, mit der das Bild des Panzerkörpers gefiltert wird. Voreinstellung: Weiß (für keinen Filter). Der Alpha-Wert der gewünschten Farbe wird ignoriert.


setBoost

protected final void setBoost()
Description copied from class: Pilot
Executes a mighty boost for the immediate feeling of innate freedom.

Naturally, boosting draws more energy than going there by (foot) your tractors, but you can exceed your maximum velocity, which we limited too much (as you might say).

The booster burns a number of frames before it ceases fire.


setLaunchRocket

protected final void setLaunchRocket(Angle command)
Setzt die gewünschte Schussrichtung des Bots. Ist schon ein - noch nicht ausgeführter - Feuerbefehl vorhanden, dann wird dieser überschrieben.
Dies hat keinen Einfluss auf den Nachladevorgang der Kanone. Sobald sie nachgeladen ist, wird auf das zu diesem Zeitpunkt aktuelle Ziel geschossen.

Parameters:
command - Zielpunkt in Polarkoordinatenform relativ zum Panzer
See Also:
JRobot2012#setRocketHeading(int, Angle)}, JRobot2012#getMaxVelocityRocket()}, JRobot2012#getDirectablePositions()}, JRobot2012#getRocketBearingTarget(int)}

setNameColor

protected final void setNameColor(java.awt.Color newNameColor)
Description copied from class: Pilot
Hiermit kann die Farbe des Schriftzuges verändert werden, der in der Arena über dem Bot angezeigt wird.


setRocketHeading

protected final void setRocketHeading(int directableNumber,
                                      Angle targetBearing)
Description copied from class: Pilot
Mit dieser Routine k�nnen eigene Lenkraketen während des Fluges umprogrammiert werden. Das hat natürlich nur eine Auswirkung, wenn kürzlich eine gestartet wurde, welche diesen Befehl unterst�tzt, und sich diese noch im Anflug befindet.

Eine solche Rakete kann beliebig oft umprogrammiert werden, bis sie zerst�rt ist.

Das Setzen einer neuen Richtung kostet Energie.
Ist nicht genug Energie vorhanden, hat der Befehl keinen Effekt. Falls keine Lenkrakete mit dem Panzer verbunden ist, hat der Befehl keinen Effekt.

Hinweis: Initial fliegt die Lenkrakete ungesteuert in die Richtung, in die sie abgeschossen wurde. Erst, wenn ihr mit dieser Routine ein Lenkbefehl übergeben wird, ver�ndert sie ihren Lauf.

Parameters:
directableNumber - - Nummer der Rakete, f�r die der Befehl gelten soll (beginnend mit 0 - der ältesten Rakete)
targetBearing - - Richtung, in die die Rakete fliegen soll.
See Also:
Pilot#getEnergyConsumptionRocketRedirection()}, Pilot#getDirectablePositions()}

setScanAperture

protected final void setScanAperture(Angle aperture)
Description copied from class: Pilot
Hiermit sagt man dem Scanner, mit welchem ??ffnungswinkel der n??chste "Scanblitz" erfolgen soll. Der Scanner scannt dann - ausgehend von der gesetzten Scanrichtung - um aperture/2 nach links und um aperture/2 nach rechts.

Parameters:
aperture - ??ffnungswinkel

setScanDirection

protected final void setScanDirection(Angle scanDirection)
Description copied from class: Pilot
Setzt die Richtung, in die der nächste "Scanblitz" gehen soll.
Z.B. Scannen nach links: setScanDirection(new RadAngle(Math.PI));

Parameters:
scanDirection - gewünschte Scanrichtung

setTurretColor

protected final void setTurretColor(java.awt.Color newColor)
Description copied from class: Pilot
Hiermit kann eine Farbe eingestellt werden, mit der das Bild des Panzerturms gefiltert wird. Voreinstellung: Weiß (für keinen Filter). Der Alpha-Wert der gew??nschten Farbe wird ignoriert.