/// <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_); } }
/// <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); } }
/// <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); } }
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(); } }
/// <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); } }
/// <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_); } }