객체지향 프로그래밍 ③¶
객체지향 분석 및 설계¶
간단한 게임을 만들면서 객체지향 프로그래밍을 익혀보자.
1. 브레인 스토밍¶
텍스트용 어드벤처 게임을 만들자. 각 장면은 다음과 같다.
- Death
사망. 플레이어가 죽는 순간 재미를 느끼게 하자.
- CentralCorridor
중앙 복도. 시작 지점이고, 서있는 고던인을 물리치고 나아가자. 농담 한 마디로 이겨야 함.
- Laser Weapon Armor
레이저 무기고. 영웅이 구명정에 도착하기 전, 우주선을 폭파할 수 있는 중성자탄을 얻는 곳이다. 패스워드가 필요한 번호판이 있음.
- The Bridge
다리. 고던인이 나오는 다른 전투 장면이며, 영웅이 폭탄을 설치한다.
- Escape Pod
구명정. 영웅이 탈출하는 곳이며, 탈출가능한 구명정을 찾아야 함.
2. 핵심 개념 추출 및 탐구¶
이제 명사 가운데 일부를 추출하고, 클래스 체계(hierarchy)를 분석하기 위해 탐구하자.
명사의 목록
- Alien : 외계인
- Player : 플레이어
- Ship : 우주선
- Maze : 미로
- Room : 방
- Scene : 장면
- Gothon : 고던
- Escape Pod : 구명정
- Planet : 행성
- Map : 지도
- Engine : 엔진
- Death : 사망
- Central Corridor : 중앙 복도
- Laser Weapon Armory : 레이저 무기고
- The Bridge : 다리
클래스 체계_1
- Map 지도
- Engine 엔진
- Scene 장면
- Death 사망
- Central Corridor 중앙 복도
- Laser Weapon Armory 레이저 무기고
- The Bridge 다리
- Escape Pod 구명정
클래스 체계 업데이트¶
- 각 클래스마다 필요한 항목이 있다고 판단되면 추가한다.
클래스 체계_2
- Map 지도
- next_scene 다음 장면
- opening_scene 장면 열기
- Engine 엔진
play 플레이
- Scene 장면
- enter 입장(모든 장면마다 공통적으로 포함)
- Death 사망
- Central Corridor 중앙 복도
- Laser Weapon Armory 레이저 무기고
- The Bridge 다리
- Escape Pod 구명정
4. class 코드 골격을 짜고 실행 Test¶
In [1]:
class Map(object):
def __init__(self, start_scene):
pass
def next_scene(self, scene_name):
pass
def opening_scene(self):
pass
class Engine(object):
def __init__(self, scene_map):
pass
def play(self):
pass
class Scene(object):
def enter(self):
pass
class Death(object):
def enter(self):
pass
class CentralCorridor(Scene):
def enter(self):
pass
class LaserWeaponArmory(Scene):
def enter(self):
pass
class The