コード例 #1
0
 public void move(int offset, int Yset, ref MobileRobot bots)
 {
     this.isMoving = true;
     for (int i = 1; i <= offset; i++)
     {
         this.X += 1;
         Thread.Sleep(100);
     }
     //  this.Y += Yset;
     this.isMoving = false;
 }
コード例 #2
0
        public void distributeUniformly(ref List <MobileRobot> robots, ref List <int> cycles) // has to use or implement(modified)
        {
            Random      rand  = new Random();
            MobileRobot left  = new MobileRobot(this.X, -999);
            MobileRobot right = new MobileRobot(this.X, 999);

            while (true)
            {
                left.Y  = -9999;
                right.Y = 9999;
                foreach (MobileRobot r in robots)
                {
                    if (r.id != this.id)
                    {
                        if (r.Y > this.Y && r.Y < right.Y)
                        {
                            right.Y = r.Y;
                        }

                        if (r.Y < this.Y && r.Y > left.Y)
                        {
                            left.Y = r.Y;
                        }
                    }
                }

                int midY;
                if (left.Y == -9999)
                {
                    midY = this.Y;
                }
                else
                {
                    if (right.Y == 9999)
                    {
                        midY = this.Y;
                    }
                    else
                    {
                        midY = Math.Abs((left.Y + right.Y) / 2);
                    }
                }
                if (midY != this.Y)
                {
                    this.Y = midY;
                }

                cycles[id]++;
                counts++; // added number of moves
                Thread.Sleep(rand.Next(500, 5000));
                //Thread.Sleep(1000);
            }
        }