메뉴 건너뛰기

OBG

Programming

OBG
조회 수 693 추천 수 0 댓글 3
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부

개인적으로 '게임 프로그래밍의 정석'이란 책을 재미있게 보고 있다.(언어 - C++) 이 책에선 게임 개발을 단계적으로 보여주면서 '게임 개발은 이렇게 하는 거다'라는 것을 알려준다. 나도 그렇게 하고 싶으나 책을 쓰려고 하는 강좌가 아니므로 그렇게까진 못하겠고 '남의 소스 코드 분석은 이렇게 하는 거다'라는 것을 어느 정도 알려주겠다.

 

소스 코드 분석에 있어 가장 핵심적인 것은 클래스 구조이다. UML, 그 중에서도 Class Diagram이라는 것이 괜히 있는 것이 아니다. 아무리 처음 보는 소스라도 Class Diagram이라는 것이 있으면 반은 이해할 수 있다. UML에 대해서는 다음 페이지를 참고한다.

 

http://www.obg.co.kr/doku/doku.php?id=programming:design_pattern:uml

 

이 강좌는 게임 개발을 거의 처음하는 사람들을 위한 것이기 때문에 UML을 다루진 않겠다. 그냥 간단히 어느 클래스가 있으며 그 클래스가 하는 일은 무엇인지만 간단히 정리해보겠다.

 

먼저 Nubcake Farms 소스에는 다음과 같은 클래스를 포함하고 있다.

 

1. Farmer 클래스

2. Fence 클래스

3. Plot 클래스

4. Well 클래스

5. WateringCan 클래스

6. HUD_Sprite 클래스

7. Wheat_Plant 클래스

8. Shop 클래스

 

위 클래스들은 모두 pygame.sprite.Sprite 클래스를 상속받아 정의하였다. pygame.sprite.Sprite 클래스는 pygame.sprite 모듈의 클래스로 게임 상의 오브젝트들을 나타내는 클래스이다. 이름으로도 대충 뭐하는 클래스인지 파악이 될 것이다. 이제 각 클래스의 역할이 뭔지? 멤버함수 또는 변수는 어떤게 있는지 살펴보자.

 

1. Farmer 클래스

말그대로 플레이어인 농부다. 초기화할 때 농부의 이미지를 불러오고 씨앗, 밀, 물, 코인 등을 얼마나 갖고 있는지 설정한다.

farmer_down.png farmer_left.png farmer_right.png farmer_up.png

 

1.1. interact 함수

농부가 다른 오브젝트랑 상호작용할 때 작동한다.

 

1.2. move 함수

농부를 이동한다. 

 

1.3. check_bounds 함수

농부가 경계를 넘었는지 조사한다.

 

2. Fence 클래스

농부가 이동할 수 있는 구역의 경계인 펜스를 나타낸다.

 

2.1 assign_image 함수

펜스의 배열을 체크하여 펜스 이미지를 할당한다.

 

3. Plot 클래스

밀을 재배할 수 있는 땅을 나타낸다.

 

3.1. dry 함수

 

땅이 말라있다.

 

3.2. wet 함수

땅이 젖어있다.

 

3.3. update 함수

땅이 젖은 후 15초가 지나면 땅을 마르게 한다.

 

3.4. occupy 함수

씨앗을 심는 경우 호출

 

3.5. unoccupy 함수

밀을 재배한 경우 호출

 

4. Well 클래스

물을 얻을 수 있는 우물이다.

well.png

 

5. WateringCan 클래스

물을 담을 수 있는 물뿌리개이다.

watering_can_large.png

 

6. HUD_Sprite 클래스

게임 상태를 표시하는 HUD(Head-up Display)를 나타낸다.

 

7. Wheat_Plant 클래스

땅에 씨앗을 심는 경우 생성되는 오브젝트이다.

 

wheat_1.png wheat_2.png wheat_3.png wheat_4.png

7.1. get_growth_time 함수

다음 단계로 자라기 위한 시간을 계산한다. 5~10초 사이의 값을 리턴한다.

 

7.2. update 함수

시간을 체크하여 growthtime이 지나면 다음 단계로 성장한다.

 

7.3. grow 함수

다음 단계로 성장시 호출

 

7.4. harvest 함수

다 자란 밀을 재배한다.

 

8. Shop 클래스

밀을 파고 씨앗을 살 수 있는 상점이다.

well.png

 

8.1. open 함수

상점을 연다.

 

8.2. close 함수

상점을 닫는다.

 

8.3. update 함수

상점을 열었을 때의 메뉴 텍스트를 업데이트 한다.

 

8.4. up_selection 함수

위쪽 화살표를 누른 경우

 

8.5. down_selection 함수

아래쪽 화살표를 누른 경우

 

8.6. make_selection 함수

메뉴를 선택한 경우

 

?

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 Tool/etc Programming 게시판 관련 2 MoA 2014.11.01 1597
226 API/MFC MFC, CHM파일 연동 (context help) 너울 2012.04.16 705
225 Site 비트윈 PC 버전 개발기 MoA 2015.10.11 702
224 API/MFC 메시지 펌프 너울 2011.08.26 693
» Python [농장게임 만들기] 2. Nubcake Farms 클래스 분석 3 file OBG 2014.04.26 693
222 API/MFC stdafx.h 사용 (미리 컴파일된 헤더) Naya 2012.08.13 685
221 C/C++ C언어의 변수 float와 double - Float Point 처리 MoA 2013.07.28 684
220 API/MFC 모달리스 대화상자 Naya 2012.08.02 677
219 C/C++ memset vs for 초기화. 속도 차이가 얼마나 날까? 2 MoA 2013.07.28 663
218 Site 개발자를 위한 각 기업 오픈소스 공유 사이트 (주로 모바일) Naya 2012.08.02 662
217 Python [농장게임 만들기] 8. HUD에 텍스트를 표시하자 file MoA 2014.05.01 648
216 Python [첫게임 만들기] 4. 화살을 발사해보자 file MoA 2013.11.21 647
215 Python [액션게임 만들기] 4. 캐릭터 선택 화면 file OBG 2014.05.07 647
214 API/MFC MFC에서 생성,사용되는 파일 확장자 MoA 2013.08.30 637
213 Algorithm 큰 수 구하기 알고리즘 Naya 2012.08.02 635
212 Python [GUI] wxPython 기본 프로그램 file MoA 2013.11.30 631
211 Tool/etc Coding conventions MoA 2013.07.28 630
210 JAVA/Android 리스트뷰에 체크박스 추가 예제 MoA 2013.05.24 621
209 Python [GUI] Tkinter, wxPython MoA 2013.11.27 619
208 Python [농장게임 만들기] 9. 밀을 재배하자 file MoA 2014.05.01 613
207 API/MFC 슬라이더 컨트롤에 툴팁 삽입 (동적 툴팁) MoA 2013.10.28 603
Board Pagination Prev 1 ... 2 3 4 5 6 7 8 9 10 ... 15 Next
/ 15
위로