A* Algorithm

- Grid World 화면 출력: Grid World의 화면은 행 930, 열 850으로 고정.
- random walls 버튼을 눌러 장애물 랜덤 배치: M × N × inc obstacle ratio 갯수만큼의 장애물이 비어있는 grid cell에 새롭게 생성.
- 장애물을 사용자가 직접 배치: 클릭하여 장애물을 토글할 수 있도록 구현.
- 시작 지점과 목표 지점 마우스로 옮기기: 시작지점은 왼쪽 상단, 목표지점은 오른쪽 하단에 위치.
- A* 알고리즘 수행 후 최단거리 표시: 최단 경로를 yellow line으로 표시하고 explored nodes 개수 출력.
- 휴리스틱 함수를 바꿔서 A* 알고리즘 수행: Manhattan 거리, Euclidean 거리 선택 가능.
- 최단거리 해가 없을 때 수행: 최단 경로를 찾지 못했을 경우 메시지 출력.
- reset 버튼을 눌렀을 때: 장애물이 모두 사라진 초기 상태로 리셋.
사용 기술
- Python
- NumPy
- Heapq
- Pygame (게임 개발 및 GUI 환경)
- Pgu (GUI 라이브러리)
- A 알고리즘* (휴리스틱 함수 사용)