示例#1
0
 /// <summary>
 /// If the ant’s destination is a mound of sugar, this method is called as soon
 /// as the ant has reached its destination. It means that the ant is now near
 /// enough to its destination/target to interact with it.
 /// Read more: "http://wiki.antme.net/en/API1:DestinationReached(Sugar)"
 /// </summary>
 /// <param name="sugar">reached sugar</param>
 public override void DestinationReached(Sugar sugar)
 {
     if (Caste == Consts.Collector)
     {
         CollectorDestinationReached(sugar);
     }
 }
示例#2
0
        public void TestMethod8()
        {
            Sugar  sugar          = new Sugar();
            double expectedResult = .50;

            Assert.AreEqual(expectedResult, sugar.price);
        }
        public virtual bool LineStats(OMetaStream <char> inputStream, out OMetaList <HostExpression> result, out OMetaStream <char> modifiedStream)
        {
            OMetaList <HostExpression> adds = null;
            OMetaList <HostExpression> subs = null;

            modifiedStream = inputStream;
            if (!MetaRules.Apply(
                    delegate(OMetaStream <char> inputStream2, out OMetaList <HostExpression> result2, out OMetaStream <char> modifiedStream2)
            {
                modifiedStream2 = inputStream2;
                if (!MetaRules.Apply(Number, modifiedStream2, out result2, out modifiedStream2))
                {
                    return(MetaRules.Fail(out result2, out modifiedStream2));
                }
                adds = result2;
                if (!MetaRules.ApplyWithArgs(Exactly, modifiedStream2, out result2, out modifiedStream2, ("\t").AsHostExpressionList()))
                {
                    return(MetaRules.Fail(out result2, out modifiedStream2));
                }
                if (!MetaRules.Apply(Number, modifiedStream2, out result2, out modifiedStream2))
                {
                    return(MetaRules.Fail(out result2, out modifiedStream2));
                }
                subs = result2;
                result2 = (Sugar.Cons(adds, subs)).AsHostExpressionList();
                return(MetaRules.Success());
            }, modifiedStream, out result, out modifiedStream))
            {
                return(MetaRules.Fail(out result, out modifiedStream));
            }
            return(MetaRules.Success());
        }
示例#4
0
 /// <summary>
 /// This method is called as soon as an ant sees a mound of sugar in its 360°
 /// visual range. The parameter is the mound of sugar that the ant has spotted.
 /// Read more: "http://wiki.antme.net/en/API1:Spots(Sugar)"
 /// </summary>
 /// <param name="sugar">spotted sugar</param>
 public override void Spots(Sugar sugar)
 {
     if (this.Destination == null)
     {
         this.GoToDestination(sugar);
     }
 }
示例#5
0
        static void Main(string[] args)
        {
            Console.WriteLine("----義大利餐館菜單----");

            Spaghetti normalSpaghetti = new NormalSpaghetti(); // 產生平民義大利麵

            normalSpaghetti = new Chocolate(normalSpaghetti);  // 加點火腿
            normalSpaghetti = new Egg(normalSpaghetti);        // 加點蛋
            normalSpaghetti = new Cheese(normalSpaghetti);     // 加點起司
            normalSpaghetti = new Bacon(normalSpaghetti);      //
            Console.WriteLine("名稱:{0} 價錢:{1} 材料:{2}",
                              normalSpaghetti.GetName(),
                              normalSpaghetti.GetPrice(),
                              normalSpaghetti.GetDescription());

            Spaghetti spaghettiBolognese = new SpaghettiBolognese(); // 產生茄汁肉醬義大利麵

            spaghettiBolognese = new Strawberry(spaghettiBolognese);
            spaghettiBolognese = new Banana(spaghettiBolognese);
            spaghettiBolognese = new Sugar(spaghettiBolognese);
            Console.WriteLine("名稱:{0} 價錢:{1} 材料:{2}",
                              spaghettiBolognese.GetName(),
                              spaghettiBolognese.GetPrice(),
                              spaghettiBolognese.GetDescription());

            Console.ReadLine();
        }
示例#6
0
    void CollectSugar()
    {
        // state update
        if (null != sugar)
        {
            if (Vector3.Distance(sugar.transform.position, transform.position) < 0.5)
            {
                sugar.GetEaten();
                SugarCollected++;

                if (SugarCollected == SugarToCollect)
                {
                    activeState = GoToColony;
                    seek.target = colonyTransform;
                }
                else
                {
                    sugar = sugarController.GetRandomSugar();
                    if (null != sugar)
                    {
                        seek.target = sugar.transform;
                    }
                    else
                    {
                        activeState = GoToColony;
                        seek.target = colonyTransform;
                    }
                }
            }
        }
    }
示例#7
0
        /// <summary>
        /// Is called once if the ant has a pile of sugar as target and arrives at the pile.
        /// </summary>
        /// <param name="sugar">The pile of sugar</param>
        public override void TargetReached(Sugar sugar)


        {
            this.Take(sugar);
            this.GoBackToAnthill();
        }
示例#8
0
        /// <summary>
        /// Tell the task manager, that sugar was found
        /// </summary>
        /// <param name="sugar"></param>
        public void ReportSugar(Sugar sugar)
        {
            int existingTickets = 0;

            if (Sugars.Contains(sugar))
            {
                existingTickets = collectorQ.Count(x => x is FoodTask && ((FoodTask)x).Target == sugar);
                if (existingTickets > 0)
                {
                    return;
                }

                // we know the sugar, but there are no tasks anymore for it
                // this could be related to killed ants on their way back home
                // so we will create new ones.
            }
            else
            {
                Sugars.Add(sugar);
            }

            var taskCount = (sugar.Amount - (existingTickets * 10)) / 10; // TODO: get max load more dynamicly

            for (int i = 0; i < taskCount; i++)
            {
                collectorQ.Enqueue(new FoodTask(sugar));
            }

            log.Debug($"New sugar reported, enqueued {taskCount} tasks.");
        }
示例#9
0
 private void OnTriggerEnter(Collider other)
 {
     switch (antState)
     {
     case AntState.CollectingSugar:
         Sugar sugar = other.gameObject.GetComponent <Sugar>();
         if (seek.target != null && sugar != null)
         {
             if (sugar.gameObject == seek.target.gameObject)
             {
                 sugar.GetEaten();
                 SugarCollected++;
                 if (SugarCollected == SugarToCollect)
                 {
                     antState    = AntState.GoingToColony;
                     seek.target = colonyTransform;
                 }
                 else
                 {
                     sugar = sugarController.GetRandomSugar();
                     if (sugar != null)
                     {
                         seek.target = sugar.transform;
                     }
                     else
                     {
                         antState    = AntState.GoingToColony;
                         seek.target = colonyTransform;
                     }
                 }
             }
         }
         break;
     }
 }
示例#10
0
        static void Main()
        {
            try
            {
                //生成实体
                Sugar sqlSugar = new Sugar();
                sqlSugar.setCon(AppConfSetting.ConnectionString);
                sqlSugar.sugarClient.Open();
                sqlSugar.sugarClient.DbFirst
                .IsCreateDefaultValue().IsCreateAttribute().CreateClassFile("D:\\Models", "Ris.Dal.Entitys");
                sqlSugar.sugarClient.Close();


                //设置应用程序处理异常方式:ThreadException处理
                Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
                //处理UI线程异常
                Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
                //处理非UI线程异常
                AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);

                #region 应用程序的主入口点
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                //Application.Run(new DeptSettingForm());
                Application.Run(new LoginForm());
                #endregion
            }
            catch (Exception ex)
            {
                string str = GetExceptionMsg(ex, string.Empty);
                MessageBox.Show(str, "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
                NLogger.LogError(str, ex);
                Application.Exit();
            }
        }
示例#11
0
        public override string ToString()
        {
            string stickValue = Stick ? "0" : string.Empty;
            string sugarValue = Sugar > 0 ? Sugar.ToString() : string.Empty;

            return($"{Type}:{sugarValue}:{stickValue}");
        }
示例#12
0
        public void Checking_UseStock_Expected_Return9()
        {
            //Arrange
            Inventory inventory = new Inventory();
            Recipe    recipe    = new Recipe();
            Lemons    lemons    = new Lemons();
            Sugar     sugar     = new Sugar();
            Ice       ice       = new Ice();
            int       expected  = 12;

            lemons.ItemCount = 12;
            sugar.ItemCount  = 12;
            ice.ItemCount    = 12;
            recipe.lem       = 3;
            recipe.sug       = 3;
            recipe.ice       = 3;
            int expectedLemonResult = lemons.ItemCount - recipe.lem;
            int expectedSugarResult = sugar.ItemCount - recipe.sug;
            int expectedIceResult   = ice.ItemCount - recipe.ice;



            //Act
            inventory.UseStock();


            //Assert
            Assert.AreEqual(expected, lemons.ItemCount);
        }
 public override void DestinationReached(Sugar sugar)
 {
     if (this.Caste == WorkerCasteName)
     {
         this.Take(sugar);
         this.CustomGoToDestination(this.Home);
     }
 }
示例#14
0
        public DBusActivity(Sugar.Activity activity)
        {
            if (activity==null) return;

            _activity = activity;
            System.Console.Out.WriteLine("Activity DBus ctor ActivityID: "+activity.activityId+"<<");
            createDBusLoopEvent(activity.activityId);
        }
示例#15
0
 public Inventory()
 {
     lemons  = new Lemons();
     ice     = new Ice();
     sugar   = new Sugar();
     pitcher = new Pitcher();
     cups    = new Cups();
 }
示例#16
0
        /// <summary>
        /// If the ant's destination is a mound of sugar, this method
        /// is called as soon as the ant has reached its destination.
        /// It means that the ant is now near enough to its
        /// destination/target to interact with it.
        /// Read more: "http://wiki.antme.net/en/API1:DestinationReached(Sugar)"
        /// </summary>
        /// <param name="sugar">reached sugar</param>
        public override void DestinationReached(Sugar sugar)
        {
            int direction   = Coordinate.GetDegreesBetween(this, sugar);
            int information = CreateMarkerInformation(direction, infoTypeSugar);

            MakeMark(information, 80);
            TakeFoodToAntHill(sugar);
        }
示例#17
0
 void CollectorSpotsSugar(Sugar sugar)
 {
     if (CustomTarget == sugar || Destination == sugar)
     {
         GoToDestination(sugar);
         task = null;
     }
 }
示例#18
0
        public void IsNoneTest()
        {
            Sugar sugarTest = new Sugar();

            Assert.AreEqual(sugarTest.IsNone(), true);
            sugarTest.SetSugarLevel("無糖");
            Assert.AreEqual(sugarTest.IsNone(), false);
        }
示例#19
0
 public static Sugar GetInstance()
 {
     if (instance == null)
     {
         instance = new Sugar();
     }
     return(instance);
 }
示例#20
0
        public DBusActivity(Sugar.Window window)
        {
            if (window==null) return;

            _window=window;
            System.Console.Out.WriteLine("Window DBus ctor ActivityID: "+window.activityId+"<<");
            createDBusLoopEvent(window.activityId);
        }
示例#21
0
        public void SetSugarLevelTest()
        {
            Sugar sugarTest = new Sugar();

            sugarTest.SetSugarLevel("半糖");
            Assert.AreEqual(sugarTest.level, "半糖");
            sugarTest.SetSugarLevel("hggg");
            Assert.AreEqual(sugarTest.level, "");
        }
示例#22
0
 public string toClientData()
 {
     return(string.Format("\"{0}\",{1},{2},{3},\"{4}\",{5},{6},{7},{8},{9},{10},{11},{12},{13}, \"{14}\"", Name, Id, (Category)? 1 : 0,
                          Price.ToString("0.00", CultureInfo.InvariantCulture), Composition, EnergyKj, EnergyKcal,
                          Protein.ToString("0.00", CultureInfo.InvariantCulture), Carbohydrates.ToString("0.00", CultureInfo.InvariantCulture),
                          Sugar.ToString("0.00", CultureInfo.InvariantCulture), TotalFat.ToString("0.00", CultureInfo.InvariantCulture),
                          SaturatedFat.ToString("0.00", CultureInfo.InvariantCulture), Fiber.ToString("0.00", CultureInfo.InvariantCulture),
                          Salt.ToString("0.00", CultureInfo.InvariantCulture), Path));
 }
示例#23
0
        /// <summary>
        /// Is called continuously whenever the ant sees at least one pile of sugar
        /// </summary>
        /// <param name="sugar">The nearest pile of sugar.</param>
        public override void Spots(Sugar sugar)

        {
            if (CurrentLoad == 0 && Caste == "Eater")

            {
                this.GoToTarget(sugar);
            }
        }
        public IActionResult Coffee()
        {
            var        vm      = new CoffeeVm();
            ICreamer   creamer = new Cream();
            ISweetener sugar   = new Sugar();

            vm.CoffeeCup = new CoffeeCup(creamer, sugar);

            return(View(vm));
        }
        public decimal GetPrice(CoffeeSize size, Cream cream, Sugar sugar)
        {
            // Arrange

            // Act
            var result = _coffee.GetPrice(size, cream, sugar);

            // Assert
            return(result);
        }
示例#26
0
 public void TryAddSugar(Sugar item)
 {
     lock (syncRoot)
     {
         if (!this.sugarRepo.Contains(item))
         {
             this.sugarRepo.Add(item);
         }
     }
 }
示例#27
0
        public void ShuffledTests()
        {
            var random      = new Random();
            var sequence    = Sugar.Til(10).ToList();
            var permutation = sequence.ToArray();

            random.Shuffle(permutation);
            permutation.Should().BeEquivalentTo(sequence);
            permutation.Should().NotEqual(sequence);
        }
示例#28
0
        public void SugarCostTest()
        {
            CoffeeMachine coffee_machine = new Coffee();

            coffee_machine = new Sugar(coffee_machine);
            int expected = 52;
            int actual;

            actual = coffee_machine.GetCost();
            Assert.AreEqual(expected, actual);
        }
示例#29
0
        public void SugarNameTest()
        {
            CoffeeMachine coffee_machine = new Coffee();

            coffee_machine = new Sugar(coffee_machine);
            string expected = "Кофе, с сахаром";
            string actual;

            actual = coffee_machine.Name;
            Assert.AreEqual(expected, actual);
        }
        public void Run()
        {
            var coffee = new Coffee();
            _output.WriteLine(coffee.ToString());

            var sugar = new Sugar(coffee,2);
            _output.WriteLine(sugar.ToString());

            var cream = new Cream(sugar,1);
            _output.WriteLine(cream.ToString());
        }
示例#31
0
        /// <summary>
        /// Cleans the cache from old data.
        /// </summary>
        public override void Cleanup()
        {
            // Clean other caches
            Fruits.Cleanup();
            Sugar.Cleanup();

            Bugs.Cleanup();
            Ants.Cleanup();

            Signals.Cleanup();
        }
示例#32
0
                public void Rejects_Null_Properties()
                {
                    var properties = new [] { "Property30" };
                    var target     = new SimpleClass {
                        Property1 = "Property1", Property2 = 32
                    };

                    Assert.Throws <DirectDebitException>(
                        () => Sugar.ComposeLine <SimpleClass>(SerializeMethod.FixedWidth,
                                                              properties, target));
                }
示例#33
0
        public void AddOneSugarToList()
        {
            //Arrange
            Inventory add        = new Inventory();
            Sugar     sugar      = new Sugar();
            int       sugarCount = 1;

            //Act
            add.AddSugar(sugar);
            //Assert
            Assert.AreEqual(sugarCount, add.supplies[1].Count);
        }
示例#34
0
    public static void Main(string[] args)
    {
        Coffee c = new SimpleCoffee();
          Console.WriteLine("Cost: " + c.getCost() + ";");

          c = new Milk(c);
          Console.WriteLine("Cost: " + c.getCost() + ";");

          c = new Sugar(c);
          Console.WriteLine("Cost: " + c.getCost() + ";");

          c = new SimpleCoffee();
          c = new Milk(new Sugar(c)); //shows the actual decoration
          Console.WriteLine("Cost: " + c.getCost() + ";");
    }
示例#35
0
 public void FindSugarBeforeInsulin_IfNoSugarsInAQuarterBefore_ReturnsNull()
 {
     var sugar1 = new Sugar { DateTime = DateTime.Now.AddMinutes(5) };
     var sugar2 = new Sugar { DateTime = DateTime.Now.AddMinutes(-16) };
     factories.Setup(f => f.Sugars).Returns(new List<Sugar> { sugar1, sugar2 });
     var finder = new FinderImpl(factories.Object);
     var insulin = new Insulin { DateTime = DateTime.Now };
     var sugar = finder.FindSugarBeforeInsulin(insulin);
     Assert.IsNull(sugar);
 }
示例#36
0
 public void FindSugarsAfterInsulin_DoesntReturnSugarsWhichIsAtSameTimeAsInsulin()
 {
     var sugar = new Sugar { DateTime = DateTime.Now };
     factories.Setup(f => f.Sugars).Returns(new List<Sugar> { sugar });
     factories.Setup(f => f.Insulins).Returns(new List<Insulin>());
     var finder = new FinderImpl(factories.Object);
     var insulin = new Insulin { DateTime = sugar.DateTime };
     var sugars = finder.FindSugarsAfterInsulin(insulin, 2);
     Assert.IsEmpty(sugars);
 }
示例#37
0
 public void FindSugarBeforeInsulin_ReturnsSugarWhichIsAtSameTimeAsInsulin()
 {
     var sugar = new Sugar { DateTime = DateTime.Now };
     factories.Setup(f => f.Sugars).Returns(new List<Sugar> { sugar });
     factories.Setup(f => f.Insulins).Returns(new List<Insulin>());
     var finder = new FinderImpl(factories.Object);
     var insulin = new Insulin { DateTime = sugar.DateTime };
     var foundSugar = finder.FindSugarBeforeInsulin(insulin);
     Assert.AreSame(sugar, foundSugar);
 }
示例#38
0
 public void FindSugarsAfterInsulin_IfAnotherInsulinFourHoursLater_DoesntReturnSugarsFourHoursLater()
 {
     var now = DateTime.Now;
     var sugar1 = new Sugar { DateTime = now.AddHours(4) };
     factories.Setup(f => f.Sugars).Returns(new List<Sugar> { sugar1 });
     var insulin1 = new Insulin { DateTime = now };
     var insulin2 = new Insulin { DateTime = now.AddHours(4) };
     factories.Setup(f => f.Insulins).Returns(new List<Insulin> { insulin1, insulin2 });
     var finder = new FinderImpl(factories.Object);
     var sugars = finder.FindSugarsAfterInsulin(insulin1, 4);
     Assert.IsEmpty(sugars);
 }
示例#39
0
 public static void getcordss(Sugar sugarp, out double x, out double y)
 {
     double distance = Coordinate.GetDistanceBetween(sugarp, hill);
     double anglet = Coordinate.GetDegreesBetween(sugarp, hill);
     double anglec = anglet * (Math.PI / 180);
     double angleb = anglec;
     if (anglet > 90 && anglet < 180)
     {
         angleb = anglec - 90 * (Math.PI / 180);
         x = Math.Sin(angleb) * distance;
         y = Math.Cos(angleb) * distance;
     }
     else if (anglet > 0 && anglet < 90)
     {
         angleb = anglec;
         x = (-1) * Math.Cos(angleb) * distance;
         y = Math.Sin(angleb) * distance;
     }
     else if (anglet > 270 && anglet < 360)
     {
         angleb = anglec - 270 * (Math.PI / 180);
         x = (-1) * Math.Sin(angleb) * distance;
         y = (-1) * Math.Cos(angleb) * distance;
     }
     else if (anglet > 180 && anglet < 270)
     {
         angleb = anglec - 180 * (Math.PI / 180);
         x = Math.Cos(angleb) * distance;
         y = (-1) * Math.Sin(angleb) * distance;
     }
     else if (anglet == 90)
     {
         x = 0;
         y = distance;
     }
     else if (anglet == 270)
     {
         x = 0;
         y = (-1) * distance;
     }
     else if (anglet == 180)
     {
         x = distance;
         y = 0;
     }
     else if (anglet == 0 || anglet == 360)
     {
         x = (-1) * distance;
         y = 0;
     }
     else
     {
         x = 0;
         y = 0;
     }
 }
示例#40
0
 public override void Spots(Sugar sugar) { Spotted(this, new ItemEventArgs(Items.Sugar.Track(sugar))); }
示例#41
0
 public override void TargetReached(Sugar sugar) { Reached(this, new ItemEventArgs(Items.Sugar.Track(sugar))); }
示例#42
0
 public void FindSugarsAfterInsulin_IfNoSugarsInThreeHoursAfter_ReturnsEmpty()
 {
     var sugar1 = new Sugar { DateTime = DateTime.Now.AddHours(3.1) };
     var sugar2 = new Sugar { DateTime = DateTime.Now.AddHours(-1) };
     factories.Setup(f => f.Sugars).Returns(new List<Sugar> { sugar1, sugar2 });
     factories.Setup(f => f.Insulins).Returns(new List<Insulin>());
     var finder = new FinderImpl(factories.Object);
     var insulin = new Insulin { DateTime = DateTime.Now };
     var sugars = finder.FindSugarsAfterInsulin(insulin, 3);
     Assert.AreEqual(0, sugars.Count);
 }
示例#43
0
 public void FindSugarsAfterInsulin_IfAnotherInsulinSoonerThanFourHoursLater_ReturnsOnlySugarsBeforeThisInsulin(
     int removeMinutes)
 {
     var sugar1 = new Sugar { DateTime = DateTime.Now.AddHours(1) };
     var sugar2 = new Sugar { DateTime = DateTime.Now.AddHours(2) };
     factories.Setup(f => f.Sugars).Returns(new List<Sugar> { sugar1, sugar2 });
     var insulin1 = new Insulin { DateTime = DateTime.Now };
     var insulin2 = new Insulin { DateTime = sugar2.DateTime.AddMinutes(-removeMinutes) };
     factories.Setup(f => f.Insulins).Returns(new List<Insulin> { insulin1, insulin2 });
     var finder = new FinderImpl(factories.Object);
     var sugars = finder.FindSugarsAfterInsulin(insulin1, 4);
     Assert.IsTrue(Enumerable.SequenceEqual(new List<Sugar> { sugar1 }, sugars));
 }
示例#44
0
 public void FindSugarBeforeInsulin_IfTwoSugarsInAQuarter_ReturnsLatestSugar()
 {
     var sugar1 = new Sugar { DateTime = DateTime.Now.AddMinutes(-14) };
     var sugar2 = new Sugar { DateTime = DateTime.Now.AddMinutes(-10) };
     factories.Setup(f => f.Sugars).Returns(new List<Sugar> { sugar1, sugar2 });
     var finder = new FinderImpl(factories.Object);
     var insulin = new Insulin { DateTime = DateTime.Now };
     var sugar = finder.FindSugarBeforeInsulin(insulin);
     Assert.AreSame(sugar2, sugar);
 }
示例#45
0
 public void FindSugarsAfterInsulin_IfSugarsInFourHoursAfter_ReturnsThoseSugars()
 {
     var sugar1 = new Sugar { DateTime = DateTime.Now.AddHours(1) };
     var sugar2 = new Sugar { DateTime = DateTime.Now.AddHours(3.5) };
     var sugar3 = new Sugar { DateTime = DateTime.Now.AddHours(5) };
     factories.Setup(f => f.Sugars).Returns(new List<Sugar> { sugar1, sugar2, sugar3 });
     factories.Setup(f => f.Insulins).Returns(new List<Insulin>());
     var finder = new FinderImpl(factories.Object);
     var insulin = new Insulin { DateTime = DateTime.Now };
     var sugars = finder.FindSugarsAfterInsulin(insulin, 4);
     Assert.IsTrue(Enumerable.SequenceEqual(new List<Sugar> { sugar1, sugar2 }, sugars));
 }
示例#46
0
 public void FindSugarsAfterInsulin_SortsReturnedSugarsChronologically()
 {
     var sugar1 = new Sugar { DateTime = DateTime.Now.AddHours(2) };
     var sugar2 = new Sugar { DateTime = DateTime.Now.AddHours(1) };
     factories.Setup(f => f.Sugars).Returns(new List<Sugar> { sugar1, sugar2 });
     factories.Setup(f => f.Insulins).Returns(new List<Insulin>());
     var finder = new FinderImpl(factories.Object);
     var insulin = new Insulin { DateTime = DateTime.Now };
     var sugars = finder.FindSugarsAfterInsulin(insulin, 4);
     Assert.IsTrue(Enumerable.SequenceEqual(new List<Sugar> { sugar2, sugar1 }, sugars));
 }
示例#47
0
 /// <summmery>
 /// This method is called as soon as an ant sees a mound of sugar in its 360° 
 /// visual range. The parameter is the mound of sugar that the ant has spotted.
 /// Read more: "http://wiki.antme.net/en/API1:Spots(Sugar)"
 /// </summary>
 /// <param name="sugar">spotted sugar</param>
 public override void Spots(Sugar sugar)
 {
     double x, y;
     getcordss(sugar, out x, out y);
     for (int i = 0; i < 4; i++)
     {
         if (zucker[i] == sugar && ForeignAntsInViewrange > 5)
         {
             aimedsugar[i, 0] = 0;
             aimedsugar[i, 1] = 0;
             zucker[i] = null;
         }
     }
     for (int i = 0; i < 4; i++)
     {
         if (x > aimedsugar[i, 0] - 1 && x < aimedsugar[i, 0] + 1 && y > aimedsugar[i, 1] - 1 && y < aimedsugar[i, 1] + 1)
             break;
         else if (zucker[i] == null)
         {
             aimedsugar[i, 0] = x;
             aimedsugar[i, 1] = y;
             zucker[i] = sugar;
             unterwegs[i, 0] = sugar.Id;
             break;
         }
     }
     if (Range - WalkedRange - Coordinate.GetDistanceBetween(this, sugar) > Range * 2 / 3 && CarryingFruit == null && Caste == "sugar" && CurrentLoad < MaximumLoad / 5 && !IsTired)
     {
         if (Destination != sugar)
             Stop();
         GoToDestination(sugar);
         for (int i = 0; i < 4; i++)
         {
             if (sugar.Id == unterwegs[i, 0])
             {
                 for (int u = 2; u < 100; u++)
                 {
                     if (unterwegs[i, u] == Ameisenliste.IndexOf(this)) return;
                     else if (unterwegs[i, u] == 0)
                     {
                         Think("eingetragen");
                         unterwegs[i, u] = Ameisenliste.IndexOf(this);
                         unterwegs[i, 1]++;
                         return;
                     }
                 }
             }
         }
     }
 }
示例#48
0
 /// <summary>
 /// If the ant’s destination is a mound of sugar, this method is called as soon 
 /// as the ant has reached its destination. It means that the ant is now near 
 /// enough to its destination/target to interact with it.
 /// Read more: "http://wiki.antme.net/en/API1:DestinationReached(Sugar)"
 /// </summary>
 /// <param name="sugar">reached sugar</param>
 public override void DestinationReached(Sugar sugar)
 {
     if (Caste == "sugar")
     {
         Think("genommen");
         Take(sugar);
         if (DistanceToAnthill > 10)
         {
             if (Direction != Coordinate.GetDegreesBetween(this, hill)) TurnToDetination(hill);
             GoForward(DistanceToAnthill - 5);
         }
         else
             GoToDestination(hill);
         //MakeMark(0, 300);
         for (int i = 0; i < 4; i++)
         {
             if (sugar.Id == unterwegs[i, 0])
                 for (int u = 2; u < 100; u++)
                 {
                     if (unterwegs[i, u] == Ameisenliste.IndexOf(this))
                     {
                         unterwegs[i, u] = 0;
                         unterwegs[i, 1]--;
                         Think("Ausgetragen - Unterwegs: " + unterwegs[i, 1]);
                         return;
                     }
                 }
         }
     }
     else if (Caste == "searcher" && FriendlyAntsFromSameCasteInViewrange <= 1)
     {
         //MakeMark(0, 700);
     }
 }
示例#49
0
 public OlpcDBusObject(Sugar.Activity activity)
 {
     _activity=activity;
 }
示例#50
0
 public OlpcDBusObject(Sugar.Window window)
 {
     _window=window;
 }