jrobots.simulation.simulationObjects
Class JRobot2009

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

public abstract class JRobot2009
extends Pilot

The jRobot designed for use at the Informatik Sommercamp der Universität Passau 2009.

It originates from JRobot2008 and adds 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
JRobot2009()
           
 
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.
 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 getMineReloadTime()
          Liefert die Zeit in Sekunden, die nach dem Legen einer Mine vergehen muss, bis die Minenlegevorrichtung wieder bereit ist.
protected static double getMissileReloadTime()
          Liefert die Zeit in Sekunden, die nach dem Abfeuern eines normalen Geschosses vergehen muss, bis der Werfer wieder bereit ist.
protected static double getMissileSpeedMax()
          Liefert die maximale Geschwindigkeit (in Meter pro Sekunde), mit der die Lenkrakete, die der Panzer verschiessen kann, fliegt.
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 getProjectileReloadTime()
          Liefert die Zeit in Sekunden, die nach dem Abfeuern eines normalen Geschosses vergehen muss, bis der Werfer wieder bereit ist.
protected static double getProjectileSpeed()
          Liefert die Geschwindigkeit (in Meter pro Sekunde), mit der das Projektil, das der Panzer verschiessen kann, fliegt.
protected static double getScanInterval()
          Liefert die Zeit in Sekunden, die der Scanner zum "Nachladen" benötigt.
protected static double getTankTrapReloadTime()
          Liefert die Zeit in Sekunden, die nach dem Legen einer Mine vergehen muss, bis die Minenlegevorrichtung wieder bereit ist.
protected  double getTimeOfDropperReloaded()
          Liefert den Zeitpunkt, zu dem die Legevorrichtung wieder nachgeladen ist.
protected  double getTimeOfLauncherReloaded()
          Liefert den Zeitpunkt, zu dem die Abschussvorrichtung wieder nachgeladen ist.
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 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 setLaunchMissileCommand(Angle command)
          Setzt einen Feuerbefehl an die Abschussvorrichtung ab.
protected  void setLaunchProjectileCommand(Angle command)
          Setzt einen Feuerbefehl an die Abschussvorrichtung ab.
protected  void setMissileTarget(Vector targetPosition)
           
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 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

JRobot2009

public JRobot2009()
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

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

getMineReloadTime

protected static final double getMineReloadTime()
Liefert die Zeit in Sekunden, die nach dem Legen einer Mine vergehen muss, bis die Minenlegevorrichtung wieder bereit ist.

Returns:
Nachladezeit in Sekunden

getMissileReloadTime

protected static final double getMissileReloadTime()
Liefert die Zeit in Sekunden, die nach dem Abfeuern eines normalen Geschosses vergehen muss, bis der Werfer wieder bereit ist.

Returns:
Nachladezeit in Sekunden

getMissileSpeedMax

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

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

getProjectileReloadTime

protected static final double getProjectileReloadTime()
Liefert die Zeit in Sekunden, die nach dem Abfeuern eines normalen Geschosses vergehen muss, bis der Werfer wieder bereit ist.

Returns:
Nachladezeit in Sekunden

getProjectileSpeed

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

Returns:
Projektilgeschwindigkeit

getScanInterval

protected static final double getScanInterval()
Liefert die Zeit in Sekunden, die der Scanner zum "Nachladen" benötigt.

Returns:
Nachladezeit des Scanners in Sekunden

getTankTrapReloadTime

protected static final double getTankTrapReloadTime()
Liefert die Zeit in Sekunden, die nach dem Legen einer Mine vergehen muss, bis die Minenlegevorrichtung wieder bereit ist.

Returns:
Nachladezeit in Sekunden

getTimeOfDropperReloaded

protected final double getTimeOfDropperReloaded()
Liefert den Zeitpunkt, zu dem die Legevorrichtung wieder nachgeladen ist.

Ist der Zeitpunkt kleiner oder gleich der momentanen Zeit, kann sofort eine beliebiger Gegenstand gelegt werden.

Returns:
Zeitpunkt (in Sekunden seit Matchbeginn)

getTimeOfLauncherReloaded

protected final double getTimeOfLauncherReloaded()
Liefert den Zeitpunkt, zu dem die Abschussvorrichtung wieder nachgeladen ist.

Ist der Zeitpunkt kleiner oder gleich der momentanen Zeit, kann sofort eine beliebige Waffe abgeschossen werden.

Returns:
Zeitpunkt (in Sekunden seit Matchbeginn)

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 -

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

setLaunchMissileCommand

protected final void setLaunchMissileCommand(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)

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)

setMissileTarget

protected final void setMissileTarget(Vector targetPosition)

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 -

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 -