Von Ameisen lernen
Teil 3: Microsoft AntMe
- Microsoft AntMe
- Teil 2: Microsoft AntMe
- 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.

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.

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.

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.

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.
Gutscheine
-
HelloFresh
Bis zu 120€ + GRATIS Versand der 1. Box mit den HelloFresh Rabattcodes Zum Gutschein
bis 31.01.2024+ bis zu 4,00€ Cashback -
FARFETCH
30% FARFETCH Rabattcode Zum Gutschein
bis 25.09.2023 -
Parfümerie Pieper
10% Parfümerie Pieper Gutschein zum Herbstanfang Zum Gutschein
bis 24.09.2023+ bis zu 3,0% Cashback -
Cyberport
25€ EXTRA Cyberport Gutschein im Technik-Sale Zum Gutschein
bis 27.09.2023+ bis zu 0,5% Cashback -
XXXLutz
XXXLutz Red Shopping Week 30% Rabatt + 25% Gutschein Zum Gutschein
bis 24.09.2023+ bis zu 3,0% Cashback -
C&A Gutscheine und Angebote
C&A Gutschein: 10% extra Rabatt auf alle Oberteile Zum Gutschein
bis 27.09.2023+ bis zu 3,5% Cashback