private void ShowBlock(Label label, CellBlock cellBlock) { label.Image = null; label.Text = cellBlock.NumMine == 0 ? "" : cellBlock.NumMine.ToString(); string[] loc = label.Tag.ToString().Split('-'); int X = int.Parse(loc[0]); int Y = int.Parse(loc[1]); cellBlock.BlockType = BlockType.Open; switch (cellBlock.NumMine) { case 0: ShowEmptyBlock(X, Y); break; case 1: label.ForeColor = Color.Blue; break; case 2: label.ForeColor = Color.DarkGreen; break; case 3: label.ForeColor = Color.Red; break; case 4: label.ForeColor = Color.DarkBlue; break; case 5: label.ForeColor = Color.DarkRed; break; case 6: label.ForeColor = Color.BlueViolet; break; case -1: label.Text = ""; label.Image = Resources.clanbomber; break; } }
private void CreatValueBoard() { for (int i = 0; i < NumCol; i++) { for (int j = 0; j < NumRow; j++) { mainBoard[i, j] = new CellBlock { NumMine = 0, BlockType = BlockType.None }; } } int numMine = 0; while (numMine < MineNumber) { int randX = rand.Next(0, NumCol - 1); int randY = rand.Next(0, NumRow - 1); if (mainBoard[randX, randY].NumMine != -1) { mainBoard[randX, randY].NumMine = -1; numMine++; } } for (int i = 0; i < NumCol; i++) { for (int j = 0; j < NumRow; j++) { //Nếu ô đó có boom if (mainBoard[i, j].NumMine == -1) { //Tất cả vị trí trừ vòng ngoài if (i > 0 && j > 0 && i < NumCol - 1 && j < NumRow - 1) { SetNumberNear(i - 1, j - 1); SetNumberNear(i, j - 1); SetNumberNear(i + 1, j - 1); SetNumberNear(i - 1, j); SetNumberNear(i - 1, j + 1); SetNumberNear(i, j + 1); SetNumberNear(i + 1, j + 1); SetNumberNear(i + 1, j); } //Tất cả vị trí sát mép trên if (i == 0 && j > 0) { if (j < NumRow - 1) { SetNumberNear(i, j + 1); SetNumberNear(i + 1, j + 1); } //Bao gồm góc trên bên phải SetNumberNear(i, j - 1); SetNumberNear(i + 1, j - 1); SetNumberNear(i + 1, j); } //Tất cả vị trí sát mép dưới if (i == NumCol - 1 && j > 0) { if (j < NumRow - 1) { SetNumberNear(i - 1, j + 1); SetNumberNear(i, j + 1); } //Bao gồm góc dưới bên phải SetNumberNear(i - 1, j - 1); SetNumberNear(i - 1, j); if (j != NumRow - 1) { SetNumberNear(i, j - 1); } } //Tất cả vị trí sát mép bên trái if (i > 0 && j == 0) { if (i < NumCol - 1) { SetNumberNear(i + 1, j + 1); SetNumberNear(i + 1, j); } //Bao gồm góc dưới bên trái SetNumberNear(i - 1, j); SetNumberNear(i - 1, j + 1); SetNumberNear(i, j + 1); } //Tất cả vị trí sát mép bên phải trừ góc if (i > 0 && j == NumRow - 1) { if (i < NumCol - 1) { SetNumberNear(i + 1, j - 1); SetNumberNear(i + 1, j); } if (i != NumCol - 1) { SetNumberNear(i - 1, j - 1); SetNumberNear(i - 1, j); } SetNumberNear(i, j - 1); } //Góc trên cùng bên trái if (i == 0 && j == 0) { SetNumberNear(i, j + 1); SetNumberNear(i + 1, j + 1); SetNumberNear(i + 1, j); } } } } }