class GoalieOption : public PassiveOption

Diese Klasse ist fuer das Torwartverhalten zustaendig

Inheritance:


Public Methods

virtual StorableObject* copy()
Legt eine Kopie des Objekts auf dem Heap an und liefert einen Zeiger darauf zurueck
Plan generatePlan()
Erzeugt einen Plan zur Umsetzung der Absicht
GoalieOption()
Erzeugt eine GoalieOption
bool isCatchAtOnce()
Flags abfragen
virtual String toString()
Beschreibung als String fuer die Ausgabe auf einem Terminal

Private Fields

double goalieDistFromGoal
Distanz vom Tor, in der sich der Torwart normalerweise aufhaelt
int isBetterAsGoalie
Bestimmt ab welcher Entfernung eines Mitspielers der Torwart kein Intercept macht
mutable bool theCatchAtOnce
Flag f"ur sofortiges catch
static int theFreeKickSimStep
simStep des letzten Freistoss
mutable bool theGoalieIntercept
Flag f"ur Goalie-Intercept
mutable bool theGoToGoalieHomePosition
Flag f"ur GoToGolieHomePosition
mutable bool theNormalView
Flag f"ur 90 Gradwinkel Sichtwinkel
mutable bool thePositionPlay
Flag f"ur Positionsspiel

Private Methods

int baseUtility()
Der Grundnutzen des Wunsches
void computeHomePosition()
Generiert die Aktionen und setzt die Flags um zur HomePos zu kommen
void computePositionPlay()
Berechnet das Ziel, wenn der Ball in der Penalty-Area ist
int constraintCost( const Constraint *constraint )
Liefert die Kosten, die durch die Einhaltung einer Nebenbedingung entstehen
bool forceContinuation()
ForceContinuation wird neu definiert, weil das Umschalten des Sichtwinkels erzwungen werden muss
int GoalieOption::computeGoalieIntercept()
Generiert den GoalieIntercept
bool GoalieOption::isCatchPossible()
Testet, ob ein Catch moeglich ist
bool isBackwardsRunUseful()
Testet, ob durch Rueckwaertslaufen der Ball im Sichtfeld bleibt
bool isBallInPenaltyArea(const Vector& aVector)
Ist der Ball im Strafraum ?
bool isDangerousPos( const Vector& aPos)
Ist eine Position gefährlich nah am Tor?
bool isTeamMateInBallZone()
Testet, ob sich ein TeamMate in dem Korridor befindet, der von der Linie zwischen errechnetem target() und dem Ball geht
Plan movementTo( const Vector& target, const double targetRadius = TRIANGULATION_ACCURACY, const double staminaLimit = 0, const int specialBehaviors = Skills::AVOID_OBSTACLES )
Erzeugt einen Plan, der den Agenten auf die gewünschte Position bringt
bool ourPlayerDefense(const Situation& situation, ModelledBall& ball, int nearestPlayerSteps)
Beantwortet die Frage, ob noch ein eigener Spieler mit grosser Wahrscheinlichkeit zwischen Tor und Ball kommt
void positionPlay(double addition = 0)
Berechnet die Zielposition fuer das Positionsspiel
void setAllFlags()
Setzt alle zur Planberechnung notwendigen Flags auf Defaultparameter
void setCatchAtOnce( bool on )
Setzen des catchAtOnce-Flags
void setFreeKickSimStep( int newSimStep )
Setzen des Zeitpunktes des letzten Freistoss
void setGoalieIntercept( bool on )
Setzen des doIntercept-Flags
void setGoToGoalieHomePosition( bool on )
Setzen des toGolieHomePosition-Flags
void setNormalView( bool on )
Setzen des Normal-View-Flags
void setPositionPlay( bool on )
Setzen des positionPlay-Flags

Private

Werte abfragen

Inherited from PassiveOption:

Public Methods

virtual int cancellationCost()
virtual bool isPossible()

Public

Mögliche Gründe die einen Abbruch des laufenden Planes

const int CANCEL_REASON_REFEREE_DECISION
const int CANCEL_REASON_NEW_BALL_INFO
const int CANCEL_REASON_CONT_TIME_EXPIRED
const int CANCEL_REASON_PLAN_COMPLETED
const int ALL_CANCEL_REASONS

Protected Fields

static const int NO_CONTINUATION

Protected Methods

int cancelReasons()
Vector closestNonOffsideTarget( const Vector& aTarget )
int forceContinuationTime()
bool isCancelReasonActive( int aReason )
bool isDefenseSituation()
bool isPlanCompleted()
Plan isSomethingToSay()
bool isTargetComputed()
void noCancelByReasons( int reasons )
void setCancelReasons( int reasons = ALL_CANCEL_REASONS )
void setForceContinuationTime( int timeSteps )
void setIsPlanCompleted( bool isPlanCompleted = YES )
void setIsTargetComputed( bool isTargetComputed )
void setTarget( const Vector& aTarget )
const Vector& target()

Private Fields

mutable int theCancelReasons
mutable int theForceContinuationTime
mutable bool theIsPlanCompleted
mutable bool theIsTargetComputed
mutable Vector theTarget

Inherited from Option:

Public Methods

virtual void adaptToPreviousIntention( const Option *previousIntention )
void setConstraints( const Array<Constraint *>& constraints )

Protected Fields

mutable Array <Constraint *> acceptedConstraints
Array <Constraint *> requestedConstraints

Protected Methods

int computeExpectedUtility()
bool isConstraintAccepted( int constraintId )
bool isOptionPossible()
void setIsOptionPossible( bool isOptionPossible )

Private Fields

mutable bool theIsOptionPossible

Inherited from Constraint:

Public Methods

int expectedUtility()
int id()

Protected Fields

mutable int simStepOfUtilityCalculation
mutable int theExpectedUtility
int theId

Inherited from StorableObject:

Public

Ausgabe auf dem Terminal

void printOn(ostream& = cout)
Ausgabe der Beschreibung auf einen Stream
virtual String toString()
Beschreibung als String fuer die Ausgabe auf einem Terminal

Objekte anlegen und zerstören

virtual StorableObject* copy()
Legt eine Kopie des Objekts auf dem Heap an und liefert einen Zeiger darauf zurück
virtual ~StorableObject()
Der virtuelle Destruktor

Documentation

Diese Klasse ist fuer das Torwartverhalten zustaendig.

Zunaechst wird immer der Ball beobachtet. Beim Eintritt in die eigene Haelfte wird die Moeglichkeit eines Torschusses geprueft. Besteht die Gefahr, daß der Gegner als naechstes den Ball bekommt, wird ein idealer Punkt innerhalb eines 7 m Radius' um den Tormittelpunkt berechnet und dorthin gegangen. Unterschreitet der Gegner 25m Distanz und kann kein eigener Spieler mit grosser Wahrscheinlichkeit noch zwischen Tor und Gegner kommen, l"auft der Torwart bis 2m vor die Strafraumgrenze dem Ball entgegen. Kann doch noch ein eigener Verteidiger dazwischen kommen, dann wird nur 2m entgegengelaufen. Wird der Ball im Strafraum sein, versucht der Torwart ihn mit den F"ussen zu erreichen, geht das nicht, versucht er ihn zu catchen. Unterschreitet ein Gegner die Distanz von 19 m (entspricht einem Ballweg von 9 Takten bei einem Schuss mit 2.7) wird der Blickwinkel auf 45° verringet.

Quelltext

[Header | [Implementierung]

CVS Informationen zum Interface

  **************************************************
  *
  * Aktueller Stand
  *
  *   $RCSfile: GoalieOption.h,v $
  *   $Revision: 1.8 $
  *   $Date: 1998/08/14 13:20:41 $
  *   $Author: myritz $ 
  *
  **************************************************
  
GoalieOption()
Erzeugt eine GoalieOption

Plan generatePlan()
Erzeugt einen Plan zur Umsetzung der Absicht.

virtual String toString()
Beschreibung als String fuer die Ausgabe auf einem Terminal

virtual StorableObject* copy()
Legt eine Kopie des Objekts auf dem Heap an und liefert einen Zeiger darauf zurueck. Diese Methode muss fuer JEDE Unterklasse neu definiert werden.

double goalieDistFromGoal
Distanz vom Tor, in der sich der Torwart normalerweise aufhaelt

int isBetterAsGoalie
Bestimmt ab welcher Entfernung eines Mitspielers der Torwart kein Intercept macht

mutable bool theGoalieIntercept
Flag f"ur Goalie-Intercept

mutable bool theGoToGoalieHomePosition
Flag f"ur GoToGolieHomePosition

mutable bool theCatchAtOnce
Flag f"ur sofortiges catch

mutable bool thePositionPlay
Flag f"ur Positionsspiel

mutable bool theNormalView
Flag f"ur 90 Gradwinkel Sichtwinkel

static int theFreeKickSimStep
simStep des letzten Freistoss

void setGoalieIntercept( bool on )
Setzen des doIntercept-Flags

void setGoToGoalieHomePosition( bool on )
Setzen des toGolieHomePosition-Flags

void setCatchAtOnce( bool on )
Setzen des catchAtOnce-Flags

void setPositionPlay( bool on )
Setzen des positionPlay-Flags

void setNormalView( bool on )
Setzen des Normal-View-Flags

void setFreeKickSimStep( int newSimStep )
Setzen des Zeitpunktes des letzten Freistoss

Werte abfragen

bool isCatchAtOnce()
Flags abfragen

bool isDangerousPos( const Vector& aPos)
Ist eine Position gefährlich nah am Tor?

bool isBallInPenaltyArea(const Vector& aVector)
Ist der Ball im Strafraum ?

bool isBackwardsRunUseful()
Testet, ob durch Rueckwaertslaufen der Ball im Sichtfeld bleibt. Die Methode geht davon aus, daß target() das Laufziel enthält.

bool isTeamMateInBallZone()
Testet, ob sich ein TeamMate in dem Korridor befindet, der von der Linie zwischen errechnetem target() und dem Ball geht. Die Breite Des Korridors entspricht der doppelten Distanz zwischen Torwart und seinem target().

int baseUtility()
Der Grundnutzen des Wunsches. Dieser Teil der Nutzenberechnung ist nur vom Weltmodell abhaengig.
Returns:
Ein Wert zwischen MAX_UTILITY und MIN_UTILITY.

int constraintCost( const Constraint *constraint )
Liefert die Kosten, die durch die Einhaltung einer Nebenbedingung entstehen.
Returns:
Ein Wert zwischen NEUTRAL_COST und MAX_COST.
Parameters:
constraint - Zeiger auf die einzuhaltende Nebenbedingung

bool forceContinuation()
ForceContinuation wird neu definiert, weil das Umschalten des Sichtwinkels erzwungen werden muss

bool ourPlayerDefense(const Situation& situation, ModelledBall& ball, int nearestPlayerSteps)
Beantwortet die Frage, ob noch ein eigener Spieler mit grosser Wahrscheinlichkeit zwischen Tor und Ball kommt

void computeHomePosition()
Generiert die Aktionen und setzt die Flags um zur HomePos zu kommen

void setAllFlags()
Setzt alle zur Planberechnung notwendigen Flags auf Defaultparameter

bool GoalieOption::isCatchPossible()
Testet, ob ein Catch moeglich ist

int GoalieOption::computeGoalieIntercept()
Generiert den GoalieIntercept

void computePositionPlay()
Berechnet das Ziel, wenn der Ball in der Penalty-Area ist

void positionPlay(double addition = 0)
Berechnet die Zielposition fuer das Positionsspiel
Parameters:
addition - Entfernung, die der Torwart dem Ball zusaetzlich entgegen laufen soll

Plan movementTo( const Vector& target, const double targetRadius = TRIANGULATION_ACCURACY, const double staminaLimit = 0, const int specialBehaviors = Skills::AVOID_OBSTACLES )
Erzeugt einen Plan, der den Agenten auf die gewünschte Position bringt. Wenn möglich, wird gebeamt, sonst muß wird gotoRegion gemacht. Dabei werden Hindernisse immer umgangen. Ist der Agent schon an der gewünschten Position, dreht er sich zum Ball.
Parameters:
target - Absoluter Zielvektor
targetRadius - Zielradius für gotoRegion. Kann gebeamt werden, wird genau auf die gewünschte Position gebeamt.
staminaLimit - fuer gotoRegion.
See Also:
gotoRegion
beamToPosition


This class has no child classes.

alphabetic index hierarchy of classes


Hauptseite

Einleitung | Architektur | Dynamische Zusammenhänge | Referenzhandbuch | FAQ | Anhang A | Anhang B

generated by doc++