示例#1
0
        /// <summary>
        /// 在尾巴到苹果的路径找到后,寻找头到苹果
        /// </summary>
        public void FromAppleToHead(ContainerDictionary dict, LabelContainer apple, List <Coordinate> road)
        {
            var newSnake = new List <Coordinate>();

            newSnake.Add(new Coordinate {
                X_ = Tail.X, Y_ = Tail.Y
            });
            foreach (var body in Body)
            {
                newSnake.Add(new Coordinate {
                    X_ = body.X, Y_ = body.Y
                });
            }
            foreach (var r in road)
            {
                newSnake.Add(new Coordinate {
                    X_ = r.X_, Y_ = r.Y_
                });
            }

            dict.SetContainerType(ContainerType.Start, Head.X, Head.Y);
            dict.SetContainerType(ContainerType.End, apple.X, apple.Y);
            foreach (var r in newSnake)
            {
                dict.SetContainerType(ContainerType.Wall, r.X_, r.Y_);
            }
        }
示例#2
0
 /// <summary>
 /// 寻找当前头到当前尾的路径
 /// </summary>
 public void FromHeadToTail(ContainerDictionary dict)
 {
     dict.SetContainerType(ContainerType.Start, Head.X, Head.Y);
     dict.SetContainerType(ContainerType.End, Tail.X, Tail.Y);
     foreach (var d in Body)
     {
         dict.SetContainerType(ContainerType.Wall, d.X, d.Y);
     }
 }
示例#3
0
        /// <summary>
        /// 寻找当前尾到当前苹果的路径
        /// </summary>
        public void FromTailToApple(ContainerDictionary dict, LabelContainer apple)
        {
            dict.SetContainerType(ContainerType.Start, Tail.X, Tail.Y);
            dict.SetContainerType(ContainerType.End, apple.X, apple.Y);

            dict.SetContainerType(ContainerType.Wall, Head.X, Head.Y);
            foreach (var d in Body)
            {
                dict.SetContainerType(ContainerType.Wall, d.X, d.Y);
            }
        }
示例#4
0
 private bool draw = false;//标记是否绘图
 void lab_MouseMove(object sender, MouseEventArgs e)
 {
     if (draw)
     {
         var lab = sender as LabelContainer;
         dict.SetContainerType((ContainerType)type, lab.X, lab.Y);
         if (type == 0)
         {
             if (Start != null)
             {
                 Start.BackColor = dict.LastStartContainer.ContainerColor;
             }
             Start = lab;
         }
         if (type == 1)
         {
             if (End != null)
             {
                 End.BackColor = dict.LastEndContainer.ContainerColor;
             }
             End = lab;
         }
         lab.BackColor = lab.ContainerColor;
         textBox1.Text = dict.CanPassCount().ToString();
     }
 }
示例#5
0
 /// <summary>
 /// 寻找走到下一的时候,头到尾的路径
 /// </summary>
 public void FromNextHeadToTail(ContainerDictionary dict, LabelContainer next)
 {
     dict.SetContainerType(ContainerType.Start, next.X, next.Y);
     dict.SetContainerType(ContainerType.Wall, Head.X, Head.Y);
     foreach (var i in this.Body)
     {
         dict.SetContainerType(ContainerType.Wall, i.X, i.Y);
     }
     if (next.SnakeType != SnakeTypeEnum.Apple)
     {
         dict.SetContainerType(ContainerType.End, this.Body[0].X, this.Body[0].Y);
     }
     else
     {
         dict.SetContainerType(ContainerType.End, this.Tail.X, this.Tail.Y);
     }
 }
示例#6
0
        /// <summary>
        /// 寻找吃掉苹果之后,头到尾的路径
        /// </summary>
        public void FromAppleToTail(ContainerDictionary dict, LabelContainer apple, List <Coordinate> road)
        {
            var newSnake = new List <Coordinate>();

            newSnake.Add(new Coordinate {
                X_ = Tail.X, Y_ = Tail.Y
            });
            foreach (var body in Body)
            {
                newSnake.Add(new Coordinate {
                    X_ = body.X, Y_ = body.Y
                });
            }
            newSnake.Add(new Coordinate {
                X_ = Head.X, Y_ = Head.Y
            });
            foreach (var r in road)
            {
                newSnake.Add(new Coordinate {
                    X_ = r.X_, Y_ = r.Y_
                });
            }
            var snakeLength = Body.Count + 2; //蛇长
            var roadLength  = newSnake.Count; //总长

            //移除多余的
            newSnake.RemoveRange(0, roadLength - snakeLength);

            dict.SetContainerType(ContainerType.Start, apple.X, apple.Y);
            dict.SetContainerType(ContainerType.End, newSnake[0].X_, newSnake[0].Y_);
            newSnake.RemoveAt(0);
            foreach (var r in newSnake)
            {
                dict.SetContainerType(ContainerType.Wall, r.X_, r.Y_);
            }
        }