메뉴 건너뛰기

OBG

Programming

OBG
조회 수 687 추천 수 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 1591
202 Python [액션게임 만들기] 3. 클래스 다이어그램 기초 file OBG 2014.05.07 2668
201 Python [액션게임 만들기] 2. 클래스 분석 file OBG 2014.05.06 924
200 Python [액션게임 만들기] 1. Street Pyghter 게임 소개 3 file OBG 2014.05.03 867
199 Python [농장게임 만들기] 10. 상점을 추가하자 file MoA 2014.05.01 2635
198 Python [농장게임 만들기] 9. 밀을 재배하자 file MoA 2014.05.01 611
197 Python [농장게임 만들기] 8. HUD에 텍스트를 표시하자 file MoA 2014.05.01 643
196 Python [농장게임 만들기] 7. 농부 행동 추가 1 file MoA 2014.05.01 496
195 Python [농장게임 만들기] 6. 나머지 오브젝트를 그리자 1 file MoA 2014.05.01 730
194 Python [농장게임 만들기] 5. 플레이어를 추가하자 1 file MoA 2014.04.30 505
193 Python [농장게임 만들기] 4. 펜스를 그리자 5 file MoA 2014.04.30 577
192 Python [농장게임 만들기] 3. 배경을 그리자 6 file MoA 2014.04.28 2033
» Python [농장게임 만들기] 2. Nubcake Farms 클래스 분석 3 file OBG 2014.04.26 687
190 Python [농장게임 만들기] 1. Nubcake Farms 게임 소개 4 file OBG 2014.04.26 1533
189 Python [게임 만들기] 강좌 진행 예정 2 MoA 2014.04.26 1442
188 Algorithm 2048게임 높은 점수 얻기 위한 알고리즘 MoA 2014.03.29 525
187 Tool/etc UI Guidelines MoA 2014.03.11 493
186 Tool/etc 자바스크립트 물리엔진 ㄷㄷ MoA 2014.03.10 590
185 API/MFC 다이얼로그 기반에서 메뉴 내용이 갱신 안되는 문제 해결 MoA 2014.02.13 929
184 Python 파이썬에서 C모듈 사용하기 MoA 2014.02.10 1899
183 Library CSpreadSheet MoA 2014.02.03 351
Board Pagination Prev 1 ... 2 3 4 5 6 7 8 9 10 ... 15 Next
/ 15
위로