메뉴 건너뛰기

OBG

Programming

OBG
조회 수 715 추천 수 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 1709
286 API/MFC 후킹 링크 MoA 2013.07.28 415
285 Python 화면 캡쳐 소스 MoA 2014.01.14 973
284 API/MFC 프린터 출력하기 MoA 2013.10.16 3437
283 API/MFC 프로세스 - 생성과 종료 그리고 이것 저것 너울 2011.10.12 1834
282 API/MFC 프로그램 배포용으로 만드는 과정 너울 2012.01.20 488
281 Site 프로그래밍 관련 사이트 MoA 2012.08.02 255
280 C/C++ 파일 입출력 MoA 2013.07.28 487
279 Python 파이썬에서 C모듈 사용하기 MoA 2014.02.10 1919
278 Deeplearning 파이썬 머신러닝 무료 강의 (7시간) OBG 2022.07.06 97
277 Site 특정 자료형의 데이터를 binary(hex값, 2진수값)으로 변환 Naya 2012.11.15 558
276 Tool/etc 텍스트 에디터 Sublime Text 2 너울 2012.03.30 505
275 API/MFC 태스크 대화상자 (Task Dialog) MoA 2013.10.22 436
274 Algorithm 큰 수 구하기 알고리즘 Naya 2012.08.02 657
273 Tool/etc 쿠버네티스 클러스터 OBG 2022.11.11 112
272 C/C++ 코드 실행 시간 계산 Naya 2012.08.02 297
271 C/C++ 코드 실행 시간 계산 Naya 2012.09.27 492
270 Tool/etc 컨텍스트 스위칭 (Context Switching) MoA 2013.07.28 1039
269 Web 카카오톡 웹버전 만들기 OBG 2022.11.09 192
268 Deeplearning 추천(Recommendation) 시스템 - 알고리즘 Trend 정리 OBG 2021.08.03 134
267 Deeplearning 추천 시스템 OBG 2023.03.30 120
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 15 Next
/ 15
위로