|
 |
 |
 |
|
|
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: Fr, 19.10.2007 22:12:21
In-reply-to:
<000001c81283$1b6ea170$fe78a8c0@mexpnew>
References:
<000001c81283$1b6ea170$fe78a8c0@mexpnew>
Hallo,
Am 19.10.2007 um 21:06 schrieb Frank Menzel:
Hallo,
in der todo-Liste ist mir vorhin der folgende Punkt aufgefallen:
Gefahren bot-logik.c Low-Level-Verhalten muessen
andere ueber Gefahren warnen
Ich wollte dazu nur kurz anmerken, dass es diesen Punkt eigentlich
bereits realisiert gibt, aber nie direkt so gesagt wurde.
Dazu gibt es ja die Funktion register_emergency_proc, welche ich
auch an
mehreren Stellen einsetze. Damit können beliebige Verhalten ihre
eigenen
Routinen registrieren, um auf einen Notfall verhaltensabhängig
reagieren
zu können. Die Verhaltensroutinen werden durch die Registrierung in
einem kleinen Array gespeichert und bei Gefahr der Reihe nach
abgearbeitet mittels der Routine start_registered_emergency_procs
in den
Gefahrensverhalten:
-behaviour_hang_on
-behaviour_avoid_border
das Problem ist, dass ein Verhalten nicht direkt weiß, ob ein
Notfallverhalten lief. Natürlich könnte man über den beschriebenen
Mechanismus für jedes Verhalten eine Funktion machen, die für jeden
Notfall irgendwo einen Wert "Notfall_X_trat_auf" auf True setzt, das
ist aber a) viel zu viel Overhead und b) ist dann immer noch unklar,
wann der Notfall auftrat und ob es jetzt noch interessant ist.
Besser wäre daher, dass die Verhalten selbst nachschauen können, was
vor ihnen passiert ist. Das hatten wir hier ja schon mal diskutiert
und darauf bezieht sich IMHO der Punkt in der ToDo-Liste.
Gruß Timo
|
|
|