퇴근5분전

 

밤에 만들어보았다.

 

A* 알고리즘 만든 소스 객체들을 재사용해서 금방 만들어졌다.

 

구글링 해도 색칠하는 알고리즘은 많이 나오는데... 길찾기 알고리즘은 설명이 거의 없다.

 

유튜브로 영상들만 있다. 영상 참고해서 대충 비스므리하게 만들어서 이게 정말 맞는건지는 모르겠지만...

 

길찾기는 잘 된다.

 

 # 단순하게 테스트.

 

 

 # 좀더 복잡하게... 맵을 만들어봤음.

 

각 Cell안에 방향을 나타내는 열거형 변수가 있어서 셀계산할때 방향을 계산하여 가지고 있게된다.

 

도착점(노란색)을 검색하면 도착점에서부터 방향을 역으로 찾아서 이동한다.

 

소스파일(숨겨짐)

 

길찾기 알고리즘 공부삼아 만들어봄.

 

https://www.redblobgames.com/pathfinding/a-star/introduction.html

https://qiao.github.io/PathFinding.js/visual/

http://itmining.tistory.com/66

http://blog.naver.com/PostView.nhn?blogId=denoil&logNo=221014139704 ( G값 계산에 대한 설명 )

 

여러 사이트 검색하다가 위 세개를 보고 몇일 파악하고 만듬.

 

 

동작은 잘되는 것은 봤는데...

 

세번째 링크 블로그에 탐색관련 설명중에...

 

3. 인접한 사각형이 이미 '열린 목록'에 있다면 해당 사각형의 비용이 더 좋은지 확인합니다. 즉,선택한 사각형과 비교하여 G점수가 어떤 것이 더 낮은지 확인 합니다. 그렇지 않으면 아무것도 하지 않습니다. 하지만 해당 사각형의 G 비용이 더 낮은 경우 인접 사각형들의 부모를 새로운 사각형으로 바꿉니다. 마지막으로, 그 사각형의 F와 G를 다시 계산합니다. 어렵다면 아래의 실제 작업 과정을 봐주세요.

출처: http://itmining.tistory.com/66 [IT 마이닝]

 

이게 뭔말인지 도저히 모르겠다. 만든걸 스탭별로 확인해봐도 ... 이전노드  대상을 가리키는 화살표라든가 재 계산된 G값이 달라 ...?

 

소스가 잘 못 만들어졌는지 테스트를 해보곤 있는데... 잘되는것 같은뎅..

 

쭉 다시 읽어보고 작업했는데 더 이상해... ( 아무리 해봐도 블로그에 있는 것처럼 안되네... )

 

 

 단, 대각선 <-- 을 지나가게 되어 있어서...

 

 

 

 

 

이렇게 대각선도 찾아간다... 흠...

 

두번째 링크에꺼로 해보면

 

요렇게 비해서 검색을 하네??

 

 

 

일단 이거 수정하고 나면 Flood Fill Path Find 라는 방법으로 해보려고 한다.

음 더 간단해보여서..?

 

소스(숨겨짐)

 

###################################################################################

드디어 고쳤다.

 

 인접한 셀(B)이 검색대상에 이미 있는 거면

현재중심셀(A)을 이용하여 인접한셀(B)의 G값을 임시로 계산해서

인접한 셀(B)의 원래 G값과 임시로 계산한 G값과 비교해서 

임시로 계산한 G값이 작으면 인접한 셀(B)의 이전노드셀을 현재중심셀(A)로 지정한다.