jrobots.simulation.simulationObjects
Class JRobot2012_FH

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

public abstract class JRobot2012_FH
extends Pilot

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

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_FH()
           
 
Method Summary
protected abstract  void actions()
          Every time the simulation has progressed, each Pilot may plan the next actions.
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 static double getEnergyConsumptionEngine()
           
protected static double getEnergyConsumptionProjectile()
           
protected static double getEnergyConsumptionScanner()
           
protected static double getEnergyProductionPerFrame()
           
protected static int 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()
           
protected static double getMaxForwardVelocity()
           
protected static Angle getMaxScanAperture()
          Liefert den größtmöglichen Öffnungswinkel des Scanners.
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 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 am Anfang dieses Frames 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 setDebugText(java.lang.String text)
          Übergibt dem Framework einen Text, den es direk unterhalb des umherfahrenden Bots anzeigt.
protected  void setLaunchProjectileCommand(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 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
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
 

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_FH

public JRobot2012_FH()
Method Detail

actions

protected abstract void actions()
Every time the simulation has progressed, each Pilot may plan the next actions. This is done through execution of this method.

The knowledge that a Pilot has of the momentary simulation state is limited to what its Panzer's sensors may display. Access to the Panzer's sensor states is best done via the following methods:

A Pilot is able to steer its Panzer. Move commands are obeyed by the Panzer until the Pilot canges its commands. All other commands are comsumed when the Panzer tries to execute them. Commands are issued by calling the following methods:

You may add fields as you like to your class to keep your state information through the run of the simulation.

But remember not to waste memory, as the framework checks the size of your Pilot 's state and may refuse to permit it to the arena.
You can use static fields, but that makes the framework's timeline slider obsolete for debugging. So don't do it.

If you exceed a certain (very generous) threshold, the framework will exert punishment upon your Pilot.
If your Pilot throws an Exception, there will also be some detriment.
In both cases, the framework will remove the existing Pilot instance and put a new instance into the Panzer, so you may be able to carry on.

Specified by:
actions in class Pilot

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.


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(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

getEnergyConsumptionEngine

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

getEnergyConsumptionProjectile

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

getEnergyConsumptionScanner

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

getEnergyProductionPerFrame

protected static final double getEnergyProductionPerFrame()
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.

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.

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]

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

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

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 am Anfang dieses Frames 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.


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

setLaunchProjectileCommand

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

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.


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

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.