Нюансы алгоритма игры "Сапер" - C#
Формулировка задачи:
Опять про сапер...
Когда играешь в виндовый сапер то при нажатии на пустую клеточку все рядом пустые клеточки и клеточки с цифрами (но не минами) открываются...
Как это можно реализовать??
У меня пока что только получилось реализовать по горизонтали вертикали (можно еще и по диагоналям) но как я понял в этом смысла нету так как все равно при любом раскладе такой код не откроет все эти клеточки...
for (int ss = 0; ss < pole.GetLength(0); ss++) {//Расскрашиваю пустые кнопы серым цветом по вертикали if (i - ss >= 0 && pole[i - ss, j] == 0) { Buttons[i - ss, j].BackColor = Color.Silver;//фон кнопы серый Buttons[i, j].Text = " "; } else { break; }; } for (int ss = 0; ss < pole.GetLength(0) ; ss++) {//Расскрашиваю пустые кнопы серым цветом по вертикали if (i + ss < pole.GetLength(0) && pole[i + ss, j] == 0) { Buttons[i + ss, j].BackColor = Color.Silver;//фон кнопы серый Buttons[i, j].Text = " "; } else { break; }; } for (int ss = 0; ss < pole.GetLength(1); ss++) {//Расскрашиваю пустые кнопы серым цветом по горизонтали if (j - ss >= 0 && pole[i, j - ss] == 0) { Buttons[i, j - ss].BackColor = Color.Silver;//фон кнопы серый Buttons[i, j].Text = " "; } else { break; }; } for (int ss = 0; ss < pole.GetLength(0); ss++) {//Расскрашиваю пустые кнопы серым цветом по вертикали if (j + ss < pole.GetLength(1) && pole[i, j + ss] == 0) { Buttons[i, j + ss].BackColor = Color.Silver;//фон кнопы серый Buttons[i, j].Text = " "; } else { break; }; } for (int ss = 0; ss < pole.GetLength(0); ss++) {//Расскрашиваю пустые кнопы серым цветом по диагонили if (j + ss < pole.GetLength(1) && i + ss < pole.GetLength(1) && pole[i+ss, j + ss] == 0) { Buttons[i+ss, j + ss].BackColor = Color.Silver;//фон кнопы серый Buttons[i, j].Text = " "; } else { break; }; } for (int ss = 0; ss < pole.GetLength(0); ss++) {//Расскрашиваю пустые кнопы серым цветом по диагонили if (j - ss >= 0 && i - ss>=0 && pole[i - ss, j - ss] == 0) { Buttons[i - ss, j - ss].BackColor = Color.Silver;//фон кнопы серый Buttons[i, j].Text = " "; } else { break; }; }
Решение задачи: «Нюансы алгоритма игры "Сапер"»
textual
Листинг программы
if (pole[i, j] == -1) { MessageBox.Show("Мина!!!"); this.Controls.Clear(); this.OnLoad(new EventArgs()); return; };
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д