jrobots.simulation.simulationObjects
Class JRobot2011

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

public abstract class JRobot2011
extends Pilot

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

Compared to JRobot2010, it has these functional enhancements:

See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class jrobots.simulation.simulationObjects.Pilot
Pilot.DropperCommand, Pilot.LauncherAmmunition
 
Field Summary
 
Fields inherited from class jrobots.simulation.simulationObjects.Pilot
DOWN, LEFT, memoryConsumption, RIGHT, UP
 
Constructor Summary
JRobot2011()
           
 
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(float x1, float y1, float x2, float y2)
           
protected  void addDebugLine(Vector p1, Vector p2)
          Mit Hilfe dieser Funktion kann ein Bot eine Linie auf's Spielfeld zeichnen.
protected static double getEnergyConsumptionBooster()
           
protected static double getEnergyConsumptionEngine()
           
protected static double getEnergyConsumptionMine()
           
protected static double getEnergyConsumptionProjectile()
           
protected static double getEnergyConsumptionRocket()
           
protected static double getEnergyConsumptionRocketRedirection()
           
protected static double getEnergyConsumptionScanner()
           
protected static double getEnergyConsumptionTrap()
           
protected static double getEnergyProduction()
           
protected static double getFramesPerSecond()
           
 double getHealth()
          Der Zustand eines Panzers reicht von 0.0 (nächster Treffer verschrottet Panzer) bis 1.0 (voll intakt).
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()
          Retrieves the maximum backward velocity of the Panzer.
protected static double getMaxForwardVelocity()
          Retrieves the maximum forward velocity of the Panzer.
protected static Angle getMaxScanAperture()
          Liefert den größtmöglichen öffnungswinkel des Scanners.
protected static double getMaxVelocityProjectile()
          Liefert die Geschwindigkeit (in Meter pro Sekunde) des Projektils, das der Panzer verschiessen kann.
protected static double getMaxVelocityRocket()
          Liefert die maximale Geschwindigkeit (in Meter pro Sekunde) 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 static double getProjectileSpeed()
          Liefert die Geschwindigkeit (in Meter pro Sekunde), mit der das Kanonenprojektil, das der Panzer verschiessen kann, fliegt.
protected  Vector getProximityScanDroppable()
          Liefert die Position des nächsten unbeweglichen Objekts, oder null, falls sich kein unbewegliches Objekt in Reichweite des Näherungsradars befindet.
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  Vector getRocketPosition()
          Liefert die aktuelle Position der Lenkrakete, falls verfügbar.
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 setDebugLines(Vector[] points)
          Mit Hilfe dieser Funktion kann ein Bot mehrere Linien auf's Spielfeld zeichnen.
protected  void setDebugText(java.lang.String text)
          übergibt dem Framework einen Text, den es direk unterhalb des umherfahrenden Bots anzeigt.
protected  void setDropMineCommand(boolean isToBeLayed)
          Setzt einen Befehl an die Abwurfvorrichtung ab.
protected  void setDropTankTrapCommand(boolean isToBeLayed)
          Setzt einen Befehl an die Abwurfvorrichtung ab.
protected  void setLaunchProjectileCommand(Angle command)
          Setzt einen Feuerbefehl an die Abschussvorrichtung ab.
protected  void setLaunchRocketCommand(Angle command)
          Setzt einen Feuerbefehl an die Abschussvorrichtung ab.
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(Angle targetBearing)
           
protected  void setScanAperture(Angle aperture)
          Hiermit sagt man dem Scanner, mit welchem öffnungswinkel der nächste "Scanblitz" erfolgen soll.
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, getNameColor, getSafeShootDistance, getTime, getTurretColor, init
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

JRobot2011

public JRobot2011()
Method Detail

addDebugArrow

protected final void addDebugArrow(Vector start,
                                   Vector end)
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.

Parameters:
start - Startpunkt des Pfeils
end - Endpunkt des Pfeils (hier ist der Pfeilkopf)

addDebugCrosshair

protected final void addDebugCrosshair(Vector position)
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(float x1,
                                  float y1,
                                  float x2,
                                  float y2)

addDebugLine

protected final void addDebugLine(Vector p1,
                                  Vector p2)
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

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)

getEnergyConsumptionMine

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

getEnergyConsumptionProjectile

protected static final double getEnergyConsumptionProjectile()
Returns:
die benötigte Menge an Energie für einen Kanonenschuss

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)

getEnergyConsumptionTrap

protected static final double getEnergyConsumptionTrap()
Returns:
die benötigte Menge an Energie für eine Sperre/Wand

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 double getFramesPerSecond()
Returns:
die Anzahl Simulationszyklen pro Sekunde. Dieser Wert ist hilfreich, wenn man den zeitlichen Abstand zwischen zwei Aufrufen der actions()-Methode wissen muss.

getHealth

public final double getHealth()
Der Zustand eines Panzers reicht von 0.0 (nächster Treffer verschrottet Panzer) bis 1.0 (voll intakt). Sinkt der Zustand unter einen Wert von 0.0, so ist der Kampf für diesen Panzer zu Ende.

Overrides:
getHealth in class Pilot
Returns:
momentanen Panzerzustand element [0.0, 1.0]

getLastScan

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

Note: The returned might be an unsuccessful scan. Check with isTargetLocated.

Returns:
das Ergebnis des letzten Scans, mit distanceToTarget == 0, falls kein Objekt gescannt werden konnte.

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()
Retrieves the maximum backward velocity of the Panzer.
Both tractors have to be set to full backward speed to achieve this velocity.

Returns:
maximum backward velocity in meters per second

getMaxForwardVelocity

protected static final double getMaxForwardVelocity()
Retrieves the maximum forward velocity of the Panzer.
Both tractors have to be set to full forward speed to achieve this velocity.

Returns:
maximum forward velocity in meters per second

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

getMaxVelocityProjectile

protected static final double getMaxVelocityProjectile()
Liefert die Geschwindigkeit (in Meter pro Sekunde) des Projektils, das der Panzer verschiessen kann. Diese Geschwindigkeit ist konstant für die ganze Projektilflugbahn.

Returns:
Projektilgeschwindigkeit

getMaxVelocityRocket

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

Returns:
Lenkraketengeschwindigkeit

getOrientation

protected final Angle getOrientation()
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()
Liefert die aktuelle Position des Panzers im Spielfeld relativ zur oberen linken Ecke.

Returns:
Position des Panzers - wie alles gemessen in Metern

getProjectileSpeed

protected static final double getProjectileSpeed()
Liefert die Geschwindigkeit (in Meter pro Sekunde), mit der das Kanonenprojektil, das der Panzer verschiessen kann, fliegt.

Returns:
Projektilgeschwindigkeit

getProximityScanDroppable

protected final Vector getProximityScanDroppable()
Description copied from class: Pilot
Liefert die Position des nächsten unbeweglichen Objekts, oder null, falls sich kein unbewegliches Objekt in Reichweite des Näherungsradars befindet. (siehe Constants.PANZER_PROXIMITY_SCANNER_DROPPABLE_RANGE).
Auch selbst gelegte Objekte werden erfasst, allerdings erst, wenn sie aktiviert (scharf gemacht) sind.

Die Benutzung des Näherungsradars kostet keine Energie.

See Also:
Constants.PANZER_PROXIMITY_SCANNER_DROPPABLE_RANGE

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

getRocketPosition

protected final Vector getRocketPosition()
Liefert die aktuelle Position der Lenkrakete, falls verfügbar.

Returns:
absolute Position der Lenkrakete oder
null falls dieses Datum nicht verfügbar ist (kein Uplink zu einer Lenkrakete)

getVelocity

protected final Vector getVelocity()
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)
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)
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.

Parameters:
newColor -

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.


setDebugLines

protected final void setDebugLines(Vector[] points)
Mit Hilfe dieser Funktion kann ein Bot mehrere Linien auf's Spielfeld zeichnen. Die Linien werden in der Farbe des Botnamens gemalt. Die Anzahl der Linien ist beliebig. Die Methode nimmt ein Array mit den Start- und Endpunkten der Linien entgegen. Die Linien müssen nicht zusammenhängend sein. Das übergebene Array wird während des Methodenaufrufs kopiert, es ist also nicht nötig, es danach unberührt zu lassen. Jeweils zwei aufeinanderfolgende Punkte werden als eine Linie interpretiert. Das Array muss also immer eine gerade Zahl von Elementen haben.

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:
points - Start- und Endpunkte der Linien

setDebugText

protected final void setDebugText(java.lang.String text)
übergibt dem Framework einen Text, den es direk unterhalb des umherfahrenden Bots anzeigt. Brauchbar für's Debugging. Tipp: durch das Einfügen von "\n" in den String erhält man einen Zeilenumbruch.

Parameters:
text - anzuzeigender Text

setDropMineCommand

protected final void setDropMineCommand(boolean isToBeLayed)
Setzt einen Befehl an die Abwurfvorrichtung ab.

Ist schon ein -noch nicht ausgeführter- Abwurfbefehl vorhanden, dann wird dieser überschrieben.
Dies hat keinen Einfluss auf den Nachladevorgang der Abwurfvorrichtung. Sobald sie nachgeladen ist, wird der zuletzt eingestellte Befehl ausgefürt.

Folgende Befehle gibt es für die Abwurfvorrichtung:

Parameters:
isToBeLayed -
  • true - Mine soll gelegt werden
  • false - Mine soll noch nicht gelegt werden

setDropTankTrapCommand

protected final void setDropTankTrapCommand(boolean isToBeLayed)
Setzt einen Befehl an die Abwurfvorrichtung ab.

Ist schon ein -noch nicht ausgeführter- Abwurfbefehl vorhanden, dann wird dieser überschrieben.
Dies hat keinen Einfluss auf den Nachladevorgang der Abwurfvorrichtung. Sobald sie nachgeladen ist, wird der zuletzt eingestellte Befehl ausgefürt.

Folgende Befehle gibt es für die Abwurfvorrichtung:

Parameters:
isToBeLayed -
  • true - Sperre soll gelegt werden
  • false - Sperre soll noch nicht gelegt werden

setLaunchProjectileCommand

protected final void setLaunchProjectileCommand(Angle command)
Setzt einen Feuerbefehl an die Abschussvorrichtung ab.

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 der zuletzt eingestellte Befehl ausgefürt.

Folgende Befehle gibt es für die Abschussvorrichtung:

Parameters:
command - - Richtung, in die geschossen werden soll (absolut) oder null, wenn ein bestehender Schussbefehl abgebrochen werden soll

setLaunchRocketCommand

protected final void setLaunchRocketCommand(Angle command)
Setzt einen Feuerbefehl an die Abschussvorrichtung ab.

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 der zuletzt eingestellte Befehl ausgefürt.

Folgende Befehle gibt es für die Abschussvorrichtung:

Parameters:
command - - Richtung, in die geschossen werden soll (absolut) oder null, wenn ein bestehender Schussbefehl abgebrochen werden soll

setNameColor

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

Parameters:
newNameColor -

setRocketHeading

protected final void setRocketHeading(Angle targetBearing)

setScanAperture

protected final void setScanAperture(Angle aperture)
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)
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
Throws:
java.lang.NullPointerException - wenn der Parameter null ist

setTurretColor

protected final void setTurretColor(java.awt.Color newColor)
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.

Parameters:
newColor -