본문 바로가기
프로그램

[파이썬] 문제 : 게임 케릭터 클랙스, 상속 만들기

by 오디세이99 2022. 11. 9.
728x90
반응형

 

 

 

 

 

# key로 인자 전달. 인자를 딕셔너리 사용

class character():     # 클래스 정의
    def __init__(self, name="Noname", job='없음', 힘=None, 민첩=None, 지능=None, 때리기='때리기', 구르기='구르기'):  # 생성자 지정
        self.name = name                                            # 인자로 넘어온 값을 틀래스 변수에 대입
        self.job = job
        self.performance = {"힘":힘, "민첩":민첩, "지능":지능}      # 문제 예시에 딕셔너리 구조로 출력되어 딕셔너리르 구성
        self.skill = [때리기, 구르기]                               # 문제 예시에 리스트 구조로 출력되어 리스트로 구성
    
    def showState(self):                                  # 출력 함수
        print(f"캐릭터 명: {self.name}")                  # 출력. 클래스 내부 변수들 사용 출력
        print(f"직업: {self.job}")
        print(f"=====능력치=====\n{self.performance}")
        print(f"===보유스킬===\n{self.skill}")
        

X = character(**{'힘':3, "민첩":5, "지능":5})             # 클래스 인스턴스 생성

X.showState()                                              # 인스턴스의 출력함수 실행

-

캐릭터 명: Noname
직업: 없음
=====능력치=====
{'힘': 3, '민첩': 5, '지능': 5}
===보유스킬===
['때리기', '구르기']

 

 

class knight(character):                                     # 클래스 정의. character 클래스를 상속 받음
    def showState(self):
        self.skill.append('베기')                            # kjight 클래스의 스킬 추가
        self.skill.append('강타')
        self.performance['힘'] += self.performance['힘']     # 늘력치가 부모클래스(character)의 능력치에 + 하는 것으로 보임.
        self.performance['민첩'] += self.performance['민첩']
        self.performance['지능'] += self.performance['지능']
        super().showState()


X = knight(**{"힘":3, "민첩":5, "지능":5})                  # 기사 클랙스의 인스턴스 생성
X.showState()

-

캐릭터 명: Noname
직업: 없음
=====능력치=====
{'힘': 6, '민첩': 10, '지능': 10}
===보유스킬===
['때리기', '구르기', '베기', '강타']
 
 

 

class magician(character):                                      # 클래스 정의. character 클래스 상속 받음
    def showState(self):
        self.skill.append('파이어볼')                            # 마법사 클래스 스킬 추가
        self.skill.append('아이스에로우')
        if self.performance['힘'] == 0:                          # 문제의 출력으로 봐서 능력치가 0 입력이면 0이 되는 것으로 보임
            self.performance['힘'] = 0
        else:
            self.performance['힘'] += self.performance['힘']
        
        if self.performance['민첩'] == 0:
            self.performance['민첩'] = 0
        else:
            self.performance['민첩'] += self.performance['민첩']
        self.performance['지능'] += self.performance['지능']
        super().showState()

X = magician("서머너",**{"힘":0, "민첩":0, "지능":10})           # 바법사 클랙스 인스턴스 생성. 캐릭터명 입력되어 사용

-

캐릭터 명: 서머너
직업: 없음
=====능력치=====
{'힘': 0, '민첩': 0, '지능': 20}
===보유스킬===
['때리기', '구르기', '파이어볼', '아이스에로우']
728x90
반응형

댓글