Kapselung des Wissens eines Agenten ueber seine Umwelt und sich selbst
Kapselung des Wissens eines Agenten ueber seine Umwelt und sich selbst.Bemerkungen zu einzelnen Wissenselementen:
Situation: Ein Objekt, in Modelle der dem Spieler bekannten, sich auf dem Spielfeld bewegenden Objekte enthalten sind. Diese Modelle (die von ModelledObject abstammen), enthalten u.A. die absoluten Koordinaten auf dem Spielfeld und die Geschwindigkeit.
Initiative: Wer als naechster den Ball spielen darf. Die Mannschaft, die nicht die Initiative hat, muss warten, bis die Mannschaft mit Initiative den Ball beruehrt hat. Anfangs bekommt die auf der linken Seite spielende Mannschaft die Initiative.
Die Klasse ist nicht zur Vererbung geeignet.
Quelltext
[Header | [Implementierung]
CVS Informationen zum Interface
************************************************** * * Aktueller Stand * * $RCSfile: WorldModel.h,v $ * $Revision: 1.63 $ * $Date: 1998/08/14 13:21:34 $ * $Author: myritz $ * **************************************************
Nur die Initialisierungs- und der Rollentauschroutine setzen die
Anfangspositionen um.
Die haeufigste Verwendung ist sicher die Frage nach der aktuellen
Situation. Der Parameter timeStepOffset ist per Default auf 0 gesetzt, so
dass mit situation() auf die aktuelle Situation zugegriffen werden kann.
Index 1: Position bei Anstoß des Gegners Index 2: Position während des normalen Spiels.
Index 0: Position bei eigenem Anstoß Index 1: Position bei Anstoß des Gegners Index 2: Position während des normalen Spiels.
Mögliche Spielzustände
const int GAME_STATE_MIN
const int BEFORE_KICK_OFF
const int TIME_OVER
const int PLAY_ON
const int KICK_OFF
const int KICK_IN
const int FREE_KICK
const int CORNER_KICK
const int GOAL_KICK
const int GOAL
const int FOUL
const int HALF_TIME
const int TIME_UP
const int TIME_UP_WITHOUT_A_TEAM
Mögliche Entscheidungsgründe.
WorldModel anlegen
WorldModel( Sensors *sensors )
Anfragen zum Agenten
int playerNumber()
const String& teamName()
int side()
int id()
Vector basePosition( int aGameState = UNDEF_INT, int anInitiative = UNDEF_INT )
anInitiative - Einer der Werte von in Teams.
Vector initialPosition( int aGameState = UNDEF_INT, int anInitiative = UNDEF_INT )
anInitiative - Einer der Werte von in Teams.
Werte des Agenten setzen
void setPlayerNumber( int newPlayerNumber )
void setTeamName( const String& newTeamName )
void setSide( int newSide )
void setBasePosition( int aGameState, int anInitiative, const Vector& pos )
anInitiative - Einer der Werte von in Teams. void setInitialPosition( int aGameState, int anInitiative, const Vector& pos )
anInitiative - Einer der Werte von in Teams. Anfragen zur aktuellen Situation
const ModelledPlayer& player( int playerId = SELF_ID )
InvalidIdException , wenn die playerId ungueltig ist.
const ModelledBall& ball()
int simStep()
const Situation& situation( int timeStepOffset = 0 )
int gameState()
int decisionReason()
int initiative()
bool hasInitiative( int aTeamId )
bool amIOneOfTheNearestPlayerToBall()
int score(int aTeamId)
const Field& field()
RasteredPlayground& rasteredPlayground()
int simStepOfLastCatch()
int simStepOfLastSay()
int simStepOfLastRefereeDecision()
const Vector& enemyGoal()
const Vector& ourGoal()
const Vector& ourGoalTop()
const Vector& ourGoalBottom()
int role()
Werte der aktuellen Situation setzen
void setSimStep( int newValue )
void setGameState( int newGameState )
void setDecisionReason( int newDecisionReason )
void setInitiative(int newValue)
void setScore( int newScore, int aTeamId )
aTeamId - Id des Teams. Gueltig sind OUR_TEAM_ID und THEIR_TEAM_ID
void setRole( int newRole )
Verbindung zu Sensors und Effektors
void integrateSensorInfo()
modelOfSelf
addSeenObjects
mergeOldSituationsIntoSituation
processAudioInfo void integrateHearInfo()
void registerExecution( const Action& anAction )
void updateWithAction( const Action& anAction )
void mergeSituations( Situation& trustedSituation, Situation& anotherSituation )
anotherSituation - andere Situation, dessen Daten einverleibt werden
sollen.
Abfragen zur Vorzugsrichtung
Vector preferredKickDirection( const Vector& pos )
int region( const Vector& pos )
String encode( int number )
int decode( String string )
String toString()
Sensors* theSensors
Field theField
mutable Array <Situation> theSituations
int currentSituationIndex
int historyCount
int situationFieldSize
String theTeamName
int thePlayerNumber
int theSide
int theScore[2]
int theInitiative
int theGameState
int theDecisionReason
int theSimStepOfLastCatch
int theSimStepOfLastSay
int theSimStepOfLastRefereeDecision
Array <Vector> theBasePositions
Array <Vector> theInitialPositions
Array <Action> theExecutedActions
static const double OUTER_LIMIT
static const double INNER_LIMIT
int theRole
RasteredPlayground theRasteredPlayground
void setSimStepOfLastCatch( int newSimStep )
void setSimStepOfLastSay( int newSimStep )
void setSimStepOfLastRefereeDecision( int newSimStep )
void addCurrentSituation( const Situation& aSituation )
void removeCurrentSituation()
void synchronizeSituations( int simStep )
const ModelledPlayer modelOfSelf()
void addSeenObjects( Situation& newSituation )
int indexOfCorrespondingPlayer( ModelledPlayer player, Situation situation )
situation - Situation in der der korrespondierende Spieler gesucht
wird
ModelledBall mergeBalls( const ModelledBall& trustedBall, const ModelledBall& anotherBall, const ModelledPlayer& mySelf )
anotherBall - anderer Ball, dessen Daten einverleibt werden sollen.
mySelf - der Spieler, der den Ball sehen müßte, wenn
er vor ihm liegt. ModelledPlayer mergePlayers( const ModelledPlayer& trustedPlayer, const ModelledPlayer& anotherPlayer )
anotherPlayer - anderer Spieler, dessen Daten einverleibt werden
sollen.
mySelf - der Spieler, der den Spieler sehen müßte, wenn
er in seinem Blickfeld ist. Vector relativePos( const Vector& seenPos, double faceDir )
Der - eigene Blickwinkel
Vector relativeSpeed( const Vector& relativePos, const Vector& seenChangeOfPos )
seenChangeOfPos - Vektor, der die relative Winkel- und
Entfernungsaenderung des Objekts enthaelt
void processAudioInfo( Situation& newSituation, const Array<Message>& messages )
Array - mit den gehoerten Nachrichten void processRefereeMessage( const Message& message )
void processOurTeamMessage( Situation& newSituation, const Message& message )
int positionIndexFromState( int aGameState, int anInitiative )
void improveConsistency()
class NoCorrespondingPlayerException: public Exception
Einleitung | Architektur | Dynamische Zusammenhänge | Referenzhandbuch | FAQ | Anhang A | Anhang B
generated by doc++