AntMe! ist eine in C# geschriebene Simulationssoftware für Windows, die Programmieranfängern das Thema künstliche Intelligenz näherbringen und einen leichten Einstieg in die Sprachen C# oder Visual Basic bieten soll. AntMe! gehört zur Gattung der Serious Games[2] und es ist eines der Projekte der von Microsoft ins Leben gerufenen Initiative „coding4fun“; Projektleiter und Initiator ist Uwe Baumann[3] von Microsoft.[4]
Zwischendurch wurde für das AntMe!-Projekt die AntMe Limited gegründet, die das Projekt unter diesem Namen weiterentwickelte und betrieb. Mitte 2011 ist aus der AntMe Limited dann der AntMe! e. V. geworden. Dadurch ist AntMe! jetzt vollständig gemeinnützig.[2] Die Firma Microsoft ist weiterhin offizieller Partner des Projekts.
Bei der Simulation geht es darum, eine KI für ein Ameisenvolk zu programmieren. Man muss den Ameisen beibringen, Zucker oder Äpfel zu sammeln und Käfer zu bekämpfen. Es ist auch eine Spezialisierung möglich, wodurch manche Völker nur Käfer bekämpfen, andere dagegen nur Zucker sammeln. Den Einstieg in das Programm erleichtern mehrere Video-Tutorials.
Seit April 2007 gibt es eine voll funktionsfähige Version. Im September 2008 wurde die Version 1.6 veröffentlicht, in der unter anderem Teambildung implementiert wurde, so dass man nun auch im Modus XvsX spielen kann. Durch die Auslagerung der Spielkonfiguration sind auch Varianten wie „Capture The Apple“ möglich und bei den Entwicklern sehr beliebt. Die Vorarbeiten für die Version 2.0 (Codename „Chuck“ nach den Chuck Norris Facts) laufen bereits.
Die Registrierung ermöglicht die Integration von Drittanbieterkomponenten in die Integrierte Entwicklungsumgebung(IDE).[5]
Download
AntMe! kann man nach einer kostenlosen Registrierung auf der offiziellen Website herunterladen.[2] Dort gibt es neben AntMe! für C# und Visual Basic auch den Quelltext von AntMe!. Nach dem Download des ZIP-Files muss man die Dateien entpacken und in ein anderes Verzeichnis kopieren. Indem man die Datei „Spieler.sln“ öffnet, kann man mit dem Programmieren beginnen.
Eigene Klasse
Die „Spielwiese“, in der man sich bewegt und programmiert, ist bereits eine eigens von AntMe! entwickelte, das Ameisenvolk repräsentierende, Klasse von C#.[6] Sie erbt von der Klasse Basisameise.
Die Programmierung von AntMe! basiert auf einer ereignisgesteuerten Programmierung. Das heißt, dass bestimmte Methoden vom Simulationsprogramm aufgerufen werden, wenn ein bestimmtes Ereignis eintritt. Konkret bei AntMe! sieht das zum Beispiel so aus: Wenn die Ameise ein Stück Zucker sieht, dann wird die MethodeSiehtZucker aufgerufen. Die Anweisungen, die in dieser Methode stehen, werden dann ausgeführt. Das könnte bewirken, dass die Ameise das Stück Zucker nimmt und zu ihrem Bau trägt.
Die Möglichkeit, eine Klasse so einzurichten, dass ihre Objekte auf Ereignisse reagieren, ist ein Privileg moderner Programmiersprachen wie C#.[6]
Tutorials
Für AntMe! gibt es verschiedene Tutorials. Auf der offiziellen Website gibt es sowohl geschriebene als auch Video-Tutorials.[7] Auch im Community-Forum finden sich einige hilfreiche Anleitungen.[8]
Plugins
Seit dem neuen Plug-in-Konzept der Version 1.6 können interessierte Nutzer auch selbst Plugins schreiben und dem Programm hinzufügen. Da der Quellcode von AntMe! öffentlich zugänglich ist, können auch dort eigene Veränderungen getätigt werden.
Für Plugins gibt es die SchnittstellenIPlugin, sowie IConsumerPlugin und IProducerPlugin. Sie finden sich im NamespaceAntMe.SharedComponents.Plugin.
Code-Beispiele
Der AntMe!-Code ist lokalisiert. So gibt es in der deutschsprachigen Variante Methoden wie GeheZuBau oder Nimm(zucker).
Folgende Code-Schnipsel sollen beispielhaft die Programmierung von AntMe! zeigen:
/// <summary>/// Wird wiederholt aufgerufen, wenn die Ameise mindestens einen/// Zuckerhaufen sieht./// </summary>/// <param name="zucker">Der nächstgelegene Zuckerhaufen.</param>publicoverridevoidSieht(Zuckerzucker){if(AktuelleLast==0&&Ziel==null){GeheZuZiel(zucker);}}
/// <summary>/// Wird einmal aufgerufen, wenn die Ameise einen Zuckerhaufen als Ziel/// hat und bei diesem ankommt./// </summary>/// <param name="zucker">Der Zuckerhaufen.</param>publicoverridevoidZielErreicht(Zuckerzucker){Nimm(zucker);GeheZuBau();}
/// <summary>/// Wird wiederholt aufgerufen, wenn die Ameise von einer Wanze angegriffen/// wird./// </summary>/// <param name="wanze">Die angreifende Wanze.</param>publicoverridevoidWirdAngegriffen(Wanzewanze){LasseNahrungFallen();if(Kaste=="Kämpfer"){if(AnzahlAmeisenDerSelbenKasteInSichtweite>=3){GreifeAn(wanze);}}else{GeheWegVon(wanze);}}
Core War, ein Programmierspiel in der assemblerartigen Sprache „Redcode“
Literatur
Walter Saumweber, Tom Wendel, Wolfgang Gallo, Sebastian Loers: AntMe! - Programmieren und Spielen mit den Ameisen und Visual C#. Microsoft Press Deutschland, 2007, ISBN 978-3-86645-205-3.
Hans-Georg Schumann: AntMe! - Spielend programmieren lernen mit Visual Basic und den Ameisen. Microsoft Press, 2008, ISBN 978-3-86645-523-8.
↑Walter Saumweber, Tom Wendel, Wolfgang Gallo, Sebastian Loers: AntMe! - Programmieren und Spielen mit den Ameisen und Visual C#, Microsoft Press Deutschland, 2007, S. 13–22
↑ abWalter Saumweber, Tom Wendel, Wolfgang Gallo, Sebastian Loers: AntMe! - Programmieren und Spielen mit den Ameisen und Visual C#. Microsoft Press Deutschland, 2007, S. 4