로그인

검색

OBG
조회 수 1707 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 게시글 수정 내역 댓글로 가기 인쇄 첨부
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 게시글 수정 내역 댓글로 가기 인쇄 첨부

streetPyghter.jpg

 

 

클릭하면 커진다.

 

클래스 다이어그램을 그린 것이다. 자세한 설명은 http://www.obg.co.kr/doku/doku.php?id=programming:design_pattern:uml 을 참고한다. (3강에서도 클래스 다이어그램에 대해 간단히 다루겠다. 궁금한 사람은 3강 앞부분을 먼저 보고 와도 좋다.)

 

맨 처음 위 다이어그램을 보면 정신이 없을 것이다. 프로그래밍을 한지 얼마 안된 사람이 위 다이어그램을 한번에 이해할거라 전혀 기대하지 않는다. 프로그래밍을 좀 해본 사람도 한눈에 볼 수 없다. 나 또한 위 다이어그램을 그리는데 3시간 넘게 걸렸다.

 

클래스가 많기 때문에 여기에다 설명을 일일이 다 적을 순 없다. 위 이미지를 다운 받아 클래스, 메쏘드의 이름을 통해 그 역할을 유추해보기 바란다. 소스 코드와도 비교해 본다.

 

흰색으로 표시한 클래스는 Singleton 패턴을 적용한 클래스이다. 이 클래스들은 오브젝트를 오직 하나만 생성할 수 있다. 몇몇 클래스는 object 클래스를 상속받는데 사실 파이썬의 모든 클래스는 object 클래스를 암묵적으로 상속받는다. 그래서 이 부분은 표시하지 않았다.

 

다이어그램에서 한눈에 띄는 것은 Player 클래스의 메쏘드 개수이다. 굳이 따로 얘기하지 않아도 제일 중요한 클래스임을 유추할 수 있을 것이다.

 

이전 농장 게임과의 차이점은 pygame.sprite.Sprite 클래스를 상속받는 클래스가 없다는 것이다. 이 게임에선 오브젝트가 플레이어 2명 + Fireball이기 때문에 굳이 쓰지 않은 것으로 생각한다.

 

위 다이어그램에서 알 수 있는 또다른 사실은 오른쪽 menu.py 부분에서 YesNo 클래스는 어디에도 연결된 부분이 없다. 그리고 왼쪽 game.py 부분에서 Vector2P 클래스 또한 Vector 클래스를 상속받아 정의되었을 뿐 다른 어디에도 연결된 부분이 없다. 이 두 클래스는 개발자가 추후에 쓸 목적으로 미리 클래스를 만들었겠지만 현재는 전혀 필요없는 클래스임을 알 수 있다. (Point 클래스는 너무 많은 곳에서 쓰여 일부로 표시하지 않은 것이니 유의하자)

 

UML을 어느 정도 알고 StarUML의 사용법을 안다면 첨부 파일의 uml 파일을 다운받아 열어보기 바란다. 그리고 클래스 다이어그램을 하나 더 추가하고 우측의 Model Explorer 클릭 후 design Model 아래의 클래스 중 관심 있는 몇개를 클래스 다이어그램으로 드래그해보자. 예를 들면 Player 클래스와 Game 클래스를 드래그해보자. 두 클래스 사이의 관계가 자동으로 보여질 것이다. 이런 식으로 위 다이어그램 중 보고 싶은 부분만 골라 새로운 클래스 다이어그램을 쉽게 만들 수 있다.

 

덧1 : 이 클래스 다이어그램은 필자가 게임을 좀 더 쉽게 분석하고자 만든 것이므로 그냥 넘어가도 상관 없다.

덧2 : 생략된 부분도 있는데 이는 중요하지 않다 판단하여 생략한 것이다. 그러나 생략하지 말아야할 것을 생략한 부분이 있을지도 모른다.

덧3 : 틀린 부분이 있을 수도 있다.

 

?

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 Tool/etc Programming 게시판 관련 2 MoA 2014.11.01 5345
» Python [액션게임 만들기] 2. 클래스 분석 file OBG 2014.05.06 1707
87 Python [액션게임 만들기] 3. 클래스 다이어그램 기초 file OBG 2014.05.07 3716
86 Python [액션게임 만들기] 4. 캐릭터 선택 화면 file OBG 2014.05.07 1474
85 Python [액션게임 만들기] 5. 장면 전환 MoA 2014.05.07 877
84 Python [액션게임 만들기] 6. 게임 화면 출력 MoA 2014.05.07 1242
83 Python [액션게임 만들기] 7. 캐릭터 출력 MoA 2014.05.07 1001
82 Python [액션게임 만들기] 8. 캐릭터 액션 구현 1 MoA 2014.05.07 1174
81 Python [액션게임 만들기] 9. 캐릭터 액션 구현 2 MoA 2014.05.07 1238
80 Python [액션게임 만들기] 10. 캐릭터 기술 구현 MoA 2014.05.07 997
79 Tool/etc Machine Learning for Video Games MoA 2015.07.27 1923
78 Site 비트윈 PC 버전 개발기 MoA 2015.10.11 1742
77 C/C++ 정신나간 정렬 알고리즘 file MoA 2015.10.13 1337
76 API/MFC Windows 10 앱 개발(UWP) MoA 2015.10.13 1606
75 Site PHP: 잘못된 디자인의 프랙탈 MoA 2016.07.10 1021
74 Database 서비스중인 게임 DB 설계(쿠키런) 기초 MoA 2016.07.12 1115
73 Tool/etc 2016년에 자바스크립트를 배우는 기분 MoA 2016.12.27 902
72 Tool/etc What does the last “-” (hyphen) mean in options of `bash`? OBG 2021.04.29 606
71 Tool/etc What does set -e mean in a bash script? OBG 2021.04.29 791
70 Deeplearning 추천(Recommendation) 시스템 - 알고리즘 Trend 정리 OBG 2021.08.03 756
69 Web Address Bar Install for Progressive Web Apps on the Desktop OBG 2021.12.15 674
Board Pagination Prev 1 ... 6 7 8 9 10 11 12 13 14 15 Next
/ 15