PDF문서고급프로그래밍1(14주차 자료 1) - 퍼즐 게임.pdf

닫기

background image

    2020년 1학기,                          고급프로그래밍1  (14주차 수업자료 –  1)                              박 기 홍

-  1  -

※ 게임 만들기:  퍼즐 맞추기

① 프로젝트 생성

    -  다이얼로그  기반 프로젝트( 

Puzz  )를 생성하자.

② 다이얼로그 박스에 컨트롤들을 추가

컨트롤

Button  Control

Button  Control

ID

IDC_BUTT_START

IDC_BUTT_EXIT

Caption

시작

종료

Messages

BN_CLICKED

BN_CLICKED

함수이름

OnButtStart

OnButtExit

③ 그림을 리소스에 등록하기

      -  (다운로드) 

www.kihong.net/duck.zip


background image

    2020년 1학기,                          고급프로그래밍1  (14주차 수업자료 –  1)                              박 기 홍

-  2  -

④ 프로그램에 필요한 변수들을 등록하자.

변수 타입

변수명

내용

int  [3][3]

m_nPuzz

퍼즐 조각 그림이 놓이는 곳을 표시

BOOL

m_bStart

게임을 시작할지 안할지 결정하는 변수

CBitmap

m_bitPuzz

퍼즐 그림을 읽어와서 저장하는 변수

⑤ 다음의 함수들을 추가하자.

함수 타입

함수명

내용

void

InitPuzz(  )

m_nPuzz  배열을 초기화

void

DrawBmp(  )

비트맵을 다이얼로그 상자에 출력

void

DrawPuzzBmp(int  nRow,  int  nCol,  int  nNum)

조각난 비트맵으로 출력

void

DrawBack(  )

사각형을 출력하고 선을 그림

void

DrawNum(  )

조각난 비트맵에 수를 출력

void

ZeroRect(int  nZeroY,  int  nZeroX)

빈칸에 빨간색 사각을 그림

BOOL

ZeroPosition(int  nMusY,  int  nMusX, 

            int  &nZeroY,  int  &nZeroX)

마우스가 클릭된 곳의 줄에서 
–1을 차고,  찾아서 있으면 –1이 
있는 곳의 값을 nZeroY,  nZeroX 
변수에 저장함.

void

MovePuzzBmp(int  nMusY,  int  nMusX, 

      int  nZeroY,  int  nZeroX)

조각난 그림을 –1이 있는 곳으로 
옮김

BOOL

PosToIndex(CPoint  pos,  int  &nY,  int  &nX)

마우스의 좌표값을 배열의 첨자 
값으로 바꿈

void

RandPuzzBmp(  )

조각난 그림들을 섞음

BOOL

CheckPuzz(  )

조각난 그림들을 다 맞추었는지 
체크


background image

    2020년 1학기,                          고급프로그래밍1  (14주차 수업자료 –  1)                              박 기 홍

-  3  -

  -  OnInitDialog(  ),  OnPaint(  )  추가하기


background image

    2020년 1학기,                          고급프로그래밍1  (14주차 수업자료 –  1)                              박 기 홍

-  4  -

⑥ void  CPuzzDlg::InitPuzz(void)

⑦ void  CPuzzDlg::DrawBmp(void)

⑧ void  CPuzzDlg::DrawPuzzBmp(int  nRow,  int  nCol,  int  nNum)


background image

    2020년 1학기,                          고급프로그래밍1  (14주차 수업자료 –  1)                              박 기 홍

-  5  -

⑨ void  CPuzzDlg::DrawBack(void)

⑩ void  CPuzzDlg::DrawNum(void)


background image

    2020년 1학기,                          고급프로그래밍1  (14주차 수업자료 –  1)                              박 기 홍

-  6  -

⑪ void  CPuzzDlg::ZeroRect(int  nZeroY,  int  nZeroX)

⑫ BOOL  CPuzzDlg::ZeroPosition(int  nMusY,  int  nMusX,  int  &nZeroY,  int  &nZeroX)


background image

    2020년 1학기,                          고급프로그래밍1  (14주차 수업자료 –  1)                              박 기 홍

-  7  -

⑬ void  CPuzzDlg::MovePuzzBmp(int  nMusY,  int  nMusX,  int  nZeroY,  int  nZeroX)


background image

    2020년 1학기,                          고급프로그래밍1  (14주차 수업자료 –  1)                              박 기 홍

-  8  -

⑭ BOOL  CPuzzDlg::PosToIndex(CPoint  pos,  int  &  nY,  int  &  nX)

⑮ void  CPuzzDlg::RandPuzzBmp(void)


background image

    2020년 1학기,                          고급프로그래밍1  (14주차 수업자료 –  1)                              박 기 홍

-  9  -

⑯  BOOL  CPuzzDlg::CheckPuzz(void)

⑰  WM_LBUTTONDOWN  메시지 처리기 함수 추가하기


background image

    2020년 1학기,                          고급프로그래밍1  (14주차 수업자료 –  1)                              박 기 홍

-  10  -

⑱  시작 버튼과 종료 버튼  이벤트 처리기 함수 추가하기

⑲  컴파일 후 실행해보자.