public void Start() { DrawGameField(); string welcomePlayer1 = "Enter name of player1: "; string welcomePlayer2 = "Enter name of player2: "; Console.SetCursorPosition(MarginLeft * 2 + Width - welcomePlayer1.Length, MarginTop + Height / 2); Console.Write(welcomePlayer1); userName1 = Console.ReadLine(); Console.SetCursorPosition(MarginLeft * 2 + Width - welcomePlayer2.Length, MarginTop + Height / 2 + 1); Console.Write(welcomePlayer1); userName2 = Console.ReadLine(); Console.Clear(); DrawGameField(); Thread thread = new Thread(MoveSnake); thread.Start(); bool startAgain = true; while (startAgain) { do { ConsoleKeyInfo key = Console.ReadKey(); if (key.Key == ConsoleKey.Escape) { break; } snake1.ChangeDirection(key); snake2.ChangeDirection1(key); if (key.Key == ConsoleKey.S) { SaveGame(this); ShowMessage("Saved", 5, 29, 25); } } while (Alive); do { ConsoleKeyInfo key = Console.ReadKey(); if (key.Key == ConsoleKey.N) { Console.Clear(); DrawGameField(); Random random = new Random(); int a = random.Next(1, Game.Width); int b = random.Next(1, Game.Height); snake1.SnakeGenerate(a, b, 3); int a1 = random.Next(1, Game.Width); int b1 = random.Next(1, Game.Height); snake2.SnakeGenerate(a1, b1, 3); snake1.NoDirection(); snake2.NoDirection(); wall.ReloadLevel(); Alive = true; break; } else if (key.Key == ConsoleKey.D) { Game game = LoadGame(); snake1 = game.snake1; snake2 = game.snake2; snakes = new List <Snake> { snake1, snake2 }; wall = game.wall; food = game.food; score1 = game.score1; score2 = game.score2; gameObjects = new List <GameObject> { snake1, snake2, wall, food }; Alive = true; CloseGame = false; startAgain = true; Console.Clear(); DrawGameField(); break; } else if (key.Key == ConsoleKey.X) { startAgain = false; CloseGame = true; break; } } while (true); } }