コード例 #1
0
 /// <summary>
 /// Wird einmal aufgerufen, wenn die Ameise eine Markierung des selben
 /// Volkes riecht. Einmal gerochene Markierungen werden nicht erneut
 /// gerochen.
 /// </summary>
 /// <param name="markierung">Die nächste neue Markierung.</param>
 public override void RiechtFreund(Markierung markierung)
 {
     // Sollte die Ameise nicht schon Obst im Auge haben oder auf dem Weg zum
     // Bau sein soll sie, wenn die angeforderte Menge Ameisen die Ameisenmenge
     // der gerade in Sichtweite befindlichen Ameisen übersteigt, zum
     // Markierungsmittelpunkt gehen um dort hoffentlich den Apfel zu sehen.
     if (!(Ziel is Obst) &&
         !(Ziel is Bau) &&
         AnzahlAmeisenInSichtweite < markierung.Information)
     {
         GeheZuZiel(markierung);
         // Sollte die Entfernung mehr als 50 schritte zum Mittelpunkt betragen,
         // soll eine Folgemarkierung gesprüht werden um denn Effektradius zu
         // erhöhen.
         if (Koordinate.BestimmeEntfernung(this, markierung) > 50)
         {
             SprüheMarkierung(
                 Koordinate.BestimmeRichtung(this, markierung),
                 Koordinate.BestimmeEntfernung(this, markierung));
         }
     }
     else
     {
         // In allen anderen Fällen soll sie kurz stehen bleiben um zu
         // verhindern, dass die Ameise dem Apfel ewig hinterher läuft.
         BleibStehen();
     }
 }
コード例 #2
0
 /// <summary>
 /// Markierungen, die von anderen Ameisen platziert werden, können von befreundeten Ameisen
 /// gewittert werden. Diese Methode wird aufgerufen, wenn eine Ameise zum ersten Mal eine
 /// befreundete Markierung riecht.
 /// Weitere Infos unter "http://wiki.antme.net/de/API1:RiechtFreund(Markierung)"
 /// </summary>
 /// <param name="markierung">Die gerochene Markierung</param>
 public override void RiechtFreund(Markierung markierung)
 {
     //if (Kaste == "Verteidiger" && Ziel == null)
     //{
     //    GeheZuZielOptimized(markierung);
     //}
 }
コード例 #3
0
 public override void RiechtFreund(Markierung markierung)
 {
     if (markierung.Information < 1000 && markierung.Information > 0)
     {
         if (target == null)
         {
             target = markierung;
             Sprint(markierung);
         }
         else
         {
             try
             {
                 if (markierung.Information > ((Markierung)target).Information)
                 {
                     target = markierung;
                     Sprint(markierung);
                 }
             }
             catch
             {
                 if (getD(a, markierung) < getD(a, target))
                 {
                     target = markierung;
                     Sprint(markierung);
                 }
             }
         }
     }
 }
コード例 #4
0
        /// <summary>
        /// Wird einmal aufgerufen, wenn die Ameise eine Markierung des selben
        /// Volkes riecht. Einmal gerochene Markierungen werden nicht erneut
        /// gerochen.
        /// </summary>
        /// <param name="markierung">Die nächste neue Markierung.</param>
        public override void RiechtFreund(Markierung markierung)
        {
            switch (Kaste)
            {
            case "Sammler":
                if (markierung.Information != -1 && Ziel == null)
                {
                    DreheInRichtung(markierung.Information);
                    GeheGeradeaus(20);
                }
                break;

            case "Krieger":
                if (markierung.Information == -1 && Ziel == null)
                {
                    int entfernung = Koordinate.BestimmeEntfernung(this, markierung);
                    if (entfernung > 50)
                    {
                        entfernung = 50;
                    }
                    SprüheMarkierung(-1, entfernung);
                    GeheZuZiel(markierung);
                }
                break;
            }
        }
コード例 #5
0
 /// <summary>
 /// Wird einmal aufgerufen, wenn die Ameise eine Markierung des selben
 /// Volkes riecht. Einmal gerochene Markierungen werden nicht erneut
 /// gerochen.
 /// </summary>
 /// <param name="markierung">Die nächste neue Markierung.</param>
 public override void RiechtFreund(Markierung markierung)
 {
     if (Ziel == null)
     {
         GeheZuZiel(markierung);
     }
 }
コード例 #6
0
 /// <summary>
 /// Markierungen, die von anderen Ameisen platziert werden, können von befreundeten Ameisen
 /// gewittert werden. Diese Methode wird aufgerufen, wenn eine Ameise zum ersten Mal eine
 /// befreundete Markierung riecht.
 /// Weitere Infos unter "http://wiki.antme.net/de/API1:RiechtFreund(Markierung)"
 /// </summary>
 /// <param name="markierung">Die gerochene Markierung</param>
 public override void RiechtFreund(Markierung markierung)
 {
     if (AktuelleLast == 0)
     {
         DreheInRichtung(markierung.Information);
     }
 }
コード例 #7
0
        public override void RiechtFreund(Markierung markierung)
        {
            if (poltergeist.IstVollBeladen || poltergeist.MussSchlafen)
            {
                return;
            }

            if (poltergeist.Ziel == null && marker.IstZucker(markierung))
            {
                poltergeist.GeheZuZiel(markierung);
            }
            else
            //  ziel != null
            if (poltergeist.Ziel is Zucker)
            {
                // erstmal nix tun, geht ja schon zu zucker
                // TODO prioritätsabschätzung
                // prioabwägung: abstand, menge
            }
            // b) ziel != zucker &&  marker = zuckerLokalisiert => ziel ändern
            else if (!(poltergeist.Ziel is Zucker) && marker.IstZuckerLokalisiert(markierung))
            {
                poltergeist.GeheZuZiel(markierung);
            }
        }
コード例 #8
0
 public override void RiechtFreund(Markierung markierung)
 {
     if (myAmeise.Ziel == null && !collectingFood() && isCallForFood(markierung))
     {
         myAmeise.GeheZuZiel(markierung);
     }
 }
コード例 #9
0
ファイル: JaJoMaTiKlasse.cs プロジェクト: Johnnek/JaJoMaTi
 /// <summary>
 /// Markierungen, die von anderen Ameisen platziert werden, können von befreundeten Ameisen
 /// gewittert werden. Diese Methode wird aufgerufen, wenn eine Ameise zum ersten Mal eine
 /// befreundete Markierung riecht.
 /// </summary>
 /// <param name="markierung">Die gerochene Markierung</param>
 public override void RiechtFreund(Markierung markierung)
 {
     if (Kaste == "Attacker")
     {
         // Die Ameise soll, sofern sie nicht schon ein Ziel wie "Käfer", "Markierung" oder "Bau" hat auf direktem Weg zum laufen von wo aus man hoffentlich weitere Markierungen oder direkt den Käfer sieht.
         if (Ziel == null)
         {
             GeheZuZiel(markierung);
         }
     }
     if (Kaste == "Appler")
     {
         // Sollte die Ameise nicht schon Obst im Auge haben oder auf dem Weg zum Bau sein soll sie, wenn die angeforderte Menge Ameisen die Ameisenmenge der gerade in Sichtweite befindlichen Ameisen übersteigt, zum Markierungsmittelpunkt gehen um dort hoffentlich den Apfel zu sehen.
         if (!(Ziel is Obst) &&
             !(Ziel is Bau) &&
             AnzahlAmeisenInSichtweite < markierung.Information)
         {
             GeheZuZiel(markierung);
             // Sollte die Entfernung mehr als 50 schritte zum Mittelpunkt betragen, soll eine Folgemarkierung gesprüht werden um denn Effektradius zu erhöhen.
             if (Koordinate.BestimmeEntfernung(this, markierung) > 50)
             {
                 SprüheMarkierung(
                     Koordinate.BestimmeRichtung(this, markierung),
                     Koordinate.BestimmeEntfernung(this, markierung));
             }
         }
         else
         {
             // In allen anderen Fällen soll sie kurz stehen bleiben um zu verhindern, dass die Ameise dem Apfel ewig hinterher läuft.
             BleibStehen();
         }
     }
 }
コード例 #10
0
 /// <summary>
 /// Wird einmal aufgerufen, wenn die Ameise eine Markierung des selben
 /// Volkes riecht. Einmal gerochene Markierungen werden nicht erneut
 /// gerochen.
 /// </summary>
 /// <param name="markierung">Die nächste neue Markierung.</param>
 public override void RiechtFreund(Markierung markierung)
 {
     if (!laufeWeg && Ziel == null)
     {
         DreheInRichtung(markierung.Information);
         GeheGeradeaus(10);
     }
 }
コード例 #11
0
 /// <summary>
 /// Wird einmal aufgerufen, wenn die Ameise eine Markierung des selben
 /// Volkes riecht. Einmal gerochene Markierungen werden nicht erneut
 /// gerochen.
 /// </summary>
 /// <param name="markierung">Die nächste neue Markierung.</param>
 public override void RiechtFreund(Markierung markierung)
 {
     if (gruppenführer[gruppe] == this && Ziel == null)
     {
         DreheInRichtung(markierung.Information);
         GeheGeradeaus(20);
     }
 }
コード例 #12
0
 public override void RiechtFreund(Markierung markierung)
 {
     if (myAmeise.Ziel == null && markierung.Information == warCall)
     {
         myAmeise.Denke("Off to war...");
         myAmeise.GeheZuZiel(markierung);
     }
 }
コード例 #13
0
 /// <summary>
 /// Wird wiederholt aufgerufen in der die Ameise mindestens eine
 /// Markierung des selben Volkes riecht.
 /// </summary>
 /// <param name="markierung">Die nächstgelegene neue Markierung.</param>
 public override void RiechtFreund(Markierung markierung)
 {
     // Die Ameise soll, sofern sie nicht schon ein Ziel wie "Käfer",
     // "Markierung" oder "Bau" hat auf direktem Weg zum Markierungsmittelpunkt
     // laufen von wo aus man hoffentlich weitere Markierungen oder direkt den
     // Käfer sieht.
     if (Ziel == null)
     {
         GeheZuZiel(markierung);
     }
 }
コード例 #14
0
 public override void Riecht(Markierung markierung)
 {
     if (markierung.IstEigeneMarkierung && AktuellesZiel == null)
     {
         if (markierung.Information >= 0)
         {
             DreheZu(markierung.Information);
             GeheGeradeaus(100);
         }
         else
             GeheZu(markierung);
     }
 }
コード例 #15
0
 /// <summary>
 /// Markierungen, die von anderen Ameisen platziert werden, können von befreundeten Ameisen
 /// gewittert werden. Diese Methode wird aufgerufen, wenn eine Ameise zum ersten Mal eine
 /// befreundete Markierung riecht.
 /// Weitere Infos unter "http://wiki.antme.net/de/API1:RiechtFreund(Markierung)"
 /// </summary>
 /// <param name="markierung">Die gerochene Markierung</param>
 public override void RiechtFreund(Markierung markierung)
 {
     if (this.Ziel != null || zielOptimized != null)
     {
         return;
     }
     //Die Information enthält bei uns den Empfänger.
     //int.Max richtet sich dabei an Apfelsammler
     //-1 richtet sich dabei an Krieger
     if ((markierung.Information == -1 && Kaste == "Krieger") || (markierung.Information == int.MaxValue && Kaste == "Apfelsammler"))
     {
         this.GeheZuZielOptimized(markierung);
     }
 }
コード例 #16
0
ファイル: DeutscheAmeise.cs プロジェクト: newice/AntMeCore
 public override void Riecht(Markierung markierung)
 {
     if (markierung.IstEigeneMarkierung && AktuellesZiel == null)
     {
         if (markierung.Information >= 0)
         {
             DreheZu(markierung.Information);
             GeheGeradeaus(100);
         }
         else
         {
             GeheZu(markierung);
         }
     }
 }
コード例 #17
0
 /// <summary>
 /// Wird einmal aufgerufen, wenn die Ameise eine Markierung des selben
 /// Volkes riecht. Einmal gerochene Markierungen werden nicht erneut
 /// gerochen.
 /// </summary>
 /// <param name="markierung">Die nächste neue Markierung.</param>
 public override void RiechtFreund(Markierung markierung)
 {
     if (Kaste == "Wächter")
     {
         if (gemerkterZucker == null)
         {
             DreheInRichtung(markierung.Information);
             GeheGeradeaus();
         }
     }
     else if (Ziel == null)
     {
         DreheInRichtung(markierung.Information);
         GeheGeradeaus();
     }
 }
コード例 #18
0
        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);
                }
            }
        }
コード例 #19
0
        /// <summary>
        /// Markierungen, die von anderen Ameisen platziert werden, können von befreundeten Ameisen
        /// gewittert werden. Diese Methode wird aufgerufen, wenn eine Ameise zum ersten Mal eine
        /// befreundete Markierung riecht.
        /// Weitere Infos unter "http://wiki.antme.net/de/API1:RiechtFreund(Markierung)"
        /// </summary>
        /// <param name="markierung">Die gerochene Markierung</param>
        public override void RiechtFreund(Markierung markierung)
        {
            //Gehe in Richtung Zuckerberg
            if (markierung.Information < 1000)
            {
                if (Ziel == null)
                {
                    //Drehe Richtung Zuckerberg
                    DreheInRichtung(markierung.Information);
                    GeheGeradeaus();
                }
            }

            //Gehe zu Apfel um zu helfen
            if (markierung.Information == 1000 && AktuelleLast == 0)
            {
                GeheZuZiel(markierung);
            }
        }
コード例 #20
0
        /// <summary>
        /// Markierungen, die von anderen Ameisen platziert werden, können von befreundeten Ameisen
        /// gewittert werden. Diese Methode wird aufgerufen, wenn eine Ameise zum ersten Mal eine
        /// befreundete Markierung riecht.
        /// Weitere Infos unter "http://wiki.antme.net/de/API1:RiechtFreund(Markierung)"
        /// </summary>
        /// <param name="markierung">Die gerochene Markierung</param>
        public override void RiechtFreund(Markierung markierung)
        {
            if ((markierung.Information == 1000 && Kaste == "Sammler") || (markierung.Information == 1000 && Kaste == "Späher") || (markierung.Information == 1001 && Kaste == "Kämpfer"))
            {
                if (Ziel == null)
                {
                    GeheZuZiel(markierung);
                }
            }

            if (markierung.Information < 1000 && Kaste == "Sammler")
            {
                if (Ziel == null)
                {
                    DreheInRichtung(markierung.Information);
                    GeheGeradeaus();
                    Denke("Gehe zu Fressen");
                }
            }
        }
コード例 #21
0
        /// <summary>
        /// Wird einmal aufgerufen, wenn die Ameise eine Markierung des selben
        /// Volkes riecht. Einmal gerochene Markierungen werden nicht erneut
        /// gerochen.
        /// </summary>
        /// <param name="markierung">Die nächste neue Markierung.</param>
        public override void RiechtFreund(Markierung markierung)
        {
            // Auf Markierungen wird nur reagiert, wenn das Ziel nicht der Bau oder
            // Zucker ist.
            if (!(Ziel is Zucker) && !(Ziel is Bau))
            {
                // Die Richtung aus der Markierung auslesen und über die Doppelte sichtweite loslaufen
                DreheInRichtung(markierung.Information);
                GeheGeradeaus(Sichtweite * 2);

                // Sollte die Entfernung mehr als 50 schritte zum Mittelpunkt betragen
                // soll eine Folgemarkierung gesprüht werden um denn Effektradius zu
                // erhöhen.
                if (Koordinate.BestimmeEntfernung(this, markierung) > 50)
                {
                    SprüheMarkierung(
                        Koordinate.BestimmeRichtung(this, markierung),
                        Koordinate.BestimmeEntfernung(this, markierung));
                }
            }
        }
コード例 #22
0
        /// <summary>
        /// Wird einmal aufgerufen, wenn die Ameise eine Markierung des selben
        /// Volkes riecht. Einmal gerochene Markierungen werden nicht erneut
        /// gerochen.
        /// </summary>
        /// <param name="markierung">Die nächste neue Markierung.</param>
        public override void RiechtFreund(Markierung markierung)
        {
            switch (Kaste)
            {
            case "Kundschafter":
                GeheWegVon(markierung);
                break;

            case "Sammler":
                if (Ziel == null)
                {
                    GeheZuZiel(markierung);
                }
                break;

            case "Krieger":
                if (!verteidigen)
                {
                    GeheZuZiel(markierung);
                }
                break;
            }
        }
コード例 #23
0
ファイル: FixMe.cs プロジェクト: TeEmZe/AntBee
 /// <summary>
 /// Markierungen, die von anderen Ameisen platziert werden, können von befreundeten Ameisen 
 /// gewittert werden. Diese Methode wird aufgerufen, wenn eine Ameise zum ersten Mal eine 
 /// befreundete Markierung riecht.
 /// Weitere Infos unter "http://wiki.antme.net/de/API1:RiechtFreund(Markierung)"
 /// </summary>
 /// <param name="markierung">Die gerochene Markierung</param>
 public override void RiechtFreund(Markierung markierung)
 {
 }
コード例 #24
0
ファイル: Marker.cs プロジェクト: dikodam/g37r3k7
        public bool IstZuckerLokalisiert(Markierung markierung)
        {
            var infoCode = markierung.Information;

            return(infoCode >= ZUCKER_LOKALISIERT && infoCode < OBST_GESEHEN);
        }
コード例 #25
0
ファイル: Marker.cs プロジェクト: dikodam/g37r3k7
        public bool IstZuckerGesehen(Markierung markierung)
        {
            var infoCode = markierung.Information;

            return(infoCode >= ZUCKER_GESEHEN && infoCode < ZUCKER_LOKALISIERT);
        }
コード例 #26
0
ファイル: Marker.cs プロジェクト: dikodam/g37r3k7
 public bool IstZucker(Markierung markierung) =>
 IstZuckerGesehen(markierung) || IstZuckerLokalisiert(markierung);
コード例 #27
0
 public void RiechtFreund(Markierung markierung)
 {
     throw new System.NotImplementedException();
 }
コード例 #28
0
ファイル: JavAnt.cs プロジェクト: felix11/MSP-Workshops
 /// <summary>
 /// Wird einmal aufgerufen, wenn die Ameise eine Markierung des selben
 /// Volkes riecht. Einmal gerochene Markierungen werden nicht erneut
 /// gerochen.
 /// </summary>
 /// <param name="markierung">Die nächste neue Markierung.</param>
 public override void RiechtFreund(Markierung markierung)
 {
     networkCommands("RiechtFreund", markierung, markierung.Information.ToString());
 }
コード例 #29
0
 /// <summary>
 /// Markierungen, die von anderen Ameisen platziert werden, können von befreundeten Ameisen
 /// gewittert werden. Diese Methode wird aufgerufen, wenn eine Ameise zum ersten Mal eine
 /// befreundete Markierung riecht.
 /// Weitere Infos unter "http://wiki.antme.net/de/API1:RiechtFreund(Markierung)"
 /// </summary>
 /// <param name="markierung">Die gerochene Markierung</param>
 public override void RiechtFreund(Markierung markierung)
 {
     brain.RiechtFreund(markierung);
 }
コード例 #30
0
ファイル: IVerhalten.cs プロジェクト: dikodam/g37r3k7
 public abstract void RiechtFreund(Markierung markierung);
コード例 #31
0
        /// <summary>
        /// Wird einmal aufgerufen, wenn die Ameise eine Markierung des selben
        /// Volkes riecht. Einmal gerochene Markierungen werden nicht erneut
        /// gerochen.
        /// </summary>
        /// <param name="markierung">Die nächste neue Markierung.</param>
        public override void RiechtFreund(Markierung markierung)
        {
            Marker marker = Markers.Get(markierung.Information);

            try
            {
                switch (marker.markerType)
                {
                case Marker.MarkerType.HilfeAmeise:
                    //Hilfsbereitschaft, Teamfähigkeit prüfen
                    //Nahrung fallen lassen
                    //helfen

                    //wenn sie nicht schon beim angreifen ist
                    if (!greiftAn)
                    {
                        //dann über Angriff nachdenken
                        if (FuzzyInferenceSystem.Superdecision5x5x2(character.teamfaehigkeit, character.ameisenFreundeInNaehe, character.angreifen, memory.GetDecisionValue(DecisionType.AngreifenAmeise)))
                        {
                            if (marker.markerInformation == Marker.MarkerInformationType.Insekt)
                            {
                                LasseNahrungFallen();
                                trägtNahrung = false;
                                GreifeAn(marker.Insekt);
                                greiftAn    = true;
                                hilftFreund = true;
                                memory.ActionDone(DecisionType.AngreifenAmeise);
                                setActionBreak();
                            }
                            else
                            {
                                Weitermachen();
                            }
                        }
                        else
                        {
                            Weitermachen();
                        }
                    }
                    else
                    {
                        Weitermachen();
                    }
                    break;

                case Marker.MarkerType.HilfeObst:
                    //Hilfsbereitschaft, Teamfähigkeit prüfen
                    //nur wenn keine eigene Nahrung
                    //helfen
                    if (!trägtNahrung)
                    {
                        if (FuzzyInferenceSystem.Superdecision5x5x2(character.faulheit, character.energie, character.sammelnobst, memory.GetDecisionValue(DecisionType.SammelnObst)) && FuzzyInferenceSystem.Superdecision5x5x2(character.teamfaehigkeit, character.ameisenFreundeInNaehe, character.sammelnobst, memory.GetDecisionValue(DecisionType.Gruppieren)))
                        {
                            if (marker.markerInformation == Marker.MarkerInformationType.Object)
                            {
                                GeheZuZiel(marker.Objekt);
                                hilftFreund = true;
                                memory.ActionDone(DecisionType.SammelnObst);
                                memory.ActionDone(DecisionType.Gruppieren);
                                setActionBreak();
                                //SprüheMarkierung(Markers.Add(new Marker(Marker.MarkerType.Obst, marker.Objekt)), MarkierungGrößeHilfeLokal);
                            }
                            else
                            {
                                Weitermachen();
                            }
                        }
                        else
                        {
                            Weitermachen();
                        }
                    }
                    else
                    {
                        Weitermachen();
                    }
                    break;

                case Marker.MarkerType.HilfeWanze:
                    //Hilfsbereitschaft, Teamfähigkeit prüfen
                    //Anzahl Freunde prüfen
                    //Nahrung fallen lassen
                    //helfen

                    //wenn sie nicht schon beim Angreifen ist
                    if (!greiftAn)
                    {
                        //dann über Angriff nachdenken
                        if (FuzzyInferenceSystem.Superdecision5x5x2(character.teamfaehigkeit, character.ameisenFeindeInNaehe, character.angreifen, memory.GetDecisionValue(DecisionType.AngreifenWanze)))
                        {
                            if (marker.markerInformation == Marker.MarkerInformationType.Insekt)
                            {
                                LasseNahrungFallen();
                                trägtNahrung = false;
                                GreifeAn(marker.Insekt);
                                greiftAn    = true;
                                hilftFreund = true;
                                memory.ActionDone(DecisionType.AngreifenWanze);
                                setActionBreak();
                                //SprüheMarkierung(Markers.Add(new Marker(Marker.MarkerType.HilfeWanze, marker.Insekt)), MarkierungGrößeHilfeLokal);
                            }
                        }
                        else
                        {
                            Weitermachen();
                        }
                    }
                    else
                    {
                        Weitermachen();
                    }
                    break;

                case Marker.MarkerType.Obst:
                    //das gleiche wie bei siehtObst()
                    if (!trägtNahrung)
                    {
                        if (FuzzyInferenceSystem.Superdecision5x5x2(character.faulheit, character.energie, character.sammelnobst, memory.GetDecisionValue(DecisionType.SammelnObst)) && FuzzyInferenceSystem.Superdecision5x5x2(character.teamfaehigkeit, character.ameisenFreundeInNaehe, character.sammelnobst, memory.GetDecisionValue(DecisionType.Gruppieren)))
                        {
                            if (marker.markerInformation == Marker.MarkerInformationType.Object)
                            {
                                GeheZuZiel(marker.Objekt);
                                hilftFreund = true;
                                memory.ActionDone(DecisionType.SammelnObst);
                                memory.ActionDone(DecisionType.Gruppieren);
                                setActionBreak();

                                //SprüheMarkierung
                                //SprüheMarkierung(Markers.Add(new Marker(Marker.MarkerType.HilfeObst, marker.Objekt)), MarkierungGrößeHilfeLokal);
                            }
                            else
                            {
                                Weitermachen();
                            }
                        }
                        else
                        {
                            //kein Bock, Obst aufzunehmen
                            Weitermachen();
                        }
                    }
                    else
                    {
                        Weitermachen();
                    }
                    break;

                case Marker.MarkerType.Zucker:
                    //das Gleiche wie bei siehtZucker()
                    if (!trägtNahrung)
                    {
                        if (FuzzyInferenceSystem.Superdecision5x5x2(character.faulheit, character.energie, character.sammelnzucker, memory.GetDecisionValue(DecisionType.SammelnZucker)))
                        {
                            //SprüheMarkierung((int)Information.ZielNahrung, MarkierungGrößeSammler);
                            if (marker.markerInformation == Marker.MarkerInformationType.Object)
                            {
                                GeheZuZiel(marker.Objekt);
                            }
                            else
                            {
                                if (marker.markerInformation == Marker.MarkerInformationType.Richtung)
                                {
                                    DreheInRichtung(marker.richtung);
                                    GeheGeradeaus();


                                    memory.ActionDone(DecisionType.SammelnZucker);
                                    setActionBreak();

                                    //SprüheMarkierung
                                    //SprüheMarkierung(Markers.Add(new Marker(Marker.MarkerType.Zucker, marker.Objekt)), MarkierungGrößeInformation);
                                }
                                else
                                {
                                    Weitermachen();
                                }
                            }
                        }
                        else
                        {
                            Weitermachen();
                        }
                    }
                    else
                    {
                        //traegt Nahrung
                        Weitermachen();
                    }
                    break;

                default:
                    Weitermachen();
                    break;
                }
            }
            catch (NullReferenceException)
            {
                //wahrscheinlich ungültige Markierung
            }
        }
コード例 #32
0
ファイル: JavAnt.cs プロジェクト: felix11/MSP-Workshops
 /// <summary>
 /// Wird einmal aufgerufen, wenn die Ameise eine Markierung des selben
 /// Volkes riecht. Einmal gerochene Markierungen werden nicht erneut
 /// gerochen.
 /// </summary>
 /// <param name="markierung">Die nächste neue Markierung.</param>
 public override void RiechtFreund(Markierung markierung)
 {
     networkCommands("RiechtFreund", markierung, markierung.Information.ToString());
 }
コード例 #33
0
 /// <summary>
 /// Markierungen, die von anderen Ameisen platziert werden, können von befreundeten Ameisen 
 /// gewittert werden. Diese Methode wird aufgerufen, wenn eine Ameise zum ersten Mal eine 
 /// befreundete Markierung riecht.
 /// Weitere Infos unter "http://wiki.antme.net/de/API1:RiechtFreund(Markierung)"
 /// </summary>
 /// <param name="markierung">Die gerochene Markierung</param>
 public override void RiechtFreund(Markierung markierung)
 {
     if (AktuelleLast == 0)
     {
         DreheInRichtung(markierung.Information);
     }
 }
コード例 #34
0
ファイル: Poltergeist.cs プロジェクト: dikodam/g37r3k7
 public override void RiechtFreund(Markierung markierung)
 {
     verhalten.RiechtFreund(markierung);
 }
コード例 #35
0
ファイル: ScoutVerhalten.cs プロジェクト: dikodam/g37r3k7
 public override void RiechtFreund(Markierung markierung)
 {
 }
コード例 #36
0
ファイル: MaxsAntKlasse.cs プロジェクト: beac0n/AntMeAnt
 public override void RiechtFreund(Markierung markierung)
 {
     ameisenActionHandler.RiechtFreund(markierung);
 }