電路板有10行和10列按鈕全是綠色。該板隨機產生9個紅色障礙物。我的問題是如何找到從入口到出口的路徑(將綠色更改爲白色),只使用綠色按鈕進行水平和垂直。每次當我點擊Go按鈕時,綠色按鈕都會變成白色。程序一次只能找到一條路徑。例如第一個路徑執行(2(10)-1),然後當我再次按下Go按鈕時,它會找到另一個路徑。這將繼續,直到所有的綠色按鈕變爲白色。 btn 1是條目,而btn 100是退出。我使用點擊事件.....?C#找到不同按鈕顏色之間的路徑
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;
}
我無法理解你的代碼背後的邏輯......像什麼是點<<如果(I <= 10 ||我== || 20 ==我30 ||我== 40 || i == 50 || i == 60 || i == 70 || i == 80 || i == 90) i + = 1; else i ++; >>(+ + 1和i ++都是一樣的......) – Innat3
你需要找到一條路徑或最短路徑? – iceDragon
可能最好查看A *搜索算法,該算法通過評估每條可能路徑並以最低成本找到路徑。 https://en.wikipedia.org/wiki/A*_search_algorithm#Example – lhildebrandt