private void UpdatePlayField() { while (GameIsPlaying) { OnKeyDown(); // Input logic if (!Paused) // Game logic { if (Tick.ElapsedMilliseconds < 100) { continue; // Tick ensures that each update will happen in constant time. } Tick.Restart(); Player.GetNextPosition(TailCoordsList); Player.SwitchDirection(Direction.NewDirection); GameIsPlaying = Player.BorderCollisionCheck(PlayField.Width, PlayField.Height); if (!GameIsPlaying) { continue; } AppleEaten = PlayField.AppleCollisionCheck(TailCoordsList, Player.NewHeadCoord); GameIsPlaying = Player.SelfCollisionTest(TailCoordsList, AppleEaten); if (!GameIsPlaying) { continue; } Renderer.Render(Player.HeadCoord, '0'); if (!AppleEaten) { Renderer.Render(Player.TailEndCoord, ' '); } else { AppleEaten = true; } Player.ExtendSnakeTail(TailCoordsList); Renderer.Render(Player.NewHeadCoord, '@'); Direction.LastDirection = Direction.NewDirection; } } }