Class Unit
- Direct Known Subclasses:
Human
public abstract class Unit extends Hovlet
Nach der Definition eines Konstruktors, in welchem Du Team- und Spieler-Namen angeben kannst, musst Du nur noch die Denk-Schleife loop() implementieren. Hierzu sei gesagt:
Das Main-Panel des Unit-Hovlets ist unbenutzt. Es steht Dir zur Darstellung eigener Analysen zur vollen Verfügung.
Beispiel einer trivialen Java-Unit:
import hoverball.*; import hoverball.math.*; public class Clumsy extends Unit { public Clumsy () { super(null,"Clumsy",0x8888FF); // Name "Clumsy", Farbe hellblau } public void loop () { Sphere sphere = new Sphere(option("world.radius")); // Parameter auslesen... double Qmax = option("unit.charge.max"); double Fmax = option("unit.engine.max"); while (look()) { Puck ball = puck(BALL,0,1); // das ist der Ball Puck goal = puck(BALL,self.t,1); // das ist das "Tor" if (ball == null) action(0,-Fmax,Fmax); // sieht keinen Ball? drehe! else { // sieht Ball: Vector a = (goal != null)? Vector.vec(goal.X.c,ball.X.c) : // berechne Vector.vec(ball.X.c,self.X.c); // Drehachse Matrix X = Matrix.mul(ball.X,Matrix.rot(a,(self.r+ball.r)/sphere.rad)); Complex x = sphere.warp(X.c); // X ist die Schussposition double l = -x.arg() + Math.max(0.2,1-10*Math.abs(x.arg())); // drehe und double r = x.arg() + Math.max(0.2,1-10*Math.abs(x.arg())); // fahre zu X double q = (x.abs() < ball.r)? 0.5 : 0; // falls auf X: Schuss! action(q*Qmax,l*Fmax,r*Fmax); } } } }
-
Field Summary
Fields Modifier and Type Field Description protected static int
BALL
Typ-Konstante: Ball (von der Klasse Puck übernommen)protected int
channel_n
Spieler-Nummer des Channelsprotected int
channel_t
Team-Nummer des Channelsdouble
energy
Energie beim letzten Lookprotected static int
NODE
Typ-Konstante: Node (von der Klasse Puck übernommen)double
penalty
Penalty beim letzten LookPuck[]
pucks
Array der Objekte des letzten Looks, die gesehen oder gehört wurdenPuck
self
Verweis auf sich selbst im Array der Objekte des letzten Looksdouble
time
Zeitpunkt des letzten Looksprotected static int
UNIT
Typ-Konstante: Unit (von der Klasse Puck übernommen)Fields inherited from class hoverball.Hovlet
background, BANNER, foreground, hovlets, icon, main, menubar, parent, title
-
Constructor Summary
-
Method Summary
Modifier and Type Method Description protected void
action(double Q, double F_L, double F_R)
Sendet eine Aktion.protected void
action(double Q, double F_L, double F_R, java.lang.String message)
Sendet eine Aktion und eine Botschaft.protected void
action(java.lang.String message)
Sendet eine Botschaft.protected boolean
connecting(java.lang.String server)
[Implementierung]protected void
debug(Debug debug)
Setzt ein Debug-Objekt.protected void
debug(Debug debug, int color)
Setzt ein Debug-Objekt mit angegebener Farbe.protected void
disconnecting()
[Implementierung]protected static java.lang.String
format(double d)
protected static java.lang.String
format(Complex c)
protected static java.lang.String
format(Matrix M)
protected static java.lang.String
format(Vector v)
protected boolean
look()
Erbittet einen neuen Look.protected abstract void
loop()
Frei für die Implementierung der Denk-Schleife.protected double
option(java.lang.String key)
Liefert den Wert einer Simulator-Option, die beim Checkin empfangen wurde.protected Puck
puck(int what, int t, int n)
Liefert den Puck mit der angegebenen Identität aus dem Puck-Array.protected Puck
puck(java.lang.String id)
Liefert den Puck mit der angegebenen Identität aus dem Puck-Array.
-
Field Details
-
NODE
protected static final int NODETyp-Konstante: Node (von der Klasse Puck übernommen)- See Also:
- Constant Field Values
-
BALL
protected static final int BALLTyp-Konstante: Ball (von der Klasse Puck übernommen)- See Also:
- Constant Field Values
-
UNIT
protected static final int UNITTyp-Konstante: Unit (von der Klasse Puck übernommen)- See Also:
- Constant Field Values
-
channel_t
protected int channel_tTeam-Nummer des Channels -
channel_n
protected int channel_nSpieler-Nummer des Channels -
time
public double timeZeitpunkt des letzten Looks -
energy
public double energyEnergie beim letzten Look -
penalty
public double penaltyPenalty beim letzten Look -
pucks
Array der Objekte des letzten Looks, die gesehen oder gehört wurden -
self
Verweis auf sich selbst im Array der Objekte des letzten Looks
-
-
Constructor Details
-
Unit
public Unit(java.lang.String name)öffnet eine Unit.- Parameters:
name
- Name der Unit
-
Unit
public Unit(java.lang.String team, java.lang.String name)öffnet eine Unit.- Parameters:
team
- Name des Teamsname
- Name der Unit
-
Unit
public Unit(java.lang.String name, int color)öffnet eine Unit.- Parameters:
name
- Name der Unitcolor
- Farbe
-
Unit
public Unit(java.lang.String team, java.lang.String name, int color)öffnet eine Unit.- Parameters:
team
- Name des Teamsname
- Name der Unitcolor
- Farbe
-
-
Method Details
-
puck
Liefert den Puck mit der angegebenen Identität aus dem Puck-Array.- Parameters:
what
- Typ des Objektst
- Team-Nummern
- Puck-Nummer- Returns:
- den gesuchten Puck (oder
null
, falls nicht gefunden)
-
puck
Liefert den Puck mit der angegebenen Identität aus dem Puck-Array.- Parameters:
id
- Identitäts-String- Returns:
- den gesuchten Puck (oder
null
, falls nicht gefunden)
-
option
protected double option(java.lang.String key)Liefert den Wert einer Simulator-Option, die beim Checkin empfangen wurde.Es werden nicht alle Simulator-Optionen an die Units versendet.
- Parameters:
key
- Simulator-Option- Returns:
- den Wert
-
look
protected boolean look()Erbittet einen neuen Look.Der Methode sollte in der Denk-Schleife der Unit aufgerufen werden. Sie aktualisiert die Variablen
time
,pucks
undself
.Der Thread wird so lange angehalten, bis die Unit vom Simulator einen neuen Look erhält. Wird das Spiel unterbrochen, so liefert die Methode den Wert
false
und die Schleife sollte verlassen werden.- Returns:
true
, falls das Spiel weitergeht
-
action
protected void action(double Q, double F_L, double F_R)Sendet eine Aktion.Soll ein Parameter der Aktion unverändert bleiben, kann der Wert mit
Double.NaN
maskiert werden.- Parameters:
Q
- LadungF_L
- Antriebskraft linksF_R
- Anrtiebskraft rechts
-
action
protected void action(java.lang.String message)Sendet eine Botschaft.- Parameters:
message
- Message
-
action
protected void action(double Q, double F_L, double F_R, java.lang.String message)Sendet eine Aktion und eine Botschaft.Soll ein Parameter der Aktion unverändert bleiben, kann der Wert mit
Double.NaN
maskiert werden.- Parameters:
Q
- LadungF_L
- Antriebskraft linksF_R
- Anrtiebskraft rechtsmessage
- Message
-
loop
protected abstract void loop()Frei für die Implementierung der Denk-Schleife. -
debug
Setzt ein Debug-Objekt.- Parameters:
debug
- Debug-Objekt
-
debug
Setzt ein Debug-Objekt mit angegebener Farbe.- Parameters:
debug
- Debug-Objektcolor
- Farbe
-
format
protected static java.lang.String format(double d) -
format
-
format
-
format
-
connecting
protected final boolean connecting(java.lang.String server)[Implementierung]- Overrides:
connecting
in classHovlet
- Parameters:
server
- Netzwerk-Adresse- Returns:
true
, falls Verbindung erfolgte
-
disconnecting
protected final void disconnecting()[Implementierung]- Overrides:
disconnecting
in classHovlet
-