본문 바로가기
코딩 연습

파이썬 클래스 연습 - 게임 아이템의 종류 구입, 사용, 버리기 메서드

by good4me 2022. 6. 5.

goodthings4me.tistory.com

[파이썬 클래스 예제] 기 포스팅 한 [파이썬 클래스 연습 - 이즈리얼, 리신, 몬스터 예시로 알아보기]에 이어 패스트캠퍼스의 연습 문제(게임 아이템의 종류를 구분 문제)를 포스팅함

 

 

파이썬 클래스 연습 문제

# RPG 게임의 구성안

  • 아이템 공통 : 이름, 가격, 무게, 판매하기, 버리기
  • 장비 아이템 : 착용효과, 착용하기
  • 소모품 아이템 : 사용효과, 사용하기
  • 단, 버리기는 버릴 수 있는 아이템만 가능

 

클래스 다이어그램 설계도

클래스 다이어그램
클래스 다이어그램

  • 이름, 가격, 무게, 버리기 여부 등의 속성과 판매하기, 버리기 메서드를 가진 Item 클래스를 만들고,
  • 이를 상속하여 입는 아이템 클래스(WearableItem)과 사용하는 아이템 클래스(UsableItem)를 만든다.

 

[파이썬 소스 코드]

class Item:
    def __init__(self, name, price, weight, isdropable):
        self.name = name
        self.price = price
        self.weight = weight
        self.isdropable = isdropable

    def sale(self):
        print(f'[{self.name}] 판매 가겨은 [{self.price}]')
    
    def discard(self):
        if self.isdropable:
            print(f'[{self.name}] 아이템을 버렸습니다.')
        else:
            print(f'[{self.name}] 아이템을 버릴 수 없습니다.')


class WearableItem(Item):
    # 착용 효과
    def __init__(self, name, price, weight, isdropable, effect):
        super().__init__(name, price, weight, isdropable)
        self.effect = effect

    def wear(self):
        print(f'[{self.name}] 착용했습니다. {self.effect}')


class UsableItem(Item):
    # 사용 효과
    def __init__(self, name, price, weight, isdropable, effect):
        super().__init__(name, price, weight, isdropable)
        self.effect = effect

    def use(self):
        print(f'[{self.name}] 사용했습니다. {self.effect}')


## 인스턴스 생성
sword = WearableItem('이가닌의 검', 30000, 3.5, True, '체력 5000 증가, 마력 3000 증가')
sword.wear()
sword.sale()
sword.discard()

potion = UsableItem('신비한 투명물약', 150000, 0.1, False, '투명효과 300초 지속')
potion.discard()
potion.sale()
potion.use()
  • 부모 클래스 상속으로 인해 자식 클래스에서는 부모의 속성과 메서드를 그대로 사용할 수 있고, 추가적으로 각각의 메서드(wear, use)를 가지고 있다.
  • 자식 클래스에서 효과 관련 속성을 추가하기 위해 생성자 오버라이딩(부모 클래스 생성자 접근)을 했다.

 

good4me.co.kr

 

[실행 결과]

[이가닌의 검] 착용했습니다. 체력 5000 증가, 마력 3000 증가
[이가닌의 검] 판매 가겨은 [30000]
[이가닌의 검] 아이템을 버렸습니다.
[신비한 투명물약] 아이템을 버릴 수 없습니다.       
[신비한 투명물약] 판매 가겨은 [150000]
[신비한 투명물약] 사용했습니다. 투명효과 300초 지속

 

 

[관련 포스팅 더보기]

 

 

파이썬 클래스 연습 - 이즈리얼, 리신, 몬스터 예시로 알아보기

[파이썬 클래스 연습] 객체 지향 개발 언어 스터디 중 난해하다고 하는 클래스 개념을 이해하기 위해 패스트캠퍼스의 파이썬 웹 개발에서 이즈리얼, 리신, 몬스터 예시로 설명하는 '클래스 개념'

goodthings4me.tistory.com

 

댓글