private static void StartGame()
        {
            Console.Clear();
            Console.Write("Enter your name: ");
            Player player = new Player(Console.ReadLine());

            Console.Clear();
            Window         consoleWindow  = new Window();
            Printer        printer        = new Printer(consoleWindow);
            StartupHelper  startupHelper  = new StartupHelper(consoleWindow);
            CoinGenerator  coinGenerator  = new CoinGenerator();
            EnemyGenerator enemyGenerator = new EnemyGenerator();
            Stopwatch      watch          = new Stopwatch();

            watch.Start();
            Random random = new Random();
            Timer  timer  = new Timer(t =>
            {
                if (watch.Elapsed.Seconds % 3 == 0)
                {
                    Coin newCoin = coinGenerator.GenerateCoin(consoleWindow, random);
                    printer.PrintCoin(newCoin);
                }
                if (watch.Elapsed.Seconds % 2 == 0)
                {
                    if (enemyGenerator.Enemies.Count < 15)
                    {
                        Enemy newEnemy = enemyGenerator.GenerateEnemy(consoleWindow, random);
                        printer.PrintEnemy(newEnemy);
                    }
                }
                if (watch.Elapsed.Seconds % 1 == 0)
                {
                    printer.PrintTime(watch.Elapsed);
                }
            }, null, 1000, 1000);

            startupHelper.SetProperties();
            printer.PrintFrame();
            printer.PrintInfo(player);

            while (true)
            {
                if (Console.KeyAvailable)
                {
                    ConsoleKeyInfo key          = Console.ReadKey();
                    Direction      newDirection = GetDirection(key.Key);
                    printer.ClearPlayer(player);
                    player.Move(newDirection);
                    if (player.IsDead(consoleWindow.Height, consoleWindow.Width) ||
                        enemyGenerator.IsPlayerKilled(player))
                    {
                        timer.Dispose();
                        printer.EndGame(player);
                        return;
                    }
                    CollectCoin(player, coinGenerator);
                    printer.PrintStatsOnly(player);
                    printer.PrintPlayer(player);
                }
            }
        }