Ejemplo n.º 1
0
        public static void GameControls(SnakeModel snake)
        {
            var input = Console.ReadKey().Key;

            switch (input)
            {
            case ConsoleKey.DownArrow:
                snake.Body.First().Direction = ConsoleKey.DownArrow;
                break;

            case ConsoleKey.UpArrow:
                snake.Body.First().Direction = ConsoleKey.UpArrow;

                break;

            case ConsoleKey.LeftArrow:
                snake.Body.First().Direction = ConsoleKey.LeftArrow;

                break;

            case ConsoleKey.RightArrow:
                snake.Body.First().Direction = ConsoleKey.RightArrow;
                break;
            }
        }
Ejemplo n.º 2
0
        public static void GameMovement(SnakeModel snake, int gameSpeed)
        {
            snake.Body.First().prevY = snake.Body.First().Y;
            snake.Body.First().prevX = snake.Body.First().X;

            switch (snake.Body.First().Direction)
            {
            case ConsoleKey.DownArrow:
                snake.Body.First().Y = snake.Body.First().Y + 1;
                break;

            case ConsoleKey.RightArrow:
                snake.Body.First().X = snake.Body.First().X + 1;
                break;

            case ConsoleKey.UpArrow:
                snake.Body.First().Y = snake.Body.First().Y - 1;
                break;

            case ConsoleKey.LeftArrow:
                snake.Body.First().X = snake.Body.First().X - 1;
                break;
            }

            for (int i = 1; i <= snake.Body.Count() - 1; i++)
            {
                snake.Body[i].prevX = snake.Body[i].X;
                snake.Body[i].prevY = snake.Body[i].Y;
                snake.Body[i].X     = snake.Body[i - 1].prevX;
                snake.Body[i].Y     = snake.Body[i - 1].prevY;
            }

            Thread.Sleep(gameSpeed);
        }
Ejemplo n.º 3
0
        public static void Start(string[,] gameField, int gameSpeed,
                                 ConsoleColor snakeHeadColor, ConsoleColor snakeBodyColor,
                                 ConsoleColor fieldColor, ConsoleColor pointColor)
        {
            Random random = new Random();

            SnakeModel snake = new SnakeModel();

            SnakeGamePoints point = new SnakeGamePoints();

            point.X = random.Next(1, gameField.GetLength(1) - 1);
            point.Y = random.Next(1, gameField.GetLength(1) - 1);

            snake.Body.Add(new SnakeModelBodyPart());

            Console.SetCursorPosition(point.X, point.Y);


            while (Console.CursorLeft != gameField.GetLength(1) - 1 &&
                   Console.CursorTop != gameField.GetLength(1) - 1 &&
                   Console.CursorLeft != -1 &&
                   Console.CursorTop != -1)
            {
                Task.Run(() => SnakeGameLogic.GameControls(snake));

                SnakeGameLogic.GameMovement(snake, gameSpeed);

                Console.ResetColor();
                Console.Clear();

                SnakeGameField.Draw(gameField, fieldColor);

                Console.SetCursorPosition(point.X, point.Y);
                Console.BackgroundColor = pointColor;
                Console.WriteLine(point.Fragment, Console.BackgroundColor);

                foreach (var piece in snake.Body)
                {
                    Console.SetCursorPosition(piece.X, piece.Y);
                    if (piece.X == snake.Body.First().X&& piece.Y == snake.Body.First().Y)
                    {
                        Console.BackgroundColor = snakeHeadColor;
                    }
                    else
                    {
                        Console.BackgroundColor = snakeBodyColor;
                    }
                    Console.WriteLine(piece.Fragment, Console.BackgroundColor);
                }
                Console.ResetColor();
                Console.SetCursorPosition(snake.Body.First().X, snake.Body.First().Y);

                if (snake.Body.First().X == point.X && snake.Body.First().Y == point.Y)
                {
                    point.X = random.Next(1, gameField.GetLength(1) - 1);
                    point.Y = random.Next(1, gameField.GetLength(1) - 1);
                    snake.Body.Add(new SnakeModelBodyPart());
                }

                for (int i = 1; i <= snake.Body.Count() - 1; i++)
                {
                    if (Console.CursorLeft == snake.Body[i].prevX && Console.CursorTop == snake.Body[i].prevY)
                    {
                        Console.Clear();
                        Console.WriteLine("Game over");
                        break;
                    }
                }

                if (Console.CursorLeft == gameField.GetLength(1) - 1 ||
                    Console.CursorTop == gameField.GetLength(1) - 1 ||
                    Console.CursorLeft == 0 ||
                    Console.CursorTop == 0)
                {
                    Console.ResetColor();
                    Console.Clear();
                    Console.WriteLine("Game over");
                    break;
                }
            }
        }