Das große Krabbeln

Für viele Einsteiger steckt aber genau
bei der Sprache das Problem. Nicht
nur, dass man ohnehin schon komplizierte
Vorgänge, Konstrukte und Syntax (meist
in englischer Sprache dokumentiert) verstehen
muss – ein kompliziertes und unverständliches
Szenario der Demoanwendungen
in einer anderen Sprache tut dann
noch das Übrige zur völligen Ratlosigkeit.
Auch wenn die Konvention nicht gerade
aus dem Buch der „Coding Guidelines“
stammt, .NET hat damit bekanntlich kein
Problem.

Der Quelltext im Detail

Für den Einstieg in die bunte Ameisensimulation
wird nicht viel benötigt, denn das
komplette Ameisenpaket gibt es auf der
Webseite von Coding4Fun zum Download
– sowohl in C# als auch in Visual Basic.
Das Kernprojekt, dessen Quellcode
ebenfalls zur Verfügung steht, wurde in
C# entwickelt. Im Mittelpunkt steht die
Projektmappendatei (Spieler.sln), die alle
Verweise enthält. Im Projektordner „Dokumentation“
befindet sich eine Menge Dokumentationsmaterial.
Ferner gibt es die
Datei Vorlage.cs (bzw. Vorlage.vb). Beim
Öffnen der Datei wird man feststellen, dass
da schon eine ganze Menge Code enthalten
ist. Das sind die bereits erwähnten Ereignisrümpfe,
in die der Spieler die Aktionen
seiner Ameisen hinterlegen kann. Zudem
wurde in dieser Datei nicht mit dokumentierenden
Kommentaren gespart, sodass
sehr schnell deutlich werden wird,
zu welchem Zweck einzelne Codeblöcke
verwendet werden können. Eine Ameise
ist aus technischer Sicht eine Klasse mit
beliebigem Namen (in der Vorlage heißt
sie MeineAmeise), die über verschiedene,
vorgefertigte Methoden verfügt. Diese
Methoden wurden vorher in der Klasse
Ameise definiert, von der sich eine Spielerameisenklasse
ableiten muss. Diese Vererbung
sorgt auch dafür, dass die Spielerklasse
schon die Grundfunktionen einer
handelsüblichen Ameise besitzt. Sie kann
also bereits von Geburt an laufen und Gegenstände
tragen. Zudem besitzt sie auch
schon verschiedene Eigenschaften, die
später zur Entscheidungsfindung abgefragt
werden. Sie kennt z.B. ihre maximale
Tragfähigkeiten, ihre Geschwindigkeit
und ähnliche Dinge. In der Vorlage werden
alle Methoden überschrieben, die als
äußere Einflüsse auf die Ameise einwirken.
Ist die Klasse komplett und wurde
das Spiel gestartet, wird für jede Ameise
eine Instanz dieser Klasse erzeugt. Dinge,
die global festgelegt werden, sind als
Attribute am oberen Ende der Vorlage zu
finden. Mit diesen Attributen kann dem
kompletten Volk ein Name verpasst werden
und der Spieler kann sich mit seinem
Namen verewigen. Weitere Attribute vom
Typ Typ erlaubt die Definition mehrerer
Ameisenberufungen. Hiermit kann man
Ameisen mit unterschiedlichen Stärken
und Schwächen ausstatten. So könnte man
zum Beispiel eine „Kämpfer-Ameise“ definieren
und dieser Spezies mehr Kampfkraft
verpassen. Im Gegenzug könnte es
dann auch „Sammler-Ameisen“ geben,
die mehr Last tragen können.

Die nächsten Schritte

Um einen guten Start in die Ameisenentwicklung
zu erhalten, sollte man sich ein
wenig mit dem beschäftigen, was das Leben
einer Ameise ausmacht. Sie wird im
Ameisenhügel geboren und steht erstmal
untätig rum – sie wartet also. Entsprechend
zu diesem Zustand gibt es in der Ameisenvorlage
einen Codeblock für Wartet(), der
genau zu diesem Augenblick ausgeführt
wird. Hier platziert man also am besten einen
Befehl, der die Ameise zur Erkundung
der Umgebung animiert. Ein guter Start ist
GeheGeradeaus(), um die Ameise dazu zu
bewegen, ihren Weg in die Welt hinaus anzutreten
(Listing 1):

Möglicherweise begegnet die Ameise
auf ihrem Weg dem einen oder anderen Zuckerberg. Sollte das der Fall sein, stellt
dieser Zustand ein besonderes Ereignis
für sie dar und sie wird mit der Ausführung
der Methode Sieht(Zucker) belohnt.
Hier kann hinterlegt werden, dass sie zum
Zucker hin gehen soll, um etwas davon
aufzusammeln. Dabei sollte aber geprüft
werden, ob die Ameise vielleicht schon
beschäftigt ist, bevor man sie mit GeheZuZiel(zucker) anweist, zur Nahrung zu gehen
(Listing 2):

Dort angekommen tritt schon wieder
ein entscheidender Punkt im Leben der
Ameise ein. Sie ist beim Zucker angekommen
und führt dann den Block bei ZielErreicht(Zucker) aus, um dort mit den Befehlen
Nimm(zucker) und GeheZuBau()
dafür zu sorgen, dass die Ameise ein Stück
Zucker auflädt und danach zurück zum
heimatlichen Bau wandert, um die Nahrung
dort abzuliefern (Listing 3):

Lediglich mit ein paar einfachen Programmierschritten
wurde der Ameise
beigebracht, eine ihrer Grundbedürfnisse
zu decken. Mit relativ wenigen weiteren
Schritten kann dafür gesorgt werden, dass
sie dasselbe mit Obst anstellt und sogar
Spuren für ihre Artgenossen hinterlässt,
um den Weg zur gefundenen Nahrung
aufzuzeigen. Sie jetzt noch vor Käfern zu
schützen oder mit ihr sogar im Rudel Käfer
anzugreifen, bleibt dem Leser als Herausforderung
überlassen. …

Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.