public void Grow() { if (Child != null) { Child.Grow(); return; } var piece = new SnakePiece(PreviousX, PreviousY); piece.SetParent(this); }
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(); }