• 검색 결과가 없습니다.

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

N/A
N/A
Protected

Academic year: 2021

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

Copied!
15
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(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

(2)

- Static Text 컨트롤에 변수 추가하기 ․ 변수 형식: CString

․ 범주 : Value

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

- Button 처리기 함수 추가하기

․ IDC_BUTT_START : OnButtStart( ) ․ IDC_BUTT_RESTART: OnButtRestart( ) ․ IDC_BUTT_EXIT : OnButtExit( )

(3)

- 3 -

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

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

(4)

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

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

⑥ 어플리케이션이 실행할 때 가장 먼저 실행되는 함수는? OnInitDialog( ) - OnInitDialog() 함수에 m_bStart 의 초기값을 설정하자.

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

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

(5)

- 5 -

- OnPaint( ) 함수가 호출되면 오목판이 그려지게 되게 할 것이므로 OnPaint( ) 함수에 다음과 같 이 코드를 작성하자.

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

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

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

(6)

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

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

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

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

※ 여기서 잠깐...

- 위에서 만든 2차원배열을 초기화해주는 함수 InitBoard() 함수를 실행하기 위해서는 COMokDlg 클래스의 무슨 함수에 추가를 해주어야 하는가?

(7)

- 7 -

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

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

- void DrawAl( );

(8)

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

⑨ 현재 검정색 알을 놓이게 할 차례인지, 흰색 알이 놓이게 할 차례인지를 알려주는 변수 를 추가하고, OnInitDialog() 함수에 아래와 같이 코드를 작성하자.

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

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

(9)

- 9 -

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

WM_LBUTTONDOWN

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

(10)

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

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

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

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

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

(11)

- 11 -

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

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

(12)

- OnFileOpen( )

(13)

- 13 - - OnFileSave( )

- OnFileExit( )

(14)

※ 최종 테스트를 해보자.

- 초기화면

- 시작 버튼 클릭

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

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

(15)

- 15 -

참조

관련 문서

 상대방이 어떤 전략을 선택하더라도 자신에게 유리한 전략이 분명히 존재하는 게임(우월전략 또는 지배전략).. 우월전략균형은 내쉬균형이지만 내쉬균형이라고 해서

 Core는 전에 언급한 것과 같이 개인의 합리성(Individual Rationality)과 단체의 합리성(Group Rationality)의 교집

비디오 format war: JVC의 VHS형 대 소니의 베타맥스(Betamax)..  Sony's Betamax

 게임 결과의 자연스러움(naturalness)에 의한 비교: 특정 균형 이 실제로 현실화되는 가능성. 왜냐하면, core 역시 혼자서 행동하는 것 이 상의

 Wolfram Research.. 두 대의 자동차가 마주 보며 달리다 먼저 겁을 먹고 핸들을 옆으로 돌리는 사람이 패하는 게임이다. 반도체 업계에선 견디지 못하고 투자를

불완전정보게임(game of imperfect information) 상대방이 어떤 선택을 했는지 모르는 상태에 있는 경기자가

개임의 대한 문의 전화는 새로운 버전이 출시되었습니다. 다운로 드 부탁드립니다

[r]