コード例 #1
0
        public Board(Difficulty difficulty)
        {
            Instance = this;

            Difficulty = difficulty;
            BoardScale = Difficulty.Hard.GridSize().X / difficulty.GridSize().X;

            Tiles = new Tile[Difficulty.GridSize().X, Difficulty.GridSize().Y];
        }
コード例 #2
0
        private Tile[,] GenerateTiles(Point? mousePos = null)
        {
            var random = new Random();

            var tiles = new Tile[Difficulty.GridSize().X, Difficulty.GridSize().Y];

            // Place mines
            int numMines = Difficulty.GridSize().X *Difficulty.GridSize().Y / 6;

            int[,] mineInfo = new int[Difficulty.GridSize().X, Difficulty.GridSize().Y];
            for (int i = 0; i < numMines; i++)
            {
                int x, y;
                do
                {
                    x = random.Next() % Difficulty.GridSize().X;
                    y = random.Next() % Difficulty.GridSize().X;
                } while (tiles[x, y].Mine || new Point(x, y) == mousePos);

                for (int x2 = -1; x2 < 2; x2++)
                {
                    for (int y2 = -1; y2 < 2; y2++)
                    {
                        if (x2 == 0 && y2 == 0)
                        {
                            mineInfo[x, y] = -numMines;
                        }
                        else
                        {
                            mineInfo[x, y]++;
                            tiles[x, y].Mine = mineInfo[x, y] < 0;
                        }
                    }
                }
            }

            return(tiles);
        }