본문 바로가기
코스웨어/15년 스마트컨트롤러

20151119 / API_6-푸시푸시 끝/ 남수진

by 알 수 없는 사용자 2015. 11. 20.
728x90
반응형

WinAPI

  • 게임 맵에 사용되는 비트맵을 아스키코드로 대체하여 3차원 배열로 스테이지별 원본 맵을 만든다
    • 'B'  -> 박스
    • ' '   ->길
    • '@' -> 캐릭터 앞/뒤/좌/우
    • '#'  ->벽

Image

  • 배열로 만든 맵에서 캐릭터와 박스의 위치는 게임을 진행하면서 변한다
    • 원본 맵 외에 게임 중 수정할 ucMap을 만들어 복사해쓴다
    • 캐릭터의 위치인 @는 ixPos, iyPos로 나타낼 것이므로 복사하지 않고 공백으로 대체

Image

  • OnPaint에서 2중 for문을 돌면서 배경을 그린다
    • 캐릭터는 전용 좌표를 이용하여 따로 그린다

Image

  • 캐릭터를 움직일 수 있는 경우의 수
    • 움직일 경로 1칸 앞에
      • 박스(움직일 경로 2칸 앞에)

Image

  • 경우의 수를 참고하여 방향키 입력 시 캐릭터와 박스의 좌표/위치 이동을 구현한다
    • 박스 위치 이동 -> ucMap의 B 위치 교환
    • 캐릭터 위치 이동 -> ixPos와 iyPos 증감

image

image

  • OnKeydown 마지막에 Invalidate 함수를 넣어 OnPaint를 호출
    • 키 입력으로 인해 변경된 화면을 갱신
    • 두번째 인자에 새로 그릴 영역을 설정
      • 키 연속입력시 화면 깜빡임 현상을 해결

Image

  • 점수
    • 키를 누를 때 마다 Key count 증가
    • OnKeydown의 방향키 입력 case에 관련 변수 ++ 명령 추가로 구현
    • SetWindowText 함수와 wsprint 함수를 이용하여 점수와 스테이지를 윈도우 타이틀 바에 표시

Image

  • 게임 종료
    • 모든 박스가 점 위에 있을 때 다음 스테이지로
      • OnKeydown의 마지막에 이중 for문으로 ucMap의 박스 위치와 ucStateMap의 종점 위치의 일치를 세어 확인
    • 게임이 종료된 후 메시지 박스를 출력하고 다음 스테이지 시작
      • LoadMap 함수를 호출
    • 모든 스테이지가 종료되면 SendMessage로 WM_DESTROY를 발생시켜 전체 프로그램을 종료시킨다

Image

  • 실행 화면

Image[34]

Image(1)

Image(2)

728x90