Win32 API 포트폴리오
이스 1 모작
* 작업환경 : C++, Win32 API, Visual Studio 2019
* 작업기간 : 2주
* 사용한 STL
> vector
스테이지 초기화 시, 그 스테이지에서 쓰이는 모든 오브젝트를 미리 할당해 두고 vector로 관리
오브젝트가 죽었는지 살았는지(bDead) 플래그를 두어, 이 오브젝트가 쓰이는지 안 쓰이는지를 구별
그릴지 말지(bDraw) 플래그를 두어, Render() 할지 말지를 결정
> map
비트맵들을 관리할 컨테이너로 사용
파일 이름(const TCHAR*)을 Key로, 비트맵 데이터를(CBitmap*) Value로 사용
> list
오브젝트를 그리는 순서를 결정하기 위해 사용 (Y소팅)
* 사용한 디자인 패턴
> 싱글톤 & 중재자 패턴
특정 로직을 도맡아 처리할 처리할 매니저 클래스들을 구현
프로그램 실행 중 하나만 존재하길 보장하기 위해 싱글톤 사용
오브젝트 관리 ObmMgr
Key 값 및 입력 상태 체크 KeyMgr
비트맵 관리 BitmapMgr
Scene 관리 SceneMgr
상하좌우 스크롤 값 관리 ScrollMgr
사운드 관리 SoundMgr
> FSM
Player (IDLE, DASH, WALK * 8방향)
Stage (S1_FIELD1, S1_FIELD2, S1_FIELD3, .... )
Scene (LOGO, TITLE, STAGE1, ENDING, ... )
중 하나의 상태 값을 갖도록 구현.
특정 조건 만족 시 ChangeState() 등으로 상태 값을 변경
* 어려웠던 점
> 충돌 체크 및 처리
유효한 공격인지, 튕기는 공격인지, 데미지를 받는건지 등 상황에 맞는 '자연스러운' 처리를 하는데 시간을 많이 잡아먹었다.
> 자연스럽게 튕기는 것 처럼 보이게 하는 연출
결론은 하드코딩