Пример #1
0
        public void GameAction(ConsoleKey keypressed)
        {
            RecolourTile(Minefield[HorizontalPosition, VerticalPosition].NormalColour, HorizontalPosition, VerticalPosition, Minefield);
            if (Minefield[HorizontalPosition, VerticalPosition].Flag == true)
                RecolourTile(FlagColour, HorizontalPosition, VerticalPosition, Minefield);
            switch (keypressed)
            {
                case ConsoleKey.UpArrow:
                    if (VerticalPosition != 0)
                        VerticalPosition = -1;
                    RecolourTile(HighlightColour, HorizontalPosition, VerticalPosition, Minefield);
                    break;
                case ConsoleKey.DownArrow:
                    if (VerticalPosition + 1 != VerticalTiles)
                        VerticalPosition = 1;
                    RecolourTile(HighlightColour, HorizontalPosition, VerticalPosition, Minefield);
                    break;
                case ConsoleKey.LeftArrow:
                    if (HorizontalPosition != 0)
                        HorizontalPosition = -1;
                    RecolourTile(HighlightColour, HorizontalPosition, VerticalPosition, Minefield);
                    break;
                case ConsoleKey.RightArrow:
                    if (HorizontalPosition + 1 != HorizontalTiles)
                        HorizontalPosition = 1;
                    RecolourTile(HighlightColour, HorizontalPosition, VerticalPosition, Minefield);
                    break;
                case ConsoleKey.Spacebar:
                    if (Minefield[HorizontalPosition, VerticalPosition].Flag == false)
                    {
                        Minefield[HorizontalPosition, VerticalPosition].FlagTile();
                        RecolourTile(FlagColour, HorizontalPosition, VerticalPosition, Minefield);
                    }
                    else
                    {
                        Minefield[HorizontalPosition, VerticalPosition].UnflagTile();
                        RecolourTile(HighlightColour, HorizontalPosition, VerticalPosition, Minefield);
                    }
                    break;
                case ConsoleKey.Enter:
                    Tile thisTile = Minefield[HorizontalPosition, VerticalPosition];
                    if (thisTile.Flag == true)
                    { }
                    else if (thisTile.Mine == true)
                    {
                        Console.WriteLine("You lost, gg");
                        GameFinished = true;
                    }
                    else
                    {
                        thisTile.UncoverTile(CoverColour, CoverSecondaryColour, UncoverColour, UncoverSecondaryColour, HorizontalPosition, VerticalPosition, Minefield, this);
                        RecolourTile(HighlightColour, HorizontalPosition, VerticalPosition, Minefield);

                    }
                    break;
                case ConsoleKey.H:
                    Hint();
                    break;
            }
        }