|
 |
 |
 |
|
|
c't Projekte - c't-Bot und c't-Sim -
Mailinglisten
[Voriger (Datum)]
[Nächster (Datum)]
[Voriger (Thread)]
[Nächster (Thread)]
[Nach Datum][Nach Thread]
Absender: Timo Sandmann
Datum: Mo, 22.10.2007 11:25:02
In-reply-to:
<812F86EC9E1A96489D5E83C2AB7D68860157848D@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
References:
<812F86EC9E1A96489D5E83C2AB7D68860157848D@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
Hallo Frank,
Am 22.10.2007 um 09:37 schrieb Menzel, Frank IT-OO4:
Hallo Timo,
bb früh am Morgen oder am Abend, Du bist immer so schnell mit
Antworten. Wie machst Du das bloß :-?
na ja, hängt ein bisschen von meinem Stundenplan und Akkufüllstand
ab ;-)
Meist ist es aber einfacher, direkt zu antworten, als die eMail erst
auf die ToDo-Liste zu setzen.
Wenn bot_cancel_behaviour mit NULL aufgerufen wird, so wird ja auf
keinen Fall das Verhalten1 wieder aktiviert... Ja gut, man könnte
abfragen ob das Cancelverhalten deaktiviert wurde und erst dann im
Kontext des Verhaltens weitermachen. Aber gibt's nicht ein besseres
Mittel deactivateCalledBehaviours aufzurufen ohne caller zu
initialisieren ? Das passiert ja dann sowieso vom nachfolgenden
Aufruf return_from_behaviour.
Also irgendwas ist da aber noch merkwürdig (oder ich versteh's falsch):
Wenn Verhalten 1 das Verhalten 2 aufruft, ist 2->caller == 1.
Wenn Verhalten 1 außerdem cancel_behaviour(2) aufruft, ist cancel-
>caller == 1.
Trifft nun die Abbruchbedingung zu, ruft cancel deactivateCalled...
(2) auf, was alle Verhalten deaktiviert, die 2 gestartet hat und
deren Caller werden jeweils gelöscht.
Dann wird deactivateBehaviour(2) aufgerufen (bevor bot_behave() in
die nächste Runde geht), was 2 selbst deaktiviert und den Caller von
2 löscht.
Abschließend wird return_from_behaviour(cancel) aufgerufen, was
cancel deaktiviert und den cancel->caller aktiviert. cancel->caller
== 1, also müsste doch wieder 1 gestartet werden.
Aber wo ist jetzt der Denkfehler? Ich seh grad kein Problem mehr :-/
Gruß Timo
-----Original Message-----
From: ct-bot-entwickler-bounces@xxxxxxxxxxxxxxxxx [mailto:ct-bot-
entwickler-bounces@xxxxxxxxxxxxxxxxx] On Behalf Of Timo Sandmann
Sent: Monday, October 22, 2007 9:16 AM
To: Entwicklung rund um den c't-bot
Subject: Re: [ct-bot] neues Verhalten bot_cancel_behaviour
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
_______________________________________________
ct-bot-entwickler Mailingliste
ct-bot-entwickler@xxxxxxxxxxxxxxxxx
http://www.heise.de/bin/newsletter/listinfo/ct-bot-entwickler
Confidentiality note:
The information in this email and any attachment may contain
confidential and proprietary information of Heidelberger
Druckmaschinen AG and/or its affiliates and may be privileged or
otherwise protected from disclosure. If you are not the intended
recipient, you are hereby notified that any review, reliance or
distribution by others or forwarding without express permission is
strictly prohibited and may cause liability. In case you have
received this message due to an error in transmission, we kindly
ask you to notify the sender immediately and to delete this email
and any attachment from your system.
_______________________________________________
ct-bot-entwickler Mailingliste
ct-bot-entwickler@xxxxxxxxxxxxxxxxx
http://www.heise.de/bin/newsletter/listinfo/ct-bot-entwickler
|
|
|