zelosam Ответов: 1

C# чтобы найти путь на доске


The board has 10 row and 10 Column buttons all Green color the board randomly generate 9 red color obstacle. My question is to find the path (changing the green color to white color)starting from entry to exit going horizontally and vertically using only the Green color button.Every time when i hit Go button the green button will change in to white.The program only find one path at a time. for example the first path execute on (2(10)-1) then when i hit Go button again it will find another path. This will  continue until all the green button changing in to white. btn 1 is the entry and btn 100 is the exit. i use the click event .....?


file:///C:/Users/Tesfahun/Desktop/c2.png


Что я уже пробовал:

for (int i = 1; i <= 99;)
    {
 
        string btn_name = "btn" + Convert.ToString(i+10);
        var btn_now = this.Controls.Find(btn_name, true)[0];
 
        btn_name = "btn" + Convert.ToString(i + 1);
        var btn_next = this.Controls.Find(btn_name, true)[0];
        var btn_below = btn_next;
 

 
        if (i <= 10 || i == 20 || i == 30 || i == 40 || i == 50 || i == 60 || i == 70 || i == 80 || i == 90)
        {
            btn_name = "btn" + Convert.ToString(i);
            btn_below = this.Controls.Find(btn_name, true)[0];
        }
        if(btn_next.BackColor == Color.GreenYellow) {
 
            if (i <= 10 || i == 20 || i == 30 || i == 40 || i == 50 || i == 60 || i == 70 || i == 80 || i == 90)
                i+= 1;
            else
                i++;
           btn_now = btn_next;
        }
        else {
            btn_now = btn_next;
            i+=1;                    
        }
        btn_now.BackColor = Color.White;
 
    }

1 Ответов

Рейтинг:
0

OriginalGriff

Это не очень хорошее начало!
Посмотрите на свой код - он показывает явные признаки того, что о нем не думают:

if (i <= 10 || i == 20 || i == 30 || i == 40 || i == 50 || i == 60 || i == 70 || i == 80 || i == 90)
    i+= 1;
else
    i++;
Если я вырежу условие, оно станет яснее:
if (...)
    i+= 1;
else
    i++;
Что является эквивалентом:
i++;

Использование кнопок здесь плохая идея, но я могу понять, почему вы это сделали - это "простое" решение, - но использование панели и события Paint, чтобы сделать их самостоятельно, было бы гораздо лучшим подходом.
Попробуйте что-нибудь сделать: настройте свои кнопки в виде 2-мерного массива (10 х 10) вместо того, чтобы использовать имя и номер, и вам будет легче видеть, что вы делаете. Тогда начинайте думать, а не прыгать прямо в код!