public bool CollisionWithSelf() { SnakeElement snakeHead = Head; if (snakeHead != null) { foreach (var snakeElement in Elements) { if (!snakeElement.IsHead) { if (snakeElement.X == snakeHead.X && snakeElement.Y == snakeHead.Y) { return(true); } } } } return(false); }
internal void MoveSnake() { SnakeElement head = Elements[0]; SnakeElement tail = Elements[Elements.Count - 1]; TailBackup = new SnakeElement(_elementSize) { X = tail.X, Y = tail.Y }; head.IsHead = false; tail.IsHead = true; tail.X = head.X; tail.Y = head.Y; switch (MovementDirection) { case MovementDirection.Right: tail.X += _elementSize; break; case MovementDirection.Left: tail.X -= _elementSize; break; case MovementDirection.Up: tail.Y -= _elementSize; break; case MovementDirection.Down: tail.Y += _elementSize; break; default: break; } Elements.RemoveAt(Elements.Count - 1); Elements.Insert(0, tail); }