Next: Ablauf des Fressens auf
Up: Übersicht: Ablauf von Bewegung
Previous: Das Insekt im Simulator
Betrachten wir nun, was passiert, wenn man von einem Insekten-Client
aus eine Bewegung des zugehörigen Insekts im Kernel veranlassen
möchte, also z.B. im InsectTool eine neue Position eingibt und diese
per 'doMove'-Button abschickt:
Zunächst wird vom Client über das Sim-Interface die
Funktion doMove() aufgerufen. Diese wird von der C++-Klasse
KerInsectImpl auf Kernel-Ebene implementiert.
Die Funktion doMove() errechnet nun aus den Zielkoordinaten und
den gegenwärtigen Koordinaten die zu bewältigende Distanz und teilt
dann unter Berücksichtigung der Geschwindigkeit diese Strecke in
mehrere gleichgroße Stücke auf.
Abbildung 2:
Ablauf der Bewegung eines Insekts im Simulator
|
Abbildung 3:
Ablauf der Bewegung im Kernel
|
Die Streckenpunkte werden daraufhin
über eine PositionList, einer Liste aus
x-y-Koordinatenpaaren an die physikalische Ebene übergeben. Dort
läuft die eigentliche Bewegung des 'Dings` dann zunächst unabhängig
an. Um die Bewegung jedoch weiter auf Kernel-Ebene zu überwachen, wird
im Hilfsobjekt Mover die Anzahl der Schritte und die zu
bewältigende Distanz gespeichert. Die Überwachung wird dabei in der
von der Methode start() durchlaufenen Endlosschleife (quasi der
'Herzschlag' des Insekts) durch den Aufruf der Funktion processMove() vorgenommen. Diese Methode befragt ihrerseits den Mover, ob die gewünschte Bewegung mit den vorhandenen
Energieressourcen vereinbar ist und inwieweit diese durch die Bewegung
reduziert werden. Sind nicht mehr genügend Ressourcen vorhanden, wird der physikalischen
Ebene ein Signal zum Stoppen der Bewegung übergeben, und das Ziel im
Mover gelöscht.
Problematisch könnte bei dieser Form der
Abarbeitung die direkte Verbindung zwischen Sim::Insect::doMove() und Physical::Thing::doMove() sein, die
bewirkt, daß ein wildgewordener Insekten-Client, durch endloses
Aufrufen von Bewegungsbefehlen in der Lage ist, den Ablauf auf der
physikalischen Ebene auszubremsen.
Next: Ablauf des Fressens auf
Up: Übersicht: Ablauf von Bewegung
Previous: Das Insekt im Simulator
Tim Paehler
1998-05-12