Нюансы алгоритма игры "Сапер" - 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;
};

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.125 из 5