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]; }
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); }