locked
"Was die Oma noch wusste..." - kleine unscheinbare Kniffe die das Leben einfacher machen

    Allgemeine Diskussion

  • Ich dachte mir viele von euch haben sicher schon die eine oder andere Sache herausgefunden die den anderen hier recht hilfreich sein kann. Unsere Entwicklersicht auf die Dinge ist vielleicht manchmal etwas kompliziert oder undurchsichtig oder wir stellen uns die allgemeine Herangehensweise an die KI-Programmierung etwas anders vor. Deshalb postet hier über all die scheinbar trivialen Dinge die vielleicht doch nicht jeder kennt...

    Ein schönes Beispiel ist von Marco:
    wenn man innerhalb der Ameisen-Ereignissen das Schlüsselwort "this." verwendet erhält man automatisch eine Befehls- und Variable-Auflistung vom VisualStudio. So kann man parallel zur Dokumentation einen Überblick über vorhandene Möglichkeiten erhalten.

    Wers genau wissen will:
    this wird in C# als Schlüsselwort für das aktuelle Objekt verwendet. Ein KI-Programmierer baut in AntMe eine Ameisen-Klasse aus der später in der Simulation dann Objekte entstehen. Für jede Ameise wird ein eigenes Objekt erzeugt in denen dann die entsprechenden Methoden wie "sieht(zucker)" ausgeführt werden. Wenn also innerhalb der Methoden "this" verwendet wird meint man damit das aktuelle Objekt und würde damit explizit hinweisen. Da standardmäßig Befehle immer erst im aktuellen Kontext, also dem aktuellen Objekt gesucht werden ist this aber nur in wenigen Fällen erforderlich
    Montag, 6. November 2006 23:29

Alle Antworten

  • ...und wieder ein kleiner Beitrag zum Thema "aaah, ja klar. Warum hat mir das nicht schon früher jemand gesagt?!"

    Diesmal gehts um eine recht brauchbare Hilfsklasse der Ameisensimulation, der "Koordinate".

    Koordinate stellt 2 recht brauchbare Methoden zur Verfügung: BestimmteRichtung() und BestimmeEntfernung() mit dem die absolute Richtung und die Entfernung zwischen 2 Objekten ermittelt werden kann.

    Durch eingabe von "Koordinate.BestimmteRichtung(objekt1, objekt2);" lässt sich die absolute Richtung zwischen objekt1 und objekt2 bestimmen. Diese absolute Richtung lässt sich dann beim sprühen von Markierungen oder beim ausrichten der Ameise durch "DreheInRichtung()" verwenden.
    objekt kann dabei ein beliebiges Objekt auf der Spielfläche sein. Ameisen, Bauten, Käfer, Zuckerhaufen,.... Konkretes Beispiel: Man will ermitteln in welcher Richtung sich der Käfer befindet der in dem Ereignis "sieht(käfer)" von einer Ameise erspäht wurde so kann man "Koordinate.BestimmeRichtung(this, käfer);" verwenden. Wenn man die Parameter umdreht erhält man übrigens gleich eine gute Fluchtrichtung für die Ameise ;-)

    Der Befehl "Koordinate.BestimmeEntfernung(objekt1, objekt2);" ist ähnlich cool. Damit lässt sich nämlich die exakte Entfernung zwischen zwei objekten ermitteln. Das kann man beispielsweise dazu verwenden um in "istUnterwegs()" herauszufinden wie weit die Ameise noch zu ihrem Ziel laufen muss.

    Ich hoffe das war hilfreich, und somit viel Erfolg beim bestimmen der Richtung - der erste Platz auf Marcos Rangliste wartet auf euch ;-)

    ...vom T¢m
    Mittwoch, 8. November 2006 01:46