Anleitung 1: Die Ameise lernt laufen und sammeln...

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Anleitung 1: Die Ameise lernt laufen und sammeln...

      Hallo und Herzlich Willkommen zu dieser Anleitung.
      In dieser Anleitung möchte ich Euch beispielhaft erklären wie Ihr eurer Ameise das laufen und sammeln von Zucker und Obst beibringt.

      Vorerbeitung:
      Ist AntMe! eingerichtet ? Wenn ja, dann kannst du hier direkt weiterlesen. Wenn nicht, dann schaue bitte hier.

      Gut wir haben bereits gelernt wie man das AntMe! Projekt öffnet - sowie die Vorlage.cs Datei in Visual Studio öffnet. Nun sieht man eine Menge bereits getippten Code. Dieser Code ist notwendig damit die Ameise "funktioniert". Leider hat die Ameise im aktuellen Zustand absolut keine künstliche Intelligenz.

      In den folgenden Schritten werden wir gemeinsam unserer Ameise zunächst laufen und sammeln beibringen.

      Unser Ameisenvolk
      Bevor wir anfangen wie wild Quellcode zu tippen, geben wir unserem Ameisenvolk einen Namen. ziemlich am Anfang der Datei Vorlage.cs finden wir den folgenden Quellcode.

      [cs]
      [Spieler(
      Volkname = "Meine erste C#-Ameise",
      Vorname = "",
      Nachname = ""
      )]
      [/cs]
      Hier kannst du (musst du aber nicht) einen Volkname, Vorname und Nachname vergeben. Diese Informationen werden in AntMe! angezeigt und dient dazu eine Übersicht zu erhalten welche Ameise von dir, oder auch deinem Freund oder von der Community ist.

      Die Ameisenkaste
      Eine Kaste spezifiziert die Ameisen. Jede Kaste hat einen Namen und in AntMe! können mehrere Ameisen mit verschiedenen Kasten herumlaufen. Da wir unsere Ameisen zunächst auf das Sammeln spezialisieren möchten habe ich diese Kaste in "Sammler" umbenannt und die Modifikatoren angepasst. Eine Ameise mit der Kaste "Sammler" kann nun nicht Angreifen, dafür aber schneller laufen.

      [cs]
      [Kaste(
      Name = "Sammler",
      GeschwindigkeitModifikator = 1, // 5 Schritte / Runde
      DrehgeschwindigkeitModifikator = 0,
      LastModifikator = 0,
      ReichweiteModifikator = 0,
      SichtweiteModifikator = 0,
      EnergieModifikator = 0,
      AngriffModifikator = -1 // Als "Sammler" brauchen wir nicht angreifen.
      )]
      [/cs]
      Hierbei ist wichtig zu wissen das die Summe der Modifikatoren 0 ergibt. Wenn diese nicht 0 ergibt stürzt AntMe! mit einer Exception (Fehlermeldung) ab und die Ameise kann nicht benutzt werden.

      Als nächstes passen wir eine Methode an. Diese Methode nennt sich "BestimmeKaste(...)" und liefert einen string zurück. Da wir bisher nur die Kaste "Sammler" haben können wir die Methode wiefolgt aufbauen:

      [cs]
      public override string BestimmeKaste(Dictionary<string, int> anzahl)
      {
      return "Sammler";
      }
      [/cs]
      Normalerweise liefert diese Methode den string "Standard" zurück. Da wir diese Kaste umbenannt haben müssen wir hier auch "Sammler" zurückliefern.
      So, jetzt haben wir unser Ameisenvolk spezialisiert. Unsere Ameisen sind von Beruf "Sammler" und können schneller laufen aber nicht angreifen. Apropos Laufen - noch läuft keine Ameise, dass können wir aber jetzt ändern.

      Laufen lernen
      Zunächst gehe zur Methode "Wartet()". Diese Methode wird aufgerufen wenn die Ameise nicht weiß wo sie gerade hingehen soll. Das ist super, da können wir jetzt Quellcode schreiben um die Ameise zu steuern.

      [cs]
      public override void Wartet()
      {
      if (AktuelleLast >= MaximaleLast)
      {
      GeheZuBau();
      }
      else
      {
      GeheGeradeaus();
      }
      }
      [/cs]
      Was macht diese Methode? Diese Methode ist recht simpel. Es wird zunächst überprüft ob die Aktuelle Last von unserer Ameise größer oder gleich der Maximalen Last entspricht. Wenn dies der Fall ist rufen wir die Methode GeheZuBau() auf. Diese Methode sorgt dafür, dass unsere Ameise zum Ameisenhügel zurückläuft und die aktuelle Last (zum Beispiel: Zucker) abwirft und bereit für neues ist. Wenn diese Überprüfung nicht zutrifft geht unsere Ameise gerade aus.

      Meilenstein erreicht!
      Wir haben unseren ersten Meilenstein erreicht. Unsere Ameise kann laufen. Sie läuft sinnunglos gerade aus und sammelt noch nichts. Aber sie läuft.

      Sammeln lernen
      Jetzt bringen wir unserer Ameise das Sammeln bei. Hierzu müssen wir ein paar mehr Methoden anpassen:
      • public override void Sieht(Zucker zucker)
      • public override void Sieht(Obst obst)
      • public override void ZielErreicht(Zucker zucker)
      • public override void ZielErreicht(Obst obst)

      Wie die Methodennamen uns schon verraten kann die Ameise Zucker und Obst entdecken (sichten) und nachdem sie hingelaufen ist auch erreichen.

      [cs]
      public override void Sieht(Zucker zucker)
      {
      if (AktuelleLast == 0 && Ziel == null)
      {
      GeheZuZiel(zucker);
      }
      }
      [/cs]
      Erklärung: Wenn unsere Ameise Zucker entdeckt (sichtet) und keine aktuelles Ziel hat und nichts auf dem Rücken trägt dann sagen wir der Ameise, dass sie sich zum Zucker hinbewegen soll.
      Wenn unsere Ameise allerdings schon Zucker oder Obst auf dem Rücken hat soll sie diesen Zuckerhaufen ignorieren und nichts unternehmen.

      [cs]
      public override void Sieht(Obst obst)
      {
      if (AktuelleLast == 0 && Ziel == null)
      {
      if (BrauchtNochTräger(obst))
      {
      GeheZuZiel(obst);
      }
      }
      }
      [/cs]
      Erklärung: Ok. Obst funktioniert im Prinzip genauso wie Zucker. Allerdings muss man Obst in den Ameisenbau tragen. Je mehr Ameisen da anpacken desto schneller geht das. Deswegen wird hier noch überprüft ob das aktuelle
      Obst-Stück noch träger benötigt. Wenn dies der Fall ist dann geht unsere Ameise zum Obst und hilft den Kollegen.

      Soweit sogut. Die Ameisen laufen wild durch die Gegend. Wenn diese dann auf Zucker oder Obst stoßen, bewegen sie sich zum jeweiligen Ziel. Weiter geht es zum letzten Schritt.
      Die Ameisen sollen Obst und Zucker zurück zum Ameisenhügel bringen.

      Hierzu passen wir die Methoden an, welche aufgerufen werden wenn ein Ziel erreicht ist.

      [cs]
      public override void ZielErreicht(Zucker zucker)
      {
      Nimm(zucker);
      }
      [/cs]

      [cs]
      public override void ZielErreicht(Obst obst)
      {
      Nimm(obst);
      }
      [/cs]

      So und das war es auch schon. Da wir ziemlich am Anfang in der Methode Wartet() eingebaut haben, dass die Ameise zum Bau geht wenn sie etwas
      eingesammelt hat wird diese das dann auch machen.

      Jetzt kann die Simulation gestartet werden und man kann den Ameisen beim laufen und sammeln fleißig zusehen.

      Im Anhang findet Ihr auch eine Quellcode-Datei die die Ändeurngen am Quelltext beinhaltet.
      Dateien
      • Vorlage.zip

        (1,78 kB, 3.243 mal heruntergeladen, zuletzt: )
      AntMe!-Forum.de Administrator, Kontakt - kontakt@antme-forum.net

    • Hey,
      coole Anleitung hat alles soweit funktioniert bis auf eine sache da ist ein fehler bei dem source hier:

      Quellcode

      1. public override string BestimmeKaste(Dictionary<string, int> anzahl)
      2. {
      3. "Sammler";
      4. }


      Korrekt:

      Quellcode

      1. public override string BestimmeKaste(Dictionary<string, int> anzahl)
      2. {
      3. return "Sammler";
      4. }


      8)
    • No ants on the screen

      Hi Guys,
      My name is Dave, I am newbie in this interesting project. I am right now trying to get the AntMe C# solution run on my Visual Studio Pro 2008.
      I went through instruction 1, debugging program, there is window "AntMe-3D Visualizer" appears, there is my colony, sugar & fruit. but there is not any ant running or carrying smth.
      Is there anything that i forgot to do?
      Appreciate your help.
      Bilder
      • No Ants.png

        25,12 kB, 0×0, 964 mal angesehen
    • idi_sam schrieb:

      Hi Guys,
      My name is Dave, I am newbie in this interesting project. I am right now trying to get the AntMe C# solution run on my Visual Studio Pro 2008.
      I went through instruction 1, debugging program, there is window "AntMe-3D Visualizer" appears, there is my colony, sugar & fruit. but there is not any ant running or carrying smth.
      Is there anything that i forgot to do?
      Appreciate your help.


      I am sorry sam ! I havent looked into this thread a while. Did you solve your problem already?
      AntMe!-Forum.de Administrator, Kontakt - kontakt@antme-forum.net