示例#1
0
        public void Grow()
        {
            if (Child != null)
            {
                Child.Grow();
                return;
            }

            var piece = new SnakePiece(PreviousX, PreviousY);

            piece.SetParent(this);
        }
示例#2
0
        public void Update()
        {
            if (LoseTimer > 0)
            {
                LoseTimer--;
                if (LoseTimer == 0)
                {
                    Initialize();
                }
                RefreshLoseScreen();
                return;
            }
            if (WinTimer > 0)
            {
                WinTimer--;
                if (WinTimer == 0)
                {
                    Initialize();
                }
                RefreshWinScreen();
                return;
            }

            Head.Move(CurrentDirection);

            var piece = Head.Child;

            while (piece != null)
            {
                if (piece.X == Head.X && piece.Y == Head.Y)
                {
                    GameLose();
                    RefreshLoseScreen();
                    return;
                }
                piece = piece.Child;
            }

            if (Head.X == Food.X && Head.Y == Food.Y)
            {
                Head.Grow();
                Length++;
                SpawnFood();
                if (Length >= WinThreshold)
                {
                    GameWin();
                    RefreshWinScreen();
                    return;
                }
            }

            RefreshScreen();
        }