PDF문서고급프로그래밍1(10주차 자료 1) - 오목 게임.pdf

닫기

background image

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

-  1  -

※ 게임 만들기 (오목 게임

    -  참고:  비주얼 C++  MFC  쉽게 따라하기,  세진북스 MFC  연구회,  세진북스,  2011

    -  규칙 1:  메뉴에 저장 및 불러오기 기능 추가.

① 프로젝트 생성

    -  다이얼로그 기반 프로젝트(  OMok  )를 생성하자.

② 다이얼로그 박스에 메뉴를 추가

    -  리소스 뷰(오른쪽 버튼 후 리소스 추가..)에서 리소스(Menu)를 추가하고 확인하자.

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

컨트롤

Group  Box

Static  Box

Button1

Button2

Button4

ID

IDC_STATIC

IDC_STATIC_

COLAL

IDC_BUTT_ST

ART

IDC_BUTT_RE

START

IDC_BUTT_EX

IT

Caption

무슨 색 

바둑알이 둘 

것인지

시작

재시작

종료

변수이름

m_strColAl

Category

Value

Variable

CString

Messages

BN_CLICKED

BN_CLICKED

BN_CLICKED

함수이름

OnButtStart

OnButtRestart

OnButtExit


background image

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

-  2  -

    -  Static  Text  컨트롤에 변수 추가하기

      ․  변수 형식:  CString

      ․  범주     :  Value

      ․  변수 이름:  m_strColAl          (← 둘 다 소문자 L임)

    -  Button  처리기 함수 추가하기

      ․  IDC_BUTT_START      :  OnButtStart(  )

      ․  IDC_BUTT_RESTART:  OnButtRestart(  )

      ․  IDC_BUTT_EXIT          :  OnButtExit(  )


background image

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

-  3  -

④ 오목판을 출력하는 함수를 만들어보자.

    -  COMokDlg  클래스에  DrawBack(  )  함수를 등록하자.


background image

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

-  4  -

⑤ 시작 버튼을 클릭하기 전에 오목판이 그려질 수 있으므로,  이를 막아주는 변수를 추가하자.

    -  COMokDlg  클래스에 (  BOOL  m_bStart  ;  )  변수를 등록하자.

⑥ 어플리케이션이 실행할 때 가장 먼저 실행되는 함수는?  OnInitDialog(  )

    -  OnInitDialog()  함수에 m_bStart  의 초기값을 설정하자.

    -  m_bStart  의 초기값이 FALSE  이므로 오목판을 그리지 않는다.

    -  시작 버튼을 눌렀을 경우  오목판이 그려져야 하므로 m_bStart  의 값이 TRUE로 변경하는 코드

를 작성하자.


background image

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

-  5  -

    -  OnPaint(  )  함수가 호출되면 오목판이 그려지게 되게 할 것이므로 OnPaint(  )  함수에 다음과 같

이 코드를 작성하자.

※ 여기까지 작성한 것을 실행해 보자.

    -  어플리케이션을 실행하면 오목판이 생성되지 않아야 한다.

    -  시작 버튼을 눌렀을 경우,  오목판이 생성되어야 한다.


background image

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

-  6  -

⑦ 실제로 바둑알을 오목판에 놓게 되면 어디에 놓이는지 저장되는 변수가 필요하다.

    -  COMokDlg  클래스에 오목판의 구조상 2차원 배열 변수를 만들고,  이 배열변수를 초기화하는 함

수를 추가하자.

    -  int  m_nBoard[10][10];          ←  2차원 배열 변수(변수형식:  int  [10][10],  변수이름:  m_nBoard)

    -  void  InitBoard(  );                    ←  배열 변수를 초기화하는 함수

※ 여기서 잠깐.....

    -  위에서  만든 2차원배열을 초기화해주는 함수 InitBoard()  함수를  실행하기  위해서는  COMokDlg 

클래스의 무슨 함수에 추가를 해주어야 하는가? 


background image

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

-  7  -

    -  아래 그림과 같이 2차원배열을 초기화하는 함수를 OnInitDialog()  함수에 추가하자.

⑧ 바둑알을 그려주는 함수를 추가하자.

    -  void  DrawAl(  );


background image

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

-  8  -

    -  DrawAl(  )  함수를 OnPaint()  함수에 추가하자.

⑨ 현재 검정색 알을 놓이게 할 차례인지,  흰색 알이 놓이게 할 차례인지를 알려주는 변수

를 추가하고,  OnInitDialog()  함수에 아래와 같이 코드를 작성하자.

    -  bool  m_bTurn;          ← m_bTurn이 FALSE  이면 검정색 알,  TRUE  이면 흰색 알

    -  시작 버튼을 클릭하면 검정색 알부터 놓이게 할 것이므로 OnButtStart()함수에 코드를 작성하자.


background image

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

-  9  -

⑩ 왼쪽 마우스 버튼을 클릭하면 오목판에 알을 놓이게 해야하므로,  WM_LBUTTONDOWN 

메시지에 함수를 만들고 아래와 같이 코드를 작성하자.  (ctrl  +  shift  +  x)


background image

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

-  10  -

⑩ 재시작 버튼을 눌렀을 경우,  오목판을 깨끗이 지워야 하므로 아래와 같이 작성하자.

⑪ 종료 버튼을 눌렀을 경우,  코드 작성하기.

※ 여기까지 작성한 것을 실행해 보자.

    -  시작 버튼을 눌렀을 때 검정색 알부터 시작하고,

    -  재시작 버튼을 눌렀을 경우 화면이 깨끗이 지워져야 함.


background image

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

-  11  -

⑫ 아래의 그림처럼 Open,  Save,  Exit  메뉴에 대한 처리기 함수를 추가하자.

    -  OnFileOpen(  ),  OnFileSave(  ),  OnFileExit(  )


background image

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

-  12  -

    -  OnFileOpen(  )


background image

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

-  13  -

    -  OnFileSave(  )

    -  OnFileExit(  )


background image

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

-  14  -

※ 최종 테스트를 해보자.

    -  초기화면

    -  시작 버튼 클릭

    -  저장하기 메뉴 클릭 (  저장하기:    파일명.bor  )

    -  재시작 버튼 클릭 후 불러오기 메뉴 클릭 


background image

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

-  15  -