-
파이썬 클래스 연습 - 게임 아이템의 종류 구입, 사용, 버리기 메서드코딩 연습 2022. 6. 5. 08:02반응형
[파이썬 클래스 예제] 기 포스팅 한 [파이썬 클래스 연습 - 이즈리얼, 리신, 몬스터 예시로 알아보기]에 이어 패스트캠퍼스의 연습 문제(게임 아이템의 종류를 구분 문제)를 포스팅함
파이썬 클래스 연습 문제
# 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)를 가지고 있다.
- 자식 클래스에서 효과 관련 속성을 추가하기 위해 생성자 오버라이딩(부모 클래스 생성자 접근)을 했다.
[실행 결과]
[이가닌의 검] 착용했습니다. 체력 5000 증가, 마력 3000 증가 [이가닌의 검] 판매 가겨은 [30000] [이가닌의 검] 아이템을 버렸습니다. [신비한 투명물약] 아이템을 버릴 수 없습니다. [신비한 투명물약] 판매 가겨은 [150000] [신비한 투명물약] 사용했습니다. 투명효과 300초 지속[관련 포스팅 더보기]
파이썬 클래스 연습 - 이즈리얼, 리신, 몬스터 예시로 알아보기
[파이썬 클래스 연습] 객체 지향 개발 언어 스터디 중 난해하다고 하는 클래스 개념을 이해하기 위해 패스트캠퍼스의 파이썬 웹 개발에서 이즈리얼, 리신, 몬스터 예시로 설명하는 '클래스 개념'
goodthings4me.tistory.com
반응형'코딩 연습' 카테고리의 다른 글
웹 브라우저 새로고침(F5) 시 데이터 전송 안 되게 하는 문제 (0) 2022.06.16 파이썬 os 모듈(os 또는 os.path)과 pathlib 모듈 비교 (0) 2022.06.06 파이썬 클래스 연습 - 이즈리얼, 리신, 몬스터 예시로 알아보기 (0) 2022.06.04 엑셀 파일 병합하기 - openpyxl 활용 (0) 2022.06.01 python 가상 환경 오류 - 'activate' 용어가 cmdlet, 함수,... 조치 방법 (0) 2022.05.26
