Von Ameisen lernen

Teil 3: Microsoft AntMe

  1. Microsoft AntMe
  2. Teil 2: Microsoft AntMe
  3. Teil 3: Microsoft AntMe

Nachdem die Ameisen ohne Intelligenz am Fleck verharren, fragt sich der Programmierer, wie dies zu ändern ist. Die Antwort gibt der Quellcode, indem er auf vordefinierte Ereignisse reagiert.

Das Prinzip ist einfach erklärt: Für jedes denkbare Ereignis, das während einer Spielphase auftreten kann, existiert im Code (Vorlage.cs) eine - noch leere - Methode. Jedes Mal, wenn nun ein bestimmtes Ereignis während der Spielphase auftritt, werden die Anweisungen im Rumpf der entsprechenden Ereignismethode ausgeführt.

Microsoft AntMe

© Archiv

Ist die Methode leer, sind dort also keine Anweisungen vorhanden, passiert natürlich nichts. Es verhält sich dann so, als ob die Methode gar nicht vorhanden oder das betreffende Ereignis gar nicht eingetreten wäre. Ihre Aufgabe ist es nun, die einzelnen Ereignismethoden möglichst geschickt zu codieren. Dabei stehen Ihnen eine Vielzahl vordefinierter - durchweg selbsterklärender - Programmbefehle zur Verfügung.

Selbstverständlich soll der Schwerpunkt Ihrer Programmiertätigkeit nicht im Tippen von Code liegen. Sie werden das Verhalten Ihrer Ameisen bereits deutlich verbessern, wenn Sie fürs Erste nur drei bis vier Methoden bearbeiten. Zunächst bietet es sich an, die Ameisen überhaupt in Bewegung zu setzen. Dafür eignet sich die Methode Wartet. Sie wird immer dann aufgerufen, wenn die Ameise nicht weiß, wohin sie gehen soll (eine Beschreibung der auslösenden Ereignisse finden Sie im Code jeweils oberhalb des Methodenkopfes als Kommentar). Für den aktuellen Zustand der Ameisen bedeutet dies, dass diese Ereignismethode praktisch ständig zum Zuge kommt. Hier müssen Sie also ansetzen: Zunächst soll die Ameise einfach geradeaus marschieren und zwar jeweils 200 Schritte.

Microsoft AntMe

© Archiv

Tragisch: Selbst im Ameisenhügel werden die Ameisen von Käfern gefressen.
public override void Wartet() { 
GeheGeradeaus(200); 
}

Da die Ameise nach jeder Ausführung, mangels anderem Ziel, wieder wartet, tritt das zugehörige Ereignis stets erneut auf. Was dazu führt, dass sich die Ameisen entsprechend ihrer Ausgangslage bei Spielbeginn sternförmig in gerader Linie aus dem Bau entfernen. Beim Erreichen des Spielfeldrandes wechseln sie automatisch die Richtung. Als Nächstes werden Sie Ihre Ameisen für die Nahrungssuche präparieren. Ihr Interesse an Zucker wecken Sie zum Beispiel dann, sobald sie ihn sehen.

public override void Sieht(Zucker 
zucker) { 
if (AktuelleLast == 0) 
{ 
GeheZuZiel(zucker); 
} 
}

Sobald die Ameise in einen bestimmten Radius zum Zucker tritt, wird sie sich nun gezielt zum Zucker hin bewegen. Sinnvollerweise nur dann, wenn sie nicht bereits ein Nahrungsmittel transportiert. Korrespondierend dazu behandeln Sie das Ereignis, das eintritt, wenn eine Ameise bei einem Zuckerhaufen ankommt.

public override void 
ZielErreicht(Zucker zucker) { 
Nimm(zucker); 
GeheZuBau(); 
}

Nun wird die Ameise ein Zuckerstück aufnehmen und sich damit auf den Weg zurück zum Bau machen. Nachdem sie den Zucker dort abgeliefert hat, wird sie sich - als Reaktion auf die Wartet-Methode - gleich wieder auf Nahrungssuche begeben. Was das Obst betrifft, implementieren Sie die Methoden Sieht und ZielErreicht (jeweils mit dem Parameter Obst) in der gleichen Weise. Allerdings müssen Sie hier berücksichtigen, dass ein Apfel nur als Ganzes transportiert werden kann. Das heißt, es sind mehrere Ameisen erforderlich, um ihn in den Bau zu tragen. Um herauszufinden, ob für einen bestimmten Apfel noch Träger fehlen, verwenden Sie die Methode BrauchtNochTräger.

Microsoft AntMe

© Archiv

public override void Sieht(Obst obst) { 
if (AktuelleLast == 0 &&
BrauchtNochTräger(obst)) 
{ 
GeheZuZiel(obst); 
} 
} 
... 
public override void ZielErreicht(Obst 
obst) { 
Nimm(obst); 
GeheZuBau(); 
}

Mit der if-Bedingung AktuelleLast == 0 && BrauchtNochTräger(obst) beschränken Sie das Ameiseninteresse am Apfel auf die Voraussetzungen, dass sie nicht mit eigener Last beschäftigt ist und für den Transport noch zusätzliche Kräfte erforderlich sind. Mit dem Logischen-Und (&&) verbinden Sie beide Teilbedingungen. Nun gilt es, den Ameisen bezüglich der Käfer geeignete Überlebensstrategien beizubringen. Wobei das Naheliegendste die Flucht ist.

public override void Sieht(Käfer käfer) 
{ 
LasseNahrungFallen(); 
GeheWegVon(käfer, 200); 
}

Als fortgeschrittener AntMe-Spezialist könnten Sie Ihren Ameisen auch vermitteln, gegen Käfer im Verbund - nur dann besteht Aussicht auf Erfolg - aggressiv vorzugehen. Idealerweise werden Sie das Verhalten situationsbedingt einrichten: Je nachdem, wie viele Kollegen als pozentielle Helfer gerade zur Verfügung stehen, lassen Sie die bedrohte Ameise angreifen oder flüchten.

Microsoft AntMe

© Archiv

KI getankt: Die Ameisen sind so fleißig, weil sie dauernd Nahrung suchen und natürlich finden.

Haben Sie einmal die Simulation mit Ihrem ersten Ameisenvölkchen eingerichtet, so geht es schließlich darum, die erworbenen Grundkenntnisse nach und nach zu verbessern. Frei von Zwang können Sie sich mit viel Spaß am Spiel an Ihren steigenden Fertigkeiten als Programmierer berauschen.

Mehr zum Thema

HTML 5
Webgestaltung

Google Web Designer ist spezialisiert auf HTML5. Ein Vorteil dieses Standards ist das einfache Einbinden von Videos mit dem Element video. Wir zeigen…
Wir verraten, wie Sie Fritzboxen und andere Router vor Hackern schützen.
Fritzbox, Asus, Belkin und Co.

Fritzbox, Asus, Belkin oder DLink - die Liste der geknackten Router ist lang. Hacker stahlen Passwörter oder NAS-Daten. So machen Sie Ihren Router…
Wir führen Sie zur eigenen Windows-App - unserem PC-Magazin-RSS-Feed.
C# und XAML

Wir zeigen, wie Sie Windows 8.1 Apps selbst programmieren können. Lernen Sie das App erstellen an Hand unseres Beispiels: dem RSS-Feed von PC…
Windows Tipps & Tricks: Benutzerrechte unter Windows 8.1
Programme richtig installieren

Wir zeigen Ihnen, wie Sie sich unter Windows 8.1 alle Benutzerrechte verschaffen und Programme richtig installieren.
Windows 8: Starbildschirm
Microsoft Project Siena

Erstellen Sie sich selbst eine App für Windows 8, die auf alle Funktionen Ihres Tablets zugreifen kann, inklusive Kamera, Mikrofon und Lautsprecher.…