728x90
반응형
WinAPI
- 게임 맵에 사용되는 비트맵을 아스키코드로 대체하여 3차원 배열로 스테이지별 원본 맵을 만든다
- 'B' -> 박스
- ' ' ->길
- '@' -> 캐릭터 앞/뒤/좌/우
- '#' ->벽
- 배열로 만든 맵에서 캐릭터와 박스의 위치는 게임을 진행하면서 변한다
- 원본 맵 외에 게임 중 수정할 ucMap을 만들어 복사해쓴다
- 캐릭터의 위치인 @는 ixPos, iyPos로 나타낼 것이므로 복사하지 않고 공백으로 대체
- OnPaint에서 2중 for문을 돌면서 배경을 그린다
- 캐릭터는 전용 좌표를 이용하여 따로 그린다
- 캐릭터를 움직일 수 있는 경우의 수
- 움직일 경로 1칸 앞에
- 길
- 점
- 박스(움직일 경로 2칸 앞에)
- 길
- 점
- 움직일 경로 1칸 앞에
- 경우의 수를 참고하여 방향키 입력 시 캐릭터와 박스의 좌표/위치 이동을 구현한다
- 박스 위치 이동 -> ucMap의 B 위치 교환
- 캐릭터 위치 이동 -> ixPos와 iyPos 증감
- OnKeydown 마지막에 Invalidate 함수를 넣어 OnPaint를 호출
- 키 입력으로 인해 변경된 화면을 갱신
- 두번째 인자에 새로 그릴 영역을 설정
- 키 연속입력시 화면 깜빡임 현상을 해결
- 점수
- 키를 누를 때 마다 Key count 증가
- OnKeydown의 방향키 입력 case에 관련 변수 ++ 명령 추가로 구현
- SetWindowText 함수와 wsprint 함수를 이용하여 점수와 스테이지를 윈도우 타이틀 바에 표시
- 게임 종료
- 모든 박스가 점 위에 있을 때 다음 스테이지로
- OnKeydown의 마지막에 이중 for문으로 ucMap의 박스 위치와 ucStateMap의 종점 위치의 일치를 세어 확인
- 게임이 종료된 후 메시지 박스를 출력하고 다음 스테이지 시작
- LoadMap 함수를 호출
- 모든 스테이지가 종료되면 SendMessage로 WM_DESTROY를 발생시켜 전체 프로그램을 종료시킨다
- 모든 박스가 점 위에 있을 때 다음 스테이지로
- 실행 화면
728x90
'코스웨어 > 15년 스마트컨트롤러' 카테고리의 다른 글
김태현 WinAPI 6일차 업그레이드 전 (4) | 2015.11.20 |
---|---|
20151118 - WinAPI 일지 엄민웅 (게임 만들기 경우의 수 생각하기) (작성중) (5) | 2015.11.20 |
20151119 임현수 업무일지 WIN32API #6 게임 푸시푸시 구현 (4) | 2015.11.20 |
20151119_안향진_API_6 (5) | 2015.11.20 |
20151119- 강동조 개인업무일지 PushPush (5) | 2015.11.19 |
2015.11.19_개인업무일지_[Win32API #6]_이량경_매핑,밀기,점수 (3) | 2015.11.19 |
20151119 - 홍준모 (게임 만들기) 6일 차 (4) | 2015.11.19 |
20151119_박서연_일일업무일지_WinAPI(6) (4) | 2015.11.19 |