2016-10-06 2 views
1

보드에는 녹색과 녹색의 10 개의 행과 10 개의 열 버튼이 있습니다. 보드는 무작위로 9 개의 붉은 색 장애물을 생성합니다. 내 질문은 녹색 색상 버튼을 사용하여 수평 및 수직 방향으로 나가는 출구에서 시작하여 녹색 색상을 흰색으로 변경하는 경로를 찾는 방법입니다. 이동 버튼을 누르면 녹색 버튼이 흰색으로 바뀝니다. 프로그램은 한 번에 하나의 경로 만 찾습니다. 예를 들어 첫 번째 경로는 (2 (10) -1)을 실행 한 다음 Go 버튼을 다시 누르면 다른 경로를 찾습니다. 녹색 버튼이 모두 흰색으로 바뀔 때까지 계속됩니다. btn 1은 항목이고 btn 100은 종료입니다. 나는 click 이벤트를 ..... 사용합니까?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; 

} 

image

+0

나는 문제의 요점이 무엇처럼 ... 코드 뒤에 논리를 이해하는 데 << (전 = 10 || 내가 == 20 || 내가 == 30 ||를 <있다면 == 40 || i == 50 || i == 60 || i == 70 || i == 80 || i == 90) i + = 1; else i ++; >> (+ = 1과 i ++ 모두 똑같이 ... ...) – Innat3

+0

경로 또는 최단 경로를 찾아야합니까? – iceDragon

+0

아마 모든 가능한 경로를 평가하고 최저 비용으로 경로를 찾는 A * 검색 알고리즘을 살펴 보는 것이 가장 좋습니다. https://en.wikipedia.org/wiki/A*_search_algorithm#Example – lhildebrandt

답변

1

당신은 100 세포에 대한 A *가 필요하지 않습니다.

내가 사용되는 알고리즘은 대략이 있었다 :

는, 0의 "종료"셀은 "거리를"지정은 "방문"에 목록 의 Foreach 셀을 "방문"에 추가로 방문하지 않은 이웃 추가 " visited "목록에서 거리 + 1을 입력하십시오. 셀이 발견되거나 새 셀을 찾을 수 없을 때까지 반복하십시오.

이 시점에서 우리는 셀 목록과 출구까지의 거리를가집니다. 엔트리 포인트가 발견되지 않았던 경우는 null를 돌려줍니다.

빈 목록 "경로"를 만들고 항목 셀을 추가하십시오. 그런 다음 입력 셀에서 시작하여 현재 셀보다 "거리"1이 작은 이웃을 찾습니다. 이 셀을 우리의 경로에 추가하고 출구를 찾을 때까지 반복하십시오.

그런 다음 최단 경로가 있습니다. 모든 최단 경로를 찾으려면 "거리"가 현재 셀보다 작은 모든 이웃을 찾고 현재 경로를 복사하거나 경로를 저장하는 목록보다 복잡한 구조를 사용하십시오.

이 알고리즘은 자바 스크립트로이 웹 페이지에 구현됩니다.

http://eastereggs.azurewebsites.net/eastereggs

+0

정말 고마워요! 나는이 프로젝트를 거의 종료했다. 나는 논리를 이해하지만 내 질문에 대한 모든 버튼을 사용하여 다른 목록 (방문 및 비공개 목록) 또는 버튼을 방문하거나 .... 안다는 걸 어떻게 알아? – zelalem

관련 문제