PDF문서고급프로그래밍1(11주차 자료 1) - 지뢰찾기 게임.pdf

닫기

background image

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

-  1  -

●  아래와 같이 대화상자 기반으로 프로젝트(Mine)를 생성하고,  디자인 하시오.

컨트롤

Static  Text

Button  Control

Button  Control

Button  Control

ID

IDC_STATIC

IDC_BUTTON_EASY

IDC_BUTTON_NORMAL

IDC_BUTTON_HARD

Caption

난이도 선택

초급

중급

고급

Event 

Func.

OnBnClickedButtonEasy 

(  )

OnBnClickedButtonNormal 

(  )

OnBnClickedButtonHard 

(  )

  -  L버튼 (IDC_BUTTON_EASY)  컨트롤에 대한 이벤트 핸들러 추가하기

  -  상기 다이얼로그에서 초급 버튼을 눌렀을 때 새로운 다이얼로그로 띄우기 위해 아

래와 같이 새로운 다이얼로그를 삽입(①)하고 클래스를 추가(②)하자.

      (다음 페이지에서 설명)


background image

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

-  2  -

①  새로운 다이얼로그 삽입

②  추가된 다이얼로그를 컨트롤 할 클래스 추가


background image

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

-  3  -

  -  새로 추가한 다이얼로그에 아래와 같이 디자인하자. 

    →  Button  컨트롤 추가.

    →  Static  컨트롤에 int형으로 m_nTime,  m_nMine  변수를 추가.

        (주의 변수 추가 시,  새로 만든 다이얼로그의 클래스에 추가해야 함.)

  -  메인  다이얼로그(CMineDlg)에서  초급  버튼을  클릭하였을  때  추가한  다이얼로그 

(CEasyDlg)를 띄우기 위해 아래와 같이 CMineDlg에 변수를 추가하고 코딩하자. 

    →  CMineDlg  클래스에 CEasyDlg  클래스의 Easy  변수 추가

    →  CMineDlg  헤더의 맨 윗줄에 #include  “CEasyDlg.h”  추가하기


background image

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

-  4  -

  -  아래와 같이 CMineDlg  클래스의 OnBnClickedButtonEasy(  )  함수에 새로 만든 다이얼

로그 창을 띄우자. 

현재까지의 내용을 실행해보자.

※  CEssyDlg  클래스에 변수,  함수,  메시지 추가하기.

  ●  멤버변수 추가하기

멤버 변수

내용

int  Block[10][10]

각 블럭의 상태 (0.기본상태 1.열린상태 2.깃발상태)

int  Mine[10][2]

지뢰의 위치를 저장하는 배열

int  SelectedBlock[2]

선택된 블럭을 저장하기 위한 배열

bool  IsLbtnClicked

좌클릭이 되어있는지 표시하기 위한 변수(주변 열기에 사용)

bool  IsStarted

게임이 시작되었는지 나타내기 위한 변수(타이머 설정에 사용)

  ●  멤버함수 추가하기

멤버 변수

내용

void  InitDlg(  )

초기화 함수

void  GameOver(  )

게임오버 시 실행할 함수

void  Clear(  )

게임클리어 시 실행할 함수

bool  ClearCheck(  )

게임이 클리어 되었는지 체크하는 함수

void  Open(int  x,  int  y)

블럭을 열기위한 함수

void  Flag(int  x,  int  y)

블럭에 깃발을 표시하기 위한 함수

void  OpenSurround(int  x,  int  y)

주변열기를 위한 함수

  ●  메시지 추가하기

메시지

처리기 함수

내용

WM_LBUTTONDOWN

OnLButtonDown

좌버튼 클릭

WM_LBUTTONUP

OnLButtonUp

좌버튼 놓기

WM_MBUTTONDOWN

OnMButtonDown

휠버튼 클릭

WM_RBUTTONDOWN

OnRButtonDown

우버튼 클릭

WM_TIMER

OnTimer

타이머


background image

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

-  5  -

  -  CEasyDlg  클래스에 멤버변수,  멤버함수 등이 추가된 화면  (확인용)

  -  CEasyDlg  클래스의 DoDataExchange  (확인용)

  -  CEasyDlg  클래스의 메시지 맵  (확인용)


background image

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

-  6  -

▶  초기화 함수 구현:  void  CEasyDlg::InitDlg(void)

▶  시작 버튼 함수 구현:  void  CEasyDlg::OnBnClickedButtonStart(  )

실행해보자.


background image

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

-  7  -

▶  열기 함수 구현:  void  CEasyDlg::Open(  )

다음 페이지에 이이서...


background image

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

-  8  -

▶  bool  CEasyDlg::ClearCheck(  )


background image

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

-  9  -

▶  void  CEasyDlg::Clear(  )

▶  void  CEasyDlg::GameOver(  )

▶  메시지 처리 함수 :  void  CEasyDlg::OnTimer(  )

▶  메시지 처리 함수 :  void  CEasyDlg::OnLButtonDown(  )


background image

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

-  10  -

▶  메시지 처리 함수 :  void  CEasyDlg::OnLButtonUp(  )

현재까지의 내용을 실행해보자.  (  열기 동작이 제대로 동작하는가?  )


background image

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

-  11  -

▶  깃발 표시 동작 관련 함수 구현:  void  CEasyDlg::Flag(int  x,  int  y)


background image

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

-  12  -

▶  깃발 표시 동작 관련 함수 구현:  void  CEasyDlg::OpenSurround(int  x,  int  y)

▶  메시지 처리 함수 :  void  CEasyDlg::OnMButtonDown(  )

▶  메시지 처리 함수 :  void  CEasyDlg::OnRButtonDown(  )