개요
A* 알고리즘을 2D Tile Map 환경에서 시뮬레이션해본다.
프로젝트 정보(Project Informaion)
언어는 C++11 언어를 사용했으며 API DirectX 9으로 FrameWork는 학부생 시절에 교수님께 받았던 DirectX 9 FrameWork를 기반으로 제작했다.
사진 및 프로젝트 설명
프로젝트의 화면은 다음과 같다. 화면 왼쪽에는 (15,10) 크기의 Tile이 있으며 오른쪽에는 쥐, 벽, 치즈와 Reset의 Tool 이 존재한다. 이 Tool을 이용해서 왼쪽의 Tile에 배치가 가능하다.
위와 같이 마우스로 오른쪽에 있는 Tool을 선택하고 왼쪽에 Tile 클릭을 하면 본인이 원하는 맵을 제작할 수 있다.
이렇게 Reset 버튼을 누르면 초기화되는 것도 확인할 수 있다.
이 전에 작성했던 코드에서 PIMPL을 쓰지 말자 라는 관련 글을 작성했는데 그래도 한번 정도는 PIMPL을 사용해서 진해하면 좋을 거 같아서 작성 진행을 하였다.
후기
A* 알고리즘을 적용하기 위해 필요한 기본 프레임을 제작하였다. 치즈가 꼭 한 개 있으라는 법도 없으며 쥐 또한 한 마리만 있으라는 법이 없기 때문에 여러 개 배치가 가능하게 했으며 앞으로 A*를 적용하고 휴리스틱 값에 따른 변화도 가능하면 비교해볼 예정이다.
유의사항
* x86 환경에서 작동하며 화면 크기를 기존 크기에서 변경하면 마우스 클릭 오류가 있으니 가급적 기본 크기 화면으로 테스트 바랍니다.
* 해당 프로젝트는 예외 처리를 최소한으로 했기 때문에 버그가 있을 수 있습니다.
* 최종 모습이 아니기 때문에 코드와 화면에 변경이 있을 수 있습니다.
* 만약 이 블로그 글을 보고 잘못된 점이나 참고 가능한 것 등 공부가 가능한 게 있다면 댓글이나
메일(SnowFleur0128@gmail.com)로 보내주시면 감사하겠습니다.
출처 및 소스코드 링크
git: https://github.com/SnowFleur/2020-AStar-algorithm-Simulation
관련 글
[자료구조 알고리즘/탐색 알고리즘(Search)] - [알고리즘] A* 알고리즘
[프로그래밍/Modern C++] - [C++] PIMPL을 사용하지 말자
'자료구조 알고리즘 > 탐색 알고리즘(Search)' 카테고리의 다른 글
[알고리즘] A* 치즈 찾기-PathFinding2 (0) | 2020.09.06 |
---|---|
[알고리즘] A* 치즈 찾기-PathFinding (0) | 2020.09.05 |
[알고리즘] A* 알고리즘 (0) | 2020.08.24 |
[알고리즘] 백 트래킹(Backtracking) (0) | 2020.03.31 |
[알고리즘] 다익스트라 알고리즘(Dijkstra algorithm) (0) | 2020.02.25 |