Beispiel #1
0
 // check is selected direction is valid
 public bool IsValidPath(GameArea gameArea, Matrix3x3 matrix3X3)
 {
     if (PressedKey == ConsoleKey.DownArrow)
     {
         if (matrix3X3.Matrix[1, 2] == gameArea.Empty || matrix3X3.Matrix[1, 2] == gameArea.Candy)
         {
             return(true);
         }
         return(false);
     }
     else if (PressedKey == ConsoleKey.UpArrow)
     {
         if (matrix3X3.Matrix[1, 0] == gameArea.Empty || matrix3X3.Matrix[1, 0] == gameArea.Candy)
         {
             return(true);
         }
         return(false);
     }
     else if (PressedKey == ConsoleKey.LeftArrow)
     {
         if (matrix3X3.Matrix[0, 1] == gameArea.Empty || matrix3X3.Matrix[0, 1] == gameArea.Candy)
         {
             return(true);
         }
         return(false);
     }
     else
     {
         if (matrix3X3.Matrix[2, 1] == gameArea.Empty || matrix3X3.Matrix[2, 1] == gameArea.Candy)
         {
             return(true);
         }
         return(false);
     }
 }
Beispiel #2
0
 //move tail part to last body part position
 private void MoveTail(GameArea gameArea, int tailX, int tailY)
 {
     // if body part is down from tail, move tail part there
     if (gameArea.Matrix[tailX, tailY + 1] == gameArea.SnakeBody)
     {
         gameArea.Matrix[tailX, tailY]     = gameArea.Empty;
         gameArea.Matrix[tailX, tailY + 1] = gameArea.SnakeTail;
     }
     // if body part is up
     else if (gameArea.Matrix[tailX, tailY - 1] == gameArea.SnakeBody)
     {
         gameArea.Matrix[tailX, tailY]     = gameArea.Empty;
         gameArea.Matrix[tailX, tailY - 1] = gameArea.SnakeTail;
     }
     // if body part is left
     else if (gameArea.Matrix[tailX - 1, tailY] == gameArea.SnakeBody)
     {
         gameArea.Matrix[tailX, tailY]     = gameArea.Empty;
         gameArea.Matrix[tailX - 1, tailY] = gameArea.SnakeTail;
     }
     // if body part is right
     else if (gameArea.Matrix[tailX + 1, tailY] == gameArea.SnakeBody)
     {
         gameArea.Matrix[tailX, tailY]     = gameArea.Empty;
         gameArea.Matrix[tailX + 1, tailY] = gameArea.SnakeTail;
     }
 }
Beispiel #3
0
        static void Main(string[] args)
        {
            // init setup console and game area
            GameArea gameArea = new GameArea(15, 15);

            gameArea.SetConsoleSize();
            bool      gameOver  = false;
            Matrix3x3 matrix3x3 = new Matrix3x3();
            Movement  movement  = new Movement(matrix3x3);

            while (!gameOver)
            {
                gameArea.ShowMatrix();
                gameArea.UpdateSnakeLocation();

                // check area around snake's head
                matrix3x3.GetNeighbors(gameArea, gameArea.SnakeHeadLocation.Item1, gameArea.SnakeHeadLocation.Item2);

                // move snake
                movement.ReadPressedKey(1000);
                if (!movement.IsValidPath(gameArea, matrix3x3))
                {
                    gameOver = true;
                    break;
                }
                movement.Move(gameArea, matrix3x3);
            }
            Console.WriteLine("Game over");
            Console.WriteLine("Score: " + gameArea.Score);
            Console.ReadLine();
        }
Beispiel #4
0
 // check if candy is on target location
 private bool IsValidPathCandy(GameArea gameArea, int x, int y)
 {
     if (gameArea.Matrix[x, y] == gameArea.Candy)
     {
         gameArea.Score += 1;
         if (gameArea.speedMs >= 100)
         {
             gameArea.speedMs -= 50;
         }
         return(true);
     }
     return(false);
 }
Beispiel #5
0
 // return matrix of neighbors (3x3)
 // borders (walls) = "[]", "empty" are returned as in gameArea.matrix
 public void GetNeighbors(GameArea gameArea, int x, int y)
 {
     string[,] neighbors = new string[3, 3];
     for (int NX = 0; NX < 3; NX++)
     {
         for (int NY = 0; NY < 3; NY++)
         {
             if ((NX == 0 && x == 0) || (NX == 2 && x == gameArea.LenX - 1))
             {
                 neighbors[NX, NY] = gameArea.Wall;
             }
             else if ((NY == 0 && y == 0) || (NY == 2 && y == gameArea.LenY - 1))
             {
                 neighbors[NX, NY] = gameArea.Wall;
             }
             else
             {
                 neighbors[NX, NY] = gameArea.Matrix[x + NX - 1, y + NY - 1];
             }
         }
     }
     this.Matrix = neighbors;
 }
Beispiel #6
0
        // move whole gameArea matrix
        public void Move(GameArea gameArea, Matrix3x3 matrix3x3)
        {
            int headX = gameArea.SnakeHeadLocation.Item1;
            int headY = gameArea.SnakeHeadLocation.Item2;
            int tailX = gameArea.SnakeTailLocation.Item1;
            int tailY = gameArea.SnakeTailLocation.Item2;

            //if down arrow
            if (PressedKey == ConsoleKey.DownArrow)
            {
                if (IsValidPathCandy(gameArea, headX, headY + 1))
                {
                    gameArea.CreateCandy();
                }
                else
                {
                    MoveTail(gameArea, tailX, tailY);
                }
                // move head and change old head position to body
                gameArea.Matrix[headX, headY + 1] = gameArea.SnakeHead;
                gameArea.Matrix[headX, headY]     = gameArea.SnakeBody;
            }
            //if up arrow
            if (PressedKey == ConsoleKey.UpArrow)
            {
                if (IsValidPathCandy(gameArea, headX, headY - 1))
                {
                    gameArea.CreateCandy();
                }
                else
                {
                    MoveTail(gameArea, tailX, tailY);
                }
                gameArea.Matrix[headX, headY - 1] = gameArea.SnakeHead;
                gameArea.Matrix[headX, headY]     = gameArea.SnakeBody;
            }
            //if left arrow
            if (PressedKey == ConsoleKey.LeftArrow)
            {
                if (IsValidPathCandy(gameArea, headX - 1, headY))
                {
                    gameArea.CreateCandy();
                }
                else
                {
                    MoveTail(gameArea, tailX, tailY);
                }
                gameArea.Matrix[headX - 1, headY] = gameArea.SnakeHead;
                gameArea.Matrix[headX, headY]     = gameArea.SnakeBody;
            }
            //if right arrow
            if (PressedKey == ConsoleKey.RightArrow)
            {
                if (IsValidPathCandy(gameArea, headX + 1, headY))
                {
                    gameArea.CreateCandy();
                }
                else
                {
                    MoveTail(gameArea, tailX, tailY);
                }
                gameArea.Matrix[headX + 1, headY] = gameArea.SnakeHead;
                gameArea.Matrix[headX, headY]     = gameArea.SnakeBody;
            }
        }