public void opennuli() { generator gen = new generator(); gen.field = new int[, ] { { 2, 3, 2, 1, 0 }, { -1, -1, -1, 1, 0 }, { 3, 4, 3, 1, 0 }, { 1, -1, 1, 0, 0 }, { 1, 1, 1, 0, 0 } }; // gen.calculate(); gen.opennuli(4, 4); Assert.AreEqual(10, gen.field[0, 4]); Assert.AreEqual(10, gen.field[3, 3]); Assert.AreEqual(10, gen.field[3, 3]); Assert.AreEqual(1, gen.field[2, 3]); Assert.AreEqual(3, gen.field[2, 2]); }
private void Btn_Click(object sender, RoutedEventArgs e) { //получение значения лежащего в Tag int n = (int)((Button)sender).Tag; //установка фона нажатой кнопки, цвета и размера шрифта ((Button)sender).Background = Brushes.MistyRose; int num = gen.getCell(n % 5, n / 5); if (num > 0) { ((Button)sender).Click -= Btn_Click; open++; ((Button)sender).Foreground = Brushes.MidnightBlue; ((Button)sender).FontSize = 23; //запись в нажатую кнопку её номера ((Button)sender).Content = num; // //посчитать число закрытых клеток без мин и если оно равно 0, сообщить о победе //---------------------------------------------------------- if (open == ((5 * 5) - mines)) { MessageBox.Show("Победа!"); sp.IsEnabled = false; } } if (num == 0) { gen.opennuli(n % 5, n / 5); Button[] buttons = new Button[sp.Children.Count]; sp.Children.CopyTo(buttons, 0); for (int i = 0; i < buttons.Length; i++) { if (gen.getCell(i % 5, i / 5) == 10) { open++; (buttons[i]).Foreground = Brushes.MidnightBlue; (buttons[i]).FontSize = 23; //запись в нажатую кнопку её номера (buttons[i]).Content = 0; (buttons[i]).Click -= Btn_Click; } } // //посчитать число закрытых клеток без мин и если оно равно 0, сообщить о победе //---------------------------------------------------------- if (open == ((5 * 5) - mines)) { MessageBox.Show("Победа!"); sp.IsEnabled = false; } } if (num == -1) { // int num; // входящая позиция от мышки //получаем массив кнопок из сетки Button[] buttons = new Button[sp.Children.Count]; sp.Children.CopyTo(buttons, 0); //перебираем все кнопки for (int i = 0; i < sp.Children.Count; i++) { //получаем координаты ячейки поля соответствующей кнопке int x = (int)(buttons[i]).Tag % 5; int y = (int)(buttons[i]).Tag / 5; //получаем значение из поля int m = gen.getCell(x, y); //если там мина if (m == -1) { StackPanel minePnl; //создание и инициализация переменной для хранения изображения мины Image img = new Image(); //загрузка изображения mine.jpg из папки imgs img.Source = mine; //инициализация и установка ориентации, можно вызвать в методе инициализации формы minePnl = new StackPanel(); minePnl.Orientation = Orientation.Horizontal; //установка толщины границы объекта minePnl.Margin = new Thickness(1); //добавление в объект изображения minePnl.Children.Add(img); buttons[i].Content = minePnl; } //bool success = minesCheck(); } sp.IsEnabled = false; } }