private void OpenMine(MineButton b) { int i = b.X; int j = b.Y; b.IsOpen = 1; b.Enabled = false; OpenNum++; if (b.Tip == 0) { b.Text = ""; if (j - 1 >= 0) { if (button[i, j - 1].IsOpen == 0) { OpenMine(button[i, j - 1]); } } if (i + 1 < Hang) { if (button[i + 1, j].IsOpen == 0) { OpenMine(button[i + 1, j]); } } if (j + 1 < Lie) { if (button[i, j + 1].IsOpen == 0) { OpenMine(button[i, j + 1]); } } if (i - 1 >= 0) { if (button[i - 1, j].IsOpen == 0) { OpenMine(button[i - 1, j]); } } } else { b.Text = b.Tip.ToString(); } }
private void InitMine() { for (int i = 0; i < Hang; i++){ for (int j = 0; j < Lie; j++) { button[i, j] = new MineButton(); button[i, j].Location = new Point(5 + i * 30, 10 + j * 30); button[i, j].X = i; button[i, j].Y = j; button[i, j].IsOpen = 0; button[i, j].IsMine = 0; groupBox1.Controls.Add(button[i, j]); button[i, j].MouseDown += new MouseEventHandler(bt_MouseDown); } } Random rd = new Random(); for (int i = 0; i < TotalMine; i++) { int p1 = rd.Next(0, Hang); int p2 = rd.Next(0, Lie); if (button[p1, p2].IsMine == 1) { i--; continue; } button[p1, p2].IsMine = 1; } for (int i = 0; i < Hang; i++) { for (int j = 0; j < Lie; j++) { if (button[i, j].IsMine == 1) { if (i - 1 >= 0 && j - 1 >= 0) { button[i - 1, j - 1].Tip++; } if (i - 1 >= 0) { button[i - 1, j].Tip++; } if (i - 1 >= 0 && j + 1 < Lie) { button[i - 1, j + 1].Tip++; } if (j - 1 >= 0) { button[i, j - 1].Tip++; } if (j + 1 < Lie) { button[i, j + 1].Tip++; } if (i + 1 < Hang && j - 1 >= 0) { button[i + 1, j - 1].Tip++; } if (i + 1 < Hang) { button[i + 1, j].Tip++; } if (i + 1 < Hang && j + 1 < Lie) { button[i + 1, j + 1].Tip++; } } } } }