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
③ 그림을 리소스에 등록하기
- (다운로드)
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( )
조각난 그림들을 다 맞추었는지
체크
2020년 1학기, 고급프로그래밍1 (14주차 수업자료 – 1) 박 기 홍
- 3 -
- OnInitDialog( ), OnPaint( ) 추가하기
2020년 1학기, 고급프로그래밍1 (14주차 수업자료 – 1) 박 기 홍
- 4 -
⑥ void CPuzzDlg::InitPuzz(void)
⑦ void CPuzzDlg::DrawBmp(void)
⑧ void CPuzzDlg::DrawPuzzBmp(int nRow, int nCol, int nNum)
2020년 1학기, 고급프로그래밍1 (14주차 수업자료 – 1) 박 기 홍
- 5 -
⑨ void CPuzzDlg::DrawBack(void)
⑩ void CPuzzDlg::DrawNum(void)
2020년 1학기, 고급프로그래밍1 (14주차 수업자료 – 1) 박 기 홍
- 6 -
⑪ void CPuzzDlg::ZeroRect(int nZeroY, int nZeroX)
⑫ BOOL CPuzzDlg::ZeroPosition(int nMusY, int nMusX, int &nZeroY, int &nZeroX)
2020년 1학기, 고급프로그래밍1 (14주차 수업자료 – 1) 박 기 홍
- 7 -
⑬ void CPuzzDlg::MovePuzzBmp(int nMusY, int nMusX, int nZeroY, int nZeroX)
2020년 1학기, 고급프로그래밍1 (14주차 수업자료 – 1) 박 기 홍
- 8 -
⑭ BOOL CPuzzDlg::PosToIndex(CPoint pos, int & nY, int & nX)
⑮ void CPuzzDlg::RandPuzzBmp(void)
2020년 1학기, 고급프로그래밍1 (14주차 수업자료 – 1) 박 기 홍
- 9 -
⑯ BOOL CPuzzDlg::CheckPuzz(void)
⑰ WM_LBUTTONDOWN 메시지 처리기 함수 추가하기
2020년 1학기, 고급프로그래밍1 (14주차 수업자료 – 1) 박 기 홍
- 10 -
⑱ 시작 버튼과 종료 버튼 이벤트 처리기 함수 추가하기
⑲ 컴파일 후 실행해보자.