Example #1
0
        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;
        }
Example #2
0
        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);
            }
        }