Kaste "Soldaten" wird nicht erstellt, wieso?

    • Kaste "Soldaten" wird nicht erstellt, wieso?

      Kaste "Soldaten" wird nicht erstellt, wieso?
      Äpfel werden oftmals nicht in den Bau, sondern wo anders hin getragen, wieso?



      [Kaste(
      Name = "Sammler",
      GeschwindigkeitModifikator = -1,
      DrehgeschwindigkeitModifikator = -1,
      LastModifikator = 2,
      ReichweiteModifikator = 2,
      SichtweiteModifikator = -1,
      EnergieModifikator = 0,
      AngriffModifikator = -1
      )]
      [Kaste(
      Name = "Soldaten",
      GeschwindigkeitModifikator = 2,
      DrehgeschwindigkeitModifikator = -1,
      LastModifikator = -1,
      ReichweiteModifikator = 0,
      SichtweiteModifikator = -1,
      EnergieModifikator = -1,
      AngriffModifikator = 2
      )]


      #region Kaste

      /// <summary>
      /// Bestimmt die Kaste einer neuen Ameise.
      /// </summary>
      /// <param name="anzahl">Die Anzahl der von jeder Kaste bereits vorhandenen
      /// Ameisen.</param>
      /// <returns>Der Name der Kaste der Ameise.</returns>
      public override string BestimmeKaste(Dictionary<string, int> anzahl)
      {
      if (anzahl["Sammler"] < 60)
      {
      return "Sammler";
      }
      else
      {
      return "Soldaten";
      }

      }
      #endregion


      #region Nahrung

      /// <summary>
      /// Wird wiederholt aufgerufen, wenn die Ameise mindestens einen
      /// Zuckerhaufen sieht.
      /// </summary>
      /// <param name="zucker">Der nächstgelegene Zuckerhaufen.</param>
      public override void Sieht(Zucker zucker)
      {
      int entfernung, richtung;
      entfernung = Koordinate.BestimmeEntfernung(this, zucker);
      richtung = Koordinate.BestimmeRichtung(this, zucker);
      SprüheMarkierung(richtung, entfernung);
      if (AktuelleLast == 0 && !(Ziel is Wanze) && Kaste == "Sammler")
      {
      GeheZuZiel(zucker);
      }
      }
      /// <summary>
      /// Wird wiederholt aufgerufen, wenn die Ameise mindstens ein
      /// Obststück sieht.
      /// </summary>
      /// <param name="obst">Das nächstgelegene Obststück.</param>
      public override void Sieht(Obst obst)
      {
      int entfernung, richtung;
      entfernung = Koordinate.BestimmeEntfernung(this, obst);
      richtung = Koordinate.BestimmeRichtung(this, obst);
      SprüheMarkierung(richtung, entfernung);
      if (AktuelleLast == 0 && !(Ziel is Wanze) && Kaste == "Sammler")
      {
      GeheZuZiel(obst);
      }
      }
      /// <summary>
      /// Wird einmal aufgerufen, wenn di e Ameise einen Zuckerhaufen als Ziel
      /// hat und bei diesem ankommt.
      /// </summary>
      /// <param name="zucker">Der Zuckerhaufen.</param>
      public override void ZielErreicht(Zucker zucker)
      {
      Nimm(zucker);
      SprüheMarkierung(0, 100);
      GeheZuBau();
      }

      /// <summary>
      /// Wird einmal aufgerufen, wenn die Ameise ein Obststück als Ziel hat und
      /// bei diesem ankommt.
      /// </summary>
      /// <param name="obst">Das Obstück.</param>
      public override void ZielErreicht(Obst obst)
      {
      Nimm(obst);
      SprüheMarkierung(0, 100);
      GeheZuBau();
      }

      #endregion


      #region Kampf

      /// <summary>
      /// Wird wiederholt aufgerufen, wenn die Ameise mindestens eine Wanze
      /// sieht.
      /// </summary>
      /// <param name="wanze">Die nächstgelegene Wanze.</param>
      public override void SiehtFeind(Wanze wanze)
      {
      int entfernung, richtung;
      entfernung = Koordinate.BestimmeEntfernung(this, wanze);
      richtung = Koordinate.BestimmeRichtung(this, wanze);
      SprüheMarkierung(richtung, entfernung);
      if (AnzahlAmeisenInSichtweite >= 5 && AktuelleEnergie > MaximaleEnergie / 2 && Kaste == "Soldaten")
      {
      GreifeAn(wanze);
      }
      else
      {
      GeheWegVon(wanze);
      }

      }
      /// <summary>
      /// Wird wiederholt aufgerufen, wenn die Ameise mindestens eine Ameise eines
      /// anderen Volkes sieht.
      /// </summary>
      /// <param name="ameise">Die nächstgelegen feindliche Ameise.</param>
      public override void SiehtFeind(Ameise ameise)
      {
      }

      /// <summary>
      /// Wird wiederholt aufgerufen, wenn die Ameise von einer Wanze angegriffen
      /// wird.
      /// </summary>
      /// <param name="wanze">Die angreifende Wanze.</param>
      public override void WirdAngegriffen(Wanze wanze)
      {
      if (AnzahlAmeisenInSichtweite >= 5 && AktuelleEnergie > MaximaleEnergie / 2 && Kaste == "Soldaten")
      {
      GreifeAn(wanze);
      }
      else
      {
      GeheWegVon(wanze);
      }

      }

      /// <summary>
      /// Wird wiederholt aufgerufen in der die Ameise von einer Ameise eines
      /// anderen Volkes Ameise angegriffen wird.
      /// </summary>
      /// <param name="ameise">Die angreifende feindliche Ameise.</param>
      public override void WirdAngegriffen(Ameise ameise)
      {
      }

      #endregion

      Bitte findet für mich die Fehler. :)

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von german97 ()

    • schade das nicht den ganzen code gepostet hast. so musst ich mir die fehlenden stellen selber schnell zamkopiern^^

      Soldaten werden erstellt aber sie sammlen auch fleissig mit.
      wenn bei dir das ziel obst erreicht wird. gehn auch die krieger als sammler mit.
      [cs]
      public override void ZielErreicht(Obst obst)

      {

      Nimm(obst);

      SprüheMarkierung(0, 100);

      GeheZuBau();

      }[/cs]

      so sieht mein lösungsweg aus.

      [cs]public override void ZielErreicht(Obst obst)
      {
      if (Kaste == "Sammler" && AktuelleLast == 0)
      {
      Nimm(obst);
      SprüheMarkierung(0, 100);
      GeheZuBau();
      }
      }[/cs]


      das die äpfel bei dir kreuz und quer laufen liegt da drann

      [cs]public override void SiehtFeind(Wanze wanze)
      {
      int entfernung, richtung;
      entfernung = Koordinate.BestimmeEntfernung(this, wanze);
      richtung = Koordinate.BestimmeRichtung(this, wanze);
      SprüheMarkierung(richtung, entfernung);
      if (AnzahlAmeisenInSichtweite >= 5 && AktuelleEnergie > MaximaleEnergie / 2 && Kaste == "Soldaten")
      {
      GreifeAn(wanze);
      }
      else
      {
      GeheWegVon(wanze);
      }

      }[/cs]

      und zwar an GeheWegVon(wanze);
      sobald ne wanze gesehn wird laufen deine meisen weg, aber du hast nicht angegeben wie weit sie laufen sollen.dazu wäre es noch sinnvoll die nahrung fallen zulassen.

      LassNahrungFallen();
      GeheWegVon(wanze, 30);

      Es kann aber auch an deiner RiechtFreund liegen.

      Möglicher lösungs weg wäre so:
      [cs]
      public override void RiechtFreund(Markierung markierung)
      {
      if (!(Ziel is Bau) && AktuelleLast == 0)
      {

      }
      }[/cs]

      greets