c't

c't-Projekte - Mailinglisten


[Voriger (Datum)] [Nächster (Datum)] [Voriger (Thread)] [Nächster (Thread)]
[Nach Datum][Nach Thread]

Re: [ct-bot] neues Verhalten bot_cancel_behaviour

Absender: Timo Sandmann
Datum: Mo, 22.10.2007 09:15:41
In-reply-to: <812F86EC9E1A96489D5E83C2AB7D6886015783CE@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
References: <812F86EC9E1A96489D5E83C2AB7D6886015783CE@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>


Hallo Frank,

Am 22.10.2007 um 07:40 schrieb Menzel, Frank IT-OO4:
Hallo Timo,
Du hast nun zusätzlich deactivateCalledBehaviours eingebaut. Dies hat nun zur Folge, dass das Verhalten1, welches das Cancel- Verhalten als auch das abzubrechende Verhalten2 aufruft, nicht wieder aktiviert wird nach Zuschlagen der Abbruchbedingung.

Zur Verdeutlichung:
Verhalten 1 ruft also auf:
-Verhalten2 mit data-Verhalten1
-cancel-Verhalten ebenfalls mit data-Verhalten1, um Verhalten2 abzubrechen


Nun trifft Abbruchbedingung des Cancel-Verhaltens zu und Verhalten2 wird abgebrochen. Verhalten2 erreicht nicht die Endestelle mit return_from_behaviour. Das Cancelverhalten erreicht zwar return_from_behaviour, es wird aber scheinbar der caller vorher durch deactivateCalledBehaviours initialisiert und damit Verhalten 1 nach Rückkehr nicht mehr aktiviert.

und das so früh am Morgen... ich glaube, ich weiß aber, was du meinst.
Sollte nicht ein Aufruf von bot_cancel_behaviour(NULL) (also kein Caller), das Problem umgehen?

Nach Auskommentieren von deactivateCalledBehaviours funktioniert es wieder.

Aber ohne deactivateCalledBehaviours(), lassen sich keine Verhalten deaktivieren, die andere Verhalten starten, wie z.B. solve_maze(). Da solve_maze() fast nie selbst aktiv ist, sondern nur die vom ihm gestarteten Hilfsverhalten, läuft deactivateBehaviour() dann ins Leere und nichts passiert.

Gruß Timo