public Game() { gameObjects = new List <GameObject>(); snakes = new List <Snake>(); List <Point> snakeBody1 = new List <Point> { new Point(20, 10), new Point(20, 11), new Point(20, 12) }; List <Point> snakeBody2 = new List <Point> { new Point(30, 12), new Point(30, 13), new Point(30, 14) }; snake1 = new Snake(snakeBody1, '*', ConsoleColor.Red); snake2 = new Snake(snakeBody2, '*', ConsoleColor.Blue); food = new Food('o', ConsoleColor.Green); wall = new Wall('#', ConsoleColor.DarkYellow); while (food.Point.IsCollide(snake1.Points) || food.Point.IsCollide(wall.Points) || food.Point.IsCollide(snake2.Points)) { food.Generate(); } if (food.Point.IsCollide(snake1.Points) || food.Point.IsCollide(wall.Points) || food.Point.IsCollide(snake2.Points)) { food.Generate(); if (snake1.Points.Count % 5 == 0 || snake2.Points.Count % 5 == 0) { wall.NewLevel(); if (Point.IsCollide(snake1.Points, wall.Points) || Point.IsCollide(snake2.Points, wall.Points)) { Random random = new Random(); int a2 = random.Next(1, Game.Width); int b2 = random.Next(1, Game.Height); snake1.SnakeGenerate(a2, b2, snake1.Points.Count); snake2.SnakeGenerate(a2, b2, snake2.Points.Count); } snake1.NoDirection(); snake2.NoDirection(); } } gameObjects.Add(snake1); gameObjects.Add(snake2); gameObjects.Add(food); gameObjects.Add(wall); snakes.Add(snake1); snakes.Add(snake2); score1 = 0; score2 = 0; Alive = true; CloseGame = false; }
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); } }