본문 바로가기

잡동사니_코딩

[포켓몬스터] 객체 지향 연습하기

포켓몬의 다음과 같은 기능을 클래스를 통해 만드세요

클래스 이름: PocketMon

인스턴스 변수: hp(default 100) level(default 1)

인스턴스 메소드: sleep:
휴식, hp 풀 충전됨

body_attack:

다른 포켓몬에게 몸통박치기 내 level * 10 만큼 상대방의 hp가 깎임 상대방의 피가 0이 되면 내 레벨이 1 증가(hp가 0미만이 되진 않게 하세요)

 

★ 잠깐! 풀기 전에 생각하기

이건 재미있어서 해보고 싶었다. 추억 회상 겸 부족하지만 배운 내용으로 만들어 낼 수 있을까?

 

class PocketMon:
	# 포켓몬 도감을 만들어 줬다. 생성된 포켓몬 리스트
    pocketmon = []
    
    # 이름, hp, 레벨을 속성으로 가져온다.
    def __init__(self, name, hp=100, level=1):
        self.name = name
        self.hp = hp
        self.level = level
        PocketMon.pocketmon.append(self) # 이렇게 구성이 될까?

	# 휴식 메서드 제작
    def sleep(self):
        self.hp = 100

	# 공격 메서드 제작(어렵다.. 포켓몬 이름을 넣으면 작동하게 하고 싶은데...)
    def body_attack(self, enemy):
        # enemy = random.choice(pocketmon)

        enemy.hp -= self.level*10
        print(f'{enemy.name}의 피가 {enemy.hp}가 되었다.')
        if enemy.hp <= 0:
            enemy.hp = 100
            print(f'상대의 피가 모두 소진되었다.')
            self.level += 1
            print(f'level이 {self.level}로 올랐다.')

p1 = PocketMon('파이리')
p2 = PocketMon('꼬부기')
p1.body_attack(p2)   # p2 말고 '꼬부기'라고 넣어서는 못 푸나?
p1.body_attack(p2)   #공격
p1.body_attack(p2)   #공격
p1.body_attack(p2)   #공격
p1.body_attack(p2)   #공격 하면서 레벨일 오른다. 공격력도 오른다.

p1.body_attack('꼬부기') 이런 명령어를 하면 꼬부기를 공격하도록 설정하고 싶었는데 방법을 모르겠다....

'꼬부기'를 입력하면 p2의 정보를 가져오게 하고 그걸로 진행하면 될 듯 싶다.

''꼬부기'를 입력하면 p2의 정보를 가져오게 하고' 이부분을 해결하면 될 것 같다.

'잡동사니_코딩' 카테고리의 다른 글

[스펫트럼]UCC영상  (0) 2021.11.26
[ClubChain]UCC 영상  (0) 2021.11.26
[메타Study] UCC 영상  (0) 2021.08.24
[나닮배] 프로젝트 소개 영상  (0) 2021.06.19