/// <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) { SprüheMarkierung (Koordinate.BestimmeRichtung(this, zucker), Koordinate.BestimmeEntfernung(this, zucker)); if (Kaste == "Wächter") { if (gemerkterZucker == null) { // Dieser Aufruf ist nötig, damit in der nächsten Runde Wartet() // aufgerufen wird. BleibStehen(); gemerkterZucker = zucker; aufEntfernungGehen = true; } } else { if (gemerkterZucker == null) { gemerkterZucker = zucker; } if (Ziel == null) { GeheZuZiel(zucker); } } }
public override void ZielErreicht(Zucker zucker) { poltergeist.Nimm(zucker); poltergeist.SprüheMarkierung(marker.ZUCKER_LOKALISIERT + zucker.Menge, marker.RANGE); poltergeist.GeheZuBau(); // poltergeist.Ziel = zucker; }
// Zuckerhaufen erneuerung public static void zucker_sort() { // Leere löschen for (int i = 0; i < zucker_list.Count() - 1; i++) { if (zucker_list[i].Menge <= 0) { zucker_list.Remove(zucker_list[i]); } } int count = zucker_list.Count(); Zucker zucker_alt; for (int runde = 0; runde < count; runde++) { for (int i = 0; i < count - 1; i++) { if (Koordinate.BestimmeEntfernung(bau, zucker_list[i]) > Koordinate.BestimmeEntfernung(bau, zucker_list[i + 1])) { // tauschen zucker_alt = zucker_list[i]; zucker_list[i] = zucker_list[i + 1]; zucker_list[i + 1] = zucker_alt; } } } // aktuellen leeren falls leer if (akt_zucker.Menge == 0) { akt_zucker = null; } }
public override void Sieht(Zucker zucker) { if (AktuellesZiel == null) { GeheZu(zucker); } }
internal void ReportSugar(Zucker zucker) { bool known = false; foreach (var ticket in tickets) { if (ticket.Zucker == zucker) { known = true; break; } } if (!known) { //zuckers.Add(zucker); int mengeTickets = zucker.Menge / 20; for (int i = 0; i < mengeTickets; i++) { tickets.Enqueue(item: new Ticket() { Zucker = zucker }); } } }
/// <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) { switch (Kaste) { case "Kundschafter": GeheZuZiel(zucker); break; case "Sammler": if (Ziel == null) { GeheZuZiel(zucker); } break; case "Krieger": if (!verteidigen) { verteidigen = true; int richtung = Koordinate.BestimmeRichtung(this, zucker); entfernung = Koordinate.BestimmeEntfernung(this, zucker) * 3; // Der Winkel führt dazu, daß die Krieger sternförmig um den Zucker // patroullieren. winkel = Zufall.Zahl(180, 215); DreheInRichtung(richtung); GeheGeradeaus(entfernung); } break; } }
/// <summary> /// Wird einmal aufgerufen, wenn die Ameise einen Zuckerhaufen als Ziel /// hat und bei diesem ankommt. /// </summary> /// <param name="zucker">Der Zuckerhaufen.</param> public override void ZielErreicht(Zucker zucker) { // Das Ziel Ameisenbau hat der Gruppenführer dadurch vorgegeben, dass er // zuvor das Ziel auf den Zucker gesetzt hat. Nimm(zucker); GeheZuBau(); }
/// <summary> /// Wird unabhängig von äußeren Umständen in jeder Runde aufgerufen. /// </summary> public override void Tick() { if (gemerkterZucker != null) { if (Ziel is Insekt) { int entfernung = Koordinate.BestimmeEntfernung(this, Ziel); if (entfernung > Sichtweite * 3) { BleibStehen(); } } if (Kaste == "Wächter") { SprüheMarkierung (Koordinate.BestimmeRichtung(this, gemerkterZucker), Math.Min(Sichtweite, Koordinate.BestimmeEntfernung(this, gemerkterZucker))); } if (gemerkterZucker.Menge <= 0) { gemerkterZucker = null; if (Kaste == "Wächter") { imKreisGehen = false; aufEntfernungGehen = false; } } } }
public override void ZielErreicht(Zucker zucker) { if (Kaste == "Sammler") { Nimm(zucker); GeheZuBauOptimized(); } }
public static void zucker_refresh() { // refresh if (akt_zucker != null && akt_zucker.Menge <= 100) { akt_zucker = zucker_list[0]; } }
/// <summary> /// Sobald eine Ameise innerhalb ihres Sichtradius einen Zuckerhügel erspäht wird /// diese Methode aufgerufen. Als Parameter kommt der betroffene Zuckerghügel. /// Weitere Infos unter "http://wiki.antme.net/de/API1:Sieht(Zucker)" /// </summary> /// <param name="zucker">Der gesichtete Zuckerhügel</param> public override void Sieht(Zucker zucker) { SprüheMarkierung(1000, 100); if ((Kaste == "Sammler" && Ziel == null) || (Kaste == "Späher" && Ziel == null)) { GeheZuZiel(zucker); } }
/// <summary> /// Sobald eine Ameise innerhalb ihres Sichtradius einen Zuckerhügel erspäht wird /// diese Methode aufgerufen. Als Parameter kommt der betroffene Zuckerghügel. /// Weitere Infos unter "http://wiki.antme.net/de/API1:Sieht(Zucker)" /// </summary> /// <param name="zucker">Der gesichtete Zuckerhügel</param> public override void Sieht(Zucker zucker) { if (AktuelleLast == 0 && Kaste == "Standard") { Denke("Zucker!"); GeheZuZiel(zucker); } }
public override void Sieht(Zucker zucker) { if (currentZucker == null && myAmeise.AktuelleLast == 0) { currentZucker = zucker; myAmeise.GeheZuZiel(zucker); } }
public override void ZielErreicht(Zucker zucker) { if (zucker.Menge > 0 && myAmeise.AnzahlAmeisenDerSelbenKasteInSichtweite == 0) { currentZucker = zucker; myAmeise.SprüheMarkierung(zucker.Menge, getSprayRangeToBau()); } }
/// <summary> /// Wird einmal aufgerufen, wenn die 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); if (AktuelleLast == MaximaleLast) { GeheZuBau(); } }
/// <summary> /// Sobald eine Ameise innerhalb ihres Sichtradius einen Zuckerhügel erspäht wird /// diese Methode aufgerufen. Als Parameter kommt der betroffene Zuckerghügel. /// Weitere Infos unter "http://wiki.antme.net/de/API1:Sieht(Zucker)" /// </summary> /// <param name="zucker">Der gesichtete Zuckerhügel</param> public override void Sieht(Zucker zucker) { zuckers = zucker; TicketManager.Instance.ReportSugar(zucker); if (AktuelleLast == 0) { GeheZuZiel(zucker); } }
/// <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) { if (!laufeWeg) { int entfernung = Koordinate.BestimmeEntfernung(this, zucker); SprüheMarkierung(Koordinate.BestimmeRichtung(this, zucker), entfernung); if (Ziel == null && AktuelleLast < MaximaleLast) { GeheZuZiel(zucker); } } }
/// <summary> /// Sobald eine Ameise innerhalb ihres Sichtradius einen Apfel erspäht wird /// diese Methode aufgerufen. Als Parameter kommt das betroffene Stück Obst. /// Weitere Infos unter "http://wiki.antme.net/de/API1:Sieht(Obst)" /// </summary> /// <param name="obst">Das gesichtete Stück Obst</param> public override void Sieht(Obst obst) { //Übergebe Obst an den Ticketmanager TicketManager.Instance.ReportObst(obst); if (AktuelleLast == 0 && BrauchtNochTräger(obst)) { //SprüheMarkierung(1000, 300); GeheZuZiel(obst); zuckers = null; } }
public override void Sieht(Zucker zucker) { if (poltergeist.MussSchlafen) { return; } poltergeist.SprüheMarkierung(marker.ZUCKER_GESEHEN + zucker.Menge, marker.RANGE); if (poltergeist.IstNichtVollBeladen && poltergeist.Ziel != zucker) { (poltergeist as Basisameise).GeheZuZiel(zucker); } }
/// <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) { if (gemerkterZucker == null) { gemerkterZucker = zucker; } SprüheMarkierung(0, 60); if (Kaste.Substring(0, 7) == "Sammler" && Ziel == null) { GeheZuZiel(zucker); } }
/// <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) { // Wenn Zucker in der Nähe ist soll eine Markierung gesprüht werden. Der // Radius dieser Markierung richtet sich nach der Entfernung der Ameise // zum Zucker damit die Markierung nicht über den Zucker hinaus zeigt. SprüheMarkierung( Koordinate.BestimmeRichtung(this, zucker), Koordinate.BestimmeEntfernung(this, zucker)); // Wenn die Ameise nichts trägt soll sie zum Zucker hin. if (AktuelleLast == 0) { GeheZuZiel(zucker); } }
/// <summary> /// Sobald eine Ameise innerhalb ihres Sichtradius einen Zuckerhügel erspäht wird /// diese Methode aufgerufen. Als Parameter kommt der betroffene Zuckerghügel. /// Weitere Infos unter "http://wiki.antme.net/de/API1:Sieht(Zucker)" /// </summary> /// <param name="zucker">Der gesichtete Zuckerhügel</param> public override void Sieht(Zucker zucker) { if (!(Ziel is Wanze) && Kaste == "Sammler") { if (AktuelleLast == 0) { GeheZuZiel(zucker); int entfernung, richtung; entfernung = Koordinate.BestimmeEntfernung(this, zucker); richtung = Koordinate.BestimmeRichtung(this, zucker); SprüheMarkierung(richtung, entfernung); } } }
/// <summary> /// Hat die Ameise eine Zuckerhügel als Ziel festgelegt, wird diese Methode aufgerufen, /// sobald die Ameise ihr Ziel erreicht hat. Ab jetzt ist die Ameise nahe genug um mit /// dem Ziel zu interagieren. /// Weitere Infos unter "http://wiki.antme.net/de/API1:ZielErreicht(Zucker)" /// </summary> /// <param name="zucker">Der erreichte Zuckerhügel</param> public override void ZielErreicht(Zucker zucker) { if (Kaste == "Sammler") { Nimm(zucker); GeheZuBau(); } else if (Kaste == "Späher") { BleibStehen(); SprüheMarkierung(1000, 300); Denke("Hier gibt's Fressen!!"); } }
/// <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) { // Eine Markierung darf jede Ameise sprühen. int richtung = Koordinate.BestimmeRichtung(this, zucker); int entfernung = Koordinate.BestimmeEntfernung(this, zucker); SprüheMarkierung(richtung, entfernung); // Ein Ziel darf nur der Gruppenführer vorgeben. if (gruppenführer[gruppe] == this && (Ziel == null || Ziel is Insekt)) { GeheZuZiel(zucker); } }
private Queue <Ticket> fTickets = new Queue <Ticket>(); //Liste mit allen feindlichen Ameisen #region Report internal void ReportSugar(Zucker zucker) { if (!zuckers.Contains(zucker)) { zuckers.Add(zucker); int mengeTickets = zucker.Menge / 10; for (int i = 0; i < mengeTickets; i++) { zTickets.Enqueue(new Ticket() { Zucker = zucker }); } } }
/// <summary> /// Wird einmal aufgerufen, wenn die Ameise einen Zuckerhaufen als Ziel /// hat und bei diesem ankommt. /// </summary> /// <param name="zucker">Der Zuckerhaufen.</param> public override void ZielErreicht(Zucker zucker) { switch (Kaste) { case "Kundschafter": SprüheMarkierung(0, EntfernungZuBau + 40); stehenbleiben = true; break; case "Sammler": Nimm(zucker); GeheZuBau(); break; } }
/// <summary> /// Diese Methode wird in jeder Simulationsrunde aufgerufen - ungeachtet von zusätzlichen /// Bedingungen. Dies eignet sich für Aktionen, die unter Bedingungen ausgeführt werden /// sollen, die von den anderen Methoden nicht behandelt werden. /// Weitere Infos unter http://wiki.antme.net/de/API1:Tick /// </summary> public override void Tick() { //Schickt erschöpfte Ameisen zurück /*if (Reichweite - ZurückgelegteStrecke -20 < EntfernungZuBau) * { * GeheZuBau(); * }*/ //Wenn die Ameise Last hat, dann soll sie zum Bau gehen if (AktuelleLast != 0) { GeheZuBauOptimized(bau); } //Schaue wie gro if (ankunftsort != null) { int distance = Koordinate.BestimmeEntfernung(this, ankunftsort); if (distance < Sichtweite / 2) { GeheZuBau(); ankunftsort = null; } } //Findet heraus, ob der Zuckerberg noch existiert, wenn du dein Zucker schon abgeliefert hast if (zuckers != null && AktuelleLast == 0) { if (zuckers.Menge <= 0) { zuckers = null; BleibStehen(); } } //Ermöglicht anderen Ameisen zu wissen, wo Zucker ist /* * if (AktuelleLast > 0) * { * if (GetragenesObst == null) * { * SprüheMarkierung(Richtung + 180, 100); * } * } */ }
/// <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) { //Zucker näher ran als gemerkter Zucker der Kollonie? if (EntfernungZuBau < Memory.gemerkterZucker_EntfernungZuBau) { Memory.gemerkterZucker = zucker; } //if (!trägtNahrung) //{ //Zucker nehmen Nimm(zucker); trägtNahrung = true; SprüheMarkierung(Markers.Add(new Marker(Marker.MarkerType.Zucker, zucker)), MarkierungGrößeInformation); //} GeheZuBau(); }
public override void Sieht(Zucker zucker) { if (Speicher.akt_zucker == null && Koordinate.BestimmeEntfernung(Speicher.bau, zucker) < 1050) { Speicher.akt_zucker = zucker; } else if (!Speicher.zucker_list.Contains(zucker) && Koordinate.BestimmeEntfernung(Speicher.bau, zucker) < 1050) { Speicher.zucker_list.Add(zucker); Speicher.zucker_sort(); } if (Kaste == "Sammler" && ZielOptimized == null) { GeheZuZielOptimized(zucker); } }
public override void Sieht(Zucker zucker) { int n = 0; for (int i = 0; i < Storage.zucker.Count; i++) { if (Storage.zucker[i] == zucker) { n = i + 1; } } if (n == 0) { Storage.zucker.Add(zucker); n = Storage.zucker.Count; } SprüheMarkierung(1000 + n, 1000); }
/// <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) { //Alle Ameisen sollen Zucker kennen if (Memory.gemerkterZucker == null) { Memory.gemerkterZucker = zucker; } else { //aktueller Zucker näher ran? -> in ZielErreicht(zucker) prüfen //aktueller Zucker voller? //-> neuen Zucker merken if (zucker.Menge > Memory.gemerkterZucker.Menge) { Memory.gemerkterZucker = zucker; } } if (!trägtNahrung) { //if (FuzzyInferenceSystem.Superdecision5x5x2(character.faulheit, character.energie, character.sammelnzucker, memory.GetDecisionValue(DecisionType.SammelnZucker))) if (true) { //SprüheMarkierung((int)Information.ZielNahrung, MarkierungGrößeSammler); GeheZuZiel(zucker); memory.ActionDone(DecisionType.SammelnZucker); setActionBreak(); //SprüheMarkierung SprüheMarkierung(Markers.Add(new Marker(Marker.MarkerType.Zucker, zucker)), MarkierungGrößeInformation); } else { Weitermachen(); } } else { //traegt Nahrung //Weitermachen(); GeheZuBau(); } }
public override void RiechtFreund(Markierung markierung) { if (markierung.Information > 1000 && markierung.Information < 2000) { Zucker z = Storage.zucker[markierung.Information - 1000 - 1]; try { if (z != null) { if (sugar != null && bau != null) { if ((getD(bau, z) > getD(bau, sugar)) && getD(a, z) + getD(z, bau) > getD(a, sugar) + getD(sugar, bau)) { return; } } sugar = z; if (Ziel == null && AktuelleLast < MaximaleLast && !evading) { if (AktuelleLast < MaximaleLast && Ziel != sugar && Ziel != bau && Ziel != apple) { Sprint(sugar); } } else { if (AktuelleLast == MaximaleLast && !evading) { Sprint(bau); } } } } catch { Denke("OMG Exception"); Storage.zucker.RemoveAt(markierung.Information - 1000 - 1); } } }
public override void ZielErreicht(Zucker zucker) { ameisenActionHandler.ZielErreicht(zucker); }
/// <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) { networkCommands("SiehtZucker", zucker, zucker.Menge.ToString()); }
public override void ZielErreicht(Zucker zucker) { myAmeise.Nimm(zucker); myAmeise.GeheZuBau(); }
public override void Sieht(Zucker zucker) { ameisenActionHandler.Sieht(zucker); }
/// <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) { networkCommands("ZielErreichtZucker", zucker, zucker.Menge.ToString()); }
/// <summary> /// Sobald eine Ameise innerhalb ihres Sichtradius einen Zuckerhügel erspäht wird /// diese Methode aufgerufen. Als Parameter kommt der betroffene Zuckerghügel. /// Weitere Infos unter "http://wiki.antme.net/de/API1:Sieht(Zucker)" /// </summary> /// <param name="zucker">Der gesichtete Zuckerhügel</param> public override void Sieht(Zucker zucker) { if (AktuelleLast == 0 && !(Ziel is Wanze)) GeheZuZiel(zucker); }
/// <summary> /// Hat die Ameise eine Zuckerhügel als Ziel festgelegt, wird diese Methode aufgerufen, /// sobald die Ameise ihr Ziel erreicht hat. Ab jetzt ist die Ameise nahe genug um mit /// dem Ziel zu interagieren. /// Weitere Infos unter "http://wiki.antme.net/de/API1:ZielErreicht(Zucker)" /// </summary> /// <param name="zucker">Der erreichte Zuckerhügel</param> public override void ZielErreicht(Zucker zucker) { Nimm(zucker); GeheZuBau(); }
public override void Erreicht(Zucker zucker) { Nimm(zucker); SprüheMarkierung(-1, 200); GeheZuBau(); }
public override void Sieht(Zucker zucker) { if (myAmeise.AnzahlAmeisenDerSelbenKasteInSichtweite == 0 || currentZucker == zucker) myAmeise.GeheZuZiel(zucker); }