게임 만들기 오목 게임 -...

14
20132학기, 고급프로그래밍2 (7주차 수업자료) 박 기 홍 - 1 - ※ 게임 만들기 ( 오목 게임) - 규칙 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

Upload: others

Post on 25-Oct-2019

8 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 게임 만들기 오목 게임 - unit.mokwon.ac.krunit.mokwon.ac.kr/board/loadFile.ht?fileNm=2013... · ※ 게임 만들기 ( 오목 게임) - 규칙 1: 오목을 두다가 메뉴

2013년 2학기, 고급프로그래밍2 (7주차 수업자료) 박 기 홍

- 1 -

※ 게임 만들기 ( 오목 게임)

- 규칙 1: 오목을 두다가 메뉴 리소스(항목)에 저장 및 불러오기 기능 추가.

① 프로젝트 생성

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

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

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

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

컨트롤 Group Box Static Box Button1 Button2 Button4

ID IDC_STATICIDC_STATIC_

COLALIDC_BUTT_ST

ARTIDC_BUTT_RE

STARTIDC_BUTT_EX

IT

Caption무슨 색

바둑알이 둘 것인지

시작 재시작 종료

변수이름 m_strColAl

Category Value

Variable CString

Messages BN_CLICKED BN_CLICKED BN_CLICKED

함수이름 OnButtStart OnButtRestart OnButtExit

Page 2: 게임 만들기 오목 게임 - unit.mokwon.ac.krunit.mokwon.ac.kr/board/loadFile.ht?fileNm=2013... · ※ 게임 만들기 ( 오목 게임) - 규칙 1: 오목을 두다가 메뉴

2013년 2학기, 고급프로그래밍2 (7주차 수업자료) 박 기 홍

- 2 -

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

․ 변수 형식: CString

․ 범주 : Value

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

- Button 처리기 함수 추가하기

․ IDC_BUTT_START : OnButtStart

․ IDC_BUTT_RESTART: OnButtRestart

․ IDC_BUTT_EXIT : OnButtExit

Page 3: 게임 만들기 오목 게임 - unit.mokwon.ac.krunit.mokwon.ac.kr/board/loadFile.ht?fileNm=2013... · ※ 게임 만들기 ( 오목 게임) - 규칙 1: 오목을 두다가 메뉴

2013년 2학기, 고급프로그래밍2 (7주차 수업자료) 박 기 홍

- 3 -

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

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

Page 4: 게임 만들기 오목 게임 - unit.mokwon.ac.krunit.mokwon.ac.kr/board/loadFile.ht?fileNm=2013... · ※ 게임 만들기 ( 오목 게임) - 규칙 1: 오목을 두다가 메뉴

2013년 2학기, 고급프로그래밍2 (7주차 수업자료) 박 기 홍

- 4 -

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

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

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

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

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

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

를 작성하자.

Page 5: 게임 만들기 오목 게임 - unit.mokwon.ac.krunit.mokwon.ac.kr/board/loadFile.ht?fileNm=2013... · ※ 게임 만들기 ( 오목 게임) - 규칙 1: 오목을 두다가 메뉴

2013년 2학기, 고급프로그래밍2 (7주차 수업자료) 박 기 홍

- 5 -

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

이 코드를 작성하자.

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

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

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

Page 6: 게임 만들기 오목 게임 - unit.mokwon.ac.krunit.mokwon.ac.kr/board/loadFile.ht?fileNm=2013... · ※ 게임 만들기 ( 오목 게임) - 규칙 1: 오목을 두다가 메뉴

2013년 2학기, 고급프로그래밍2 (7주차 수업자료) 박 기 홍

- 6 -

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

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

수를 추가하자.

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

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

※ 여기서 잠깐.....

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

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

Page 7: 게임 만들기 오목 게임 - unit.mokwon.ac.krunit.mokwon.ac.kr/board/loadFile.ht?fileNm=2013... · ※ 게임 만들기 ( 오목 게임) - 규칙 1: 오목을 두다가 메뉴

2013년 2학기, 고급프로그래밍2 (7주차 수업자료) 박 기 홍

- 7 -

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

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

- void DrawAl( );

Page 8: 게임 만들기 오목 게임 - unit.mokwon.ac.krunit.mokwon.ac.kr/board/loadFile.ht?fileNm=2013... · ※ 게임 만들기 ( 오목 게임) - 규칙 1: 오목을 두다가 메뉴

2013년 2학기, 고급프로그래밍2 (7주차 수업자료) 박 기 홍

- 8 -

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

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

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

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

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

Page 9: 게임 만들기 오목 게임 - unit.mokwon.ac.krunit.mokwon.ac.kr/board/loadFile.ht?fileNm=2013... · ※ 게임 만들기 ( 오목 게임) - 규칙 1: 오목을 두다가 메뉴

2013년 2학기, 고급프로그래밍2 (7주차 수업자료) 박 기 홍

- 9 -

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

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

Page 10: 게임 만들기 오목 게임 - unit.mokwon.ac.krunit.mokwon.ac.kr/board/loadFile.ht?fileNm=2013... · ※ 게임 만들기 ( 오목 게임) - 규칙 1: 오목을 두다가 메뉴

2013년 2학기, 고급프로그래밍2 (7주차 수업자료) 박 기 홍

- 10 -

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

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

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

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

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

Page 11: 게임 만들기 오목 게임 - unit.mokwon.ac.krunit.mokwon.ac.kr/board/loadFile.ht?fileNm=2013... · ※ 게임 만들기 ( 오목 게임) - 규칙 1: 오목을 두다가 메뉴

2013년 2학기, 고급프로그래밍2 (7주차 수업자료) 박 기 홍

- 11 -

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

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

Page 12: 게임 만들기 오목 게임 - unit.mokwon.ac.krunit.mokwon.ac.kr/board/loadFile.ht?fileNm=2013... · ※ 게임 만들기 ( 오목 게임) - 규칙 1: 오목을 두다가 메뉴

2013년 2학기, 고급프로그래밍2 (7주차 수업자료) 박 기 홍

- 12 -

- OnFileOpen( )

Page 13: 게임 만들기 오목 게임 - unit.mokwon.ac.krunit.mokwon.ac.kr/board/loadFile.ht?fileNm=2013... · ※ 게임 만들기 ( 오목 게임) - 규칙 1: 오목을 두다가 메뉴

2013년 2학기, 고급프로그래밍2 (7주차 수업자료) 박 기 홍

- 13 -

- OnFileSave( )

- OnFileExit( )

Page 14: 게임 만들기 오목 게임 - unit.mokwon.ac.krunit.mokwon.ac.kr/board/loadFile.ht?fileNm=2013... · ※ 게임 만들기 ( 오목 게임) - 규칙 1: 오목을 두다가 메뉴

2013년 2학기, 고급프로그래밍2 (7주차 수업자료) 박 기 홍

- 14 -

※ 최종 테스트를 해보자.

- 초기화면

- 시작 버튼 클릭

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

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