파이썬을 이용해서 rpg게임을 만드는 개인 프로젝트가 있어서 어떠한 방식으로 알피지를만들지 고민을 했습니다.
처음에는 1 대 1로 단순히 싸우는 게임을 만들자로 시작을 해서 몬스터를 찾아서 싸우는 던전 방식으로 짜고자 생각을 하고
print('어떤 행동을 취할까?')
print("------------------------")
time.sleep(0.3)
novice.show_user_status()
print(f'상대 {monster.name}의 체력: {monster.hit_point}') if spawn else False
time.sleep(0.4)
print('1. 일반공격 2. 특수공격') if spawn else print('1.몬스터찾기 2.보스랑 싸우기 3.저장하기')
print("------------------------")
action = int(input())
if not spawn:
if action == 1:
monster_spawn = random.randrange(0, len(stage_1_monster_col))
monster = stage_1_monster_col[monster_spawn]
print(f'당신은 {monster.name}을 만났다')
time.sleep(0.5)
spawn = True
if action == 2:
monster = KingSlime()
print(f'당신은 {monster.name}을 만났다!')
time.sleep(0.5)
spawn = True
elif spawn:
if action == 1:
novice.normal_attack(monster)
user_turn = True
elif action == 2:
print('어떤 스킬을 사용할까?')
print('1.더블어택 2.힐')
specialattack = int(input())-1
try:
attacktype[specialattack]()
user_turn = True
except:
pass
else:
pass
이런 방식으로 코드를 짜게되었습니다
monster의 spawn값을 기준으로 나오는 코드가 다르게 하고 나오는 조건도 다르게 하여서
spawn이 안되어있을때는 몬스터를 찾고 spawn이 되어있을떄에는 몬스터를 공격하는 방식을 취했습니다
def normal_attack(self,enemy):
dmg_percentage = random.uniform(0.8,1.2)
dmg=round(self.attack_power*dmg_percentage)
enemy.hit_point -= dmg
print(f'{self.name}의 공격!')
print(f'{enemy.name}에게 {dmg}의 데미지')
time.sleep(0.7)
enemy.check_status()
일반 공격의 경우에는 random.uniform을 통해서 0.8배에서 1.2배의 데미지를 랜덤으로 주게 구현을 하였고 공격후에
check status를 통해 몬스터가 죽었는지 살았는지 확인할수있는 방식을 선택해서 했습니다
def level_up(self):
self.level+=1
self.experience -= self.max_experience
self.max_experience = self.max_experience*2
self.max_hit_point += 10
self.hit_point = self.max_hit_point
self.max_magic_point += 10
self.magic_point = self.max_magic_point
self.attack_power += int(self.attack_power*0.1)
self.magic_power += int(self.magic_power*0.1)
print(f'당신의 레벨이 {self.level}이 되었습니다')
time.sleep(0.2)
print(f'당신의 체력이 전부 회복되었습니다')
time.sleep(0.4)
if self.experience>self.max_experience:
self.level_up()
또 레벨업을 구현하고싶어서 이런방식을 취했었는데 코드를 이렇게 안해도 할수있는 방법이 있었을거 같아서 조금 아쉬웠습니다
그리고 만약에 얻은 경험치가 최대 경험치가 많을 경우에 재귀를 통해 레벨업을 여러번 할수있게 구현했습니다!
'내일배움 캠프 > TIL' 카테고리의 다른 글
2023 03 29 코딩테스트 최빈값 구하기 (0) | 2023.03.31 |
---|---|
2023 03 28 파이썬 rpg 저장 구현,,, (0) | 2023.03.29 |
2023 03 24 재귀 함수를 이용해서 복리 구하기 (0) | 2023.03.24 |
2023 03 23 코딩 테스트 소수 찾기 (0) | 2023.03.23 |
2023 03 22 코딩 테스트를 하면서 새로 배운것들... (0) | 2023.03.22 |