동영상 주소 : https://youtu.be/tPGLotDs4i4

 

[구현]

메인 화면

타일, 벽 : 벡터를 통해 데이터를 저장하고 타일에 맞는 이미지 출력

 

오브젝트, 몬스터 : 벡터를 사용하여 데이터를 저장

리스트를 사용하지 않은 이유는 중간 삽입/삭제 보다 탐색 비용에 중점을 뒀다.

클라이언트로 데이터를 불러올때는 리스트로 받아들여 오브젝트 풀링을 사용할 예정이었다.

 

추가/제거 : 좌클릭을 통해 설치, 우클릭을 통해 제거

줌인/줌아웃 : 마우스 휠을 통해 배율이 설정되고 모든 객체는 해당 배율의 영향을 받도록 함

고스트효과 : 마우스 위치에 맞는 타일/오브젝트가 반투명 상태로 보여지도록 구현 

스크롤 : 맵사이즈를 체크하여 스크롤의 사이즈 설정 

 

그리드 : 타일의 크기 간격으로 구분선 출력

위치 : 정확한 해당 X와 Y좌표 출력

 

미니맵

렌더링 : 실시간으로 타일 변화에 따른 미니맵이 출력될 수 있도록 함 (타일만 나오게 설정)

이동 : 클릭을 통해 해당위치로 이동 할 수 있도록 구현.

반응형 : 창크기 변경시 크기에 맞게 그려질 수 있도록 함

 

서브 화면 (탭컨트롤)

타일/벽 : 클릭을 통해 선택이 가능하며 마우스 휠을 통해 움직일 수 있도록 구현

 

오브젝트/몬스터 : 리스트박스에서 선택하여 추가/삭제가 가능하도록 함

이동, 회전, 크기 : DirectX의 함수를 통해 이미지의 출력상태를 설정 할 수 있도록 함

 

저장/불러오기 : 기본적인 저장/불러오기를 통해 구조체를 저장/불러오기 할 수 있도록 함

 

[아쉬운 점]

MFC와 DirectX의 렌더링 방식이 달라 MFC컨트롤에서 DirectX를 사용할 경우

깜빡거리는 현상이 있었는데 해결방법을 찾지 못하여서 아쉬웠다.

창 크기 변경시 탭컨트롤 창에서 화면이 깜빡거리는 현상이 있었는데 크기설정시 Paint함수가 호출 되는 것 같다.

타일, 오브젝트, 몬스터 등의 기본 크기 설정, 오프셋, 충돌체 부착도 하지 못하여 아쉽다.

카메라를 추가하여 다양한 위치에서 볼 수 있도록 구현하고 싶었지만 시간이 부족하여 구현하지 못하였다.

 

[느낀 점]

MFC를 접하면서 VBA와 상당히 비슷하다는 느낌을 받았다.

또한 자동으로 해주는 기능들이 상당히 많기 때문에 시간절약을 상당히 할 수 있는 장점이 있지만

반대로 원하지 않던 기능들도 자동으로 해주는 단점이 있었다.

MFC의 경우 개발이 이미 끝난 언어라서 그런지 구글을 통해 기능 검색이 수월 하였다.

아마 다음 경우에는 MFC가 아닌 imgui라는 것을 통해 툴을 만들게 될 것 같다.

 

[P.S]

해당 기능을 제작하면서 백준 문제를 푼지 1년이 되었다.

매일 매일 풀면서 나태해짐을 좀 잡을 수 있는 기회가 되었던 것 같다.

가장 큰 장점은 매일 매일 기록하기 때문에 나의 코딩 스타일을 기록 할 수 있었다.

큰 변화는 변수명을 s, cnt, chk 등으로 줄여서 썻지만 몇번의 협업을 통해 개발하면서

변수명의 중요성을 깨닫고 수정하게 된 것 같다.

 

+ Recent posts