Example #1
0
        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);
        }
Example #2
0
        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);
        }