Exemplo n.º 1
0
        public override void GenerateBoard(Panel panel)
        {
            GetBoard().SetPanel(panel);

            IGenerator gen  = _factory.CreateGenerator("NativeGenerator");
            int        size = 0;

            switch (GetDifficulty())
            {
            case Difficulty.Beginner:
                size      = 8;
                MineCount = 10;
                break;

            case Difficulty.Intermediate:
                size      = 16;
                MineCount = 40;
                break;

            case Difficulty.Expert:
                size      = 24;
                MineCount = 99;
                break;
            }

            // Create and filter the board
            GetBoard().MakeBoard(size);
            char[,] board = gen.GenerateBoard(size, MineCount);
            ICriteria boardFilter = new SizeChecker(board, GetDifficulty());

            boardFilter = new MinesChecker(boardFilter);
            boardFilter = new NumberChecker(boardFilter);
            board       = boardFilter.Verify();

            for (int i = 0; i < size; i++)
            {
                for (int j = 0; j < size; j++)
                {
                    Square square;
                    switch (board[i, j])
                    {
                    case 'X':
                        square = new Mine(i, j);
                        break;

                    case '0':
                        square = new EmptySquare(i, j);
                        break;

                    default:
                        square = new NumberSquare(i, j, board[i, j] - '0');
                        break;
                    }

                    GetBoard().AddSquare(square);
                    AddSquareToGame(square);
                    //square.Button.Top += panel.Top;
                    //square.Button.Left += panel.Left;
                    panel.Controls.Add(square.Button);

                    square.Subscribe(this);
                }
            }

            // Start the game
            FlagCount           = MineCount;
            MineCountField.Text = FlagCount.ToString();
            GameTimer           = new GameTimer(TimerField);
            GameTimer.Start();
        }
Exemplo n.º 2
0
 public void CheckSharedStructureSizes() => SizeChecker.CheckSharedStructureSizes();