12 Sep 2017 » python

2017-09-12-python

객체지향 프로그래밍 ③

객체지향 분석 및 설계

간단한 게임을 만들면서 객체지향 프로그래밍을 익혀보자.


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 : 다리

3. 클래스 체계 및 객체 지도 만들기

어떤 함수가 서로 비슷할 지 클래스 체계를 세운다.

  • 이 게임에서 지도, 엔진, 장면이 핵심 개념이라는 것을 깨달았다.

클래스 체계_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


Related Posts