Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 35 additions & 8 deletions new.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,15 +21,19 @@ def show_status(self):
print(f"{self.name}의 상태: HP {self.hp}/{self.max_hp}, 파워 {self.power}")

class Monster(Character):
def __init__(self, name, hp, power):
super().__init__(name, hp, power) # 빵틀
def __init__(self, name, hp, power, give_exp=100): # give_exp값은 몬스터가 죽었을 때 반환하는 경험치 값.
self.give_exp = give_exp #몬스터가 죽고 내뱉을 경험치
super().__init__(name, hp, power)


class Player(Character):
def __init__(self, name, hp, power, mp, mpower):
self.max_mp = mp
self.mp = mp
self.mpower = mpower
self.exp = 0 #현재 가지고 있는 경험치
self.lvl = 1 #레벨
self.max_exp = 100 #맥스 경험치
super().__init__(name, hp, power)

def magic_atk(self, other):
Expand All @@ -40,18 +44,36 @@ def magic_atk(self, other):
if other.hp == 0:
print(f"{other.name}이(가) 쓰러졌습니다.")

def kill_monster(self, other): #몬스터가 죽으면 플레이어가 경험치를 얻을 수 있게 하는 함수
self.exp += other.give_exp #self를 플레이어로 생각 other를 monster로 생각

def level_up(self):
if self.exp == self.max_exp:
self.lvl += 1
self.max_exp *= 2 #레벨업 할때마다 필요경헙치 2배
self.exp = 0
tmp_power = self.power # 상승량을 알기 위해 기존 파워 저장.
tmp_mpower = self.mpower
self.power *= 2
self.mpower *= 2
print(f"{self.name}이 {self.lvl}로 레벨업!\n공격력이 {tmp_power}에서 {self.power}로\n마법 공격력이 {tmp_mpower}에서 {self.mpower}로 증가하였다!")

#pair programming:
# 몬스터 사냥 성공시 보상에 따른 게임 진행이 되어야 합니다. 구현상 특징: 1. 플레이어 레벨업의 조건과 상태를 출력. 2. 1의 상태가 게임진행에 계속 반영 될 수 있도록 한다.
#------------------------------------------------------------------------------------------------------------------------------------------------------------

# 랜덤한 name과 랜덤한 스탯으로 monster 객체를 생성하는 코드
#
name = ['식물','곤충','야수','수인','악마','언데드','흡혈귀']
# name = ['식물','곤충','야수','수인','악마','언데드','흡혈귀']

print("네팔렘이여 그대의 이름은 무엇입니까")
nephalem = input()
monster = Monster('monster', 100, 10) #
monster = Monster('monster', 100, 10)
player = Player(nephalem, 100, 10, 100, 10) # nephalem 변수로 지정

while 'game':
command = input('일반공격 마법공격 : ') # command의 순서가 중요하다 맨앞에 돌아오게

print(f'{player.power}기존 파워')

if command == '일반공격': #
player.attack(monster)
monster.attack(player)
Expand All @@ -66,12 +88,17 @@ def magic_atk(self, other):

if monster.hp <= 0:
print(f"{monster.name}이(가) 죽었습니다. 승리")
monster = Monster('디아블로'+name[random.randint(0, 6)],
random.randint(10, 200), random.randint(10, 20))
player.kill_monster(monster)
# monster = Monster('디아블로'+name[random.randint(0, 6)],
# random.randint(10, 200), random.randint(10, 20))

elif player.hp <= 0:
print(f"{player.name}이(가) 죽었습니다. 게임 패배")
break

player.level_up()
if player.lvl == 2:
print(f'{player.power}현재 파워')

# 3. 종료 조건(승리or패배)
# 승리의 조건
Expand Down