8월, 2018의 게시물 표시

심화반 예제 (팩맨)

이미지
1980년 5월 일본의 남코라는 회사에서 만든 팩맨 게임을 C++을 이용해 만든 예제입니다. 심화반 고등학생이 정한 주제를 저도 함께 만들어 보았으며, 생각보다 좀 어려웠습니다. 기억나는 몇 가지 어려웠던 부분은, 맵의 크기를 너무 작게 설정하면, 팩맨과 적군의 움직임을 부드럽게 표현하기 어려워, 개발 도중 배경맵의 크기를 키운점. 적군이 팩맨을 추격하는 간단한 인공지능 만들기. 적군이 팩맨에게 죽었을때 적군아지트로 이동시키기 위해 경로 탐색알고리즘이 필요했던 부분 등. 개발 과정을 요약해 정리해 보겠습니다. 1. 배경 맵을 2차원 배열로 만들어 각 셀 별로 상태를 저장 (빈곳, 벽, 먹이가 있는 곳 등) 2. 그래픽을 처리하기 위해 각 셀의 좌표를 모두 저장 (팩맨, 벽, 빈공간, 적군, 먹이, 등을 그리기 위함) 3. 적군과 팩맨을 위한 부모 클래스 생성(추상화 클래스) 4. 적군, 팩맨 자식 클래스를 상속을 통해 구현 (자신의 좌표, 팩맨의 공격모드 인지 저장 등) 5. 게임 시작시 팩맨과 적군을 배치하고 남는 공간에 먹이를 배치 6. 팩맨의 이동을 키보드 이벤트를 통해 처리 (현재 위치의 좌표에서 다음 이동방향으로 이동가능한지 판단 후, 벽이아니라면 좌표이동 등) 7. 적군의 이동을 만들어 내기 위한 2가지 알고리즘 생성 (확율에 기반한 팩맨 쫓아가기, 적군이 아지트에 있는 경우는 아지트 탈출하기) 8. 팩맨과 적군의 접촉 감지 (팩맨은 큰 먹이를 먹으면 적군을 잡아먹을 수 있으므로 상황에 맞

이 블로그의 인기 게시물

Qt Designer 설치하기

C++ 예제 (소켓 서버, 이미지, 파일전송)