-
[파이썬/Python] 텍스트 RPG(5): 전투3 - 엑조디아식 전투깜빡의 취미/파이썬을 합니다. 2021. 10. 17. 23:57728x90
# 출력 화면은 모두 Pycharm을 이용했습니다.
이 글이 완료될 즈음 여러분은 가장 기초적인 형태의 턴제 RPG를 만들어볼 수 있을 것이다. 물론 가장 기초적인 형태라 실제 그래픽 구현 등은
거의되어 있지 않다. 그래도 파이썬으로 무언가 해보고 싶은데 무엇부터 해야 할지 모르겠어 막막한 초심자라면, 한 번쯤 도전해볼 만하다.앞선 글에서부터 계속 전투를 다루고 있다. 게임은 일정 분량 이상은 되어야 할 맛이 나고, 그렇다고 턴제 전투가 매번 같은 형식으로 반복되면 재미가 없으니 형식을 조금씩 변형한 전투를 소개해 드리는 것이 도움이 되리라 믿는다.
처음 소개해드린 전투는 가장 기본적인 턴제 전투로, 둘 중 한쪽의 체력이 바닥나면 끝나는 방식이었다.
바로 지난 시간에는 특정 턴 내에 끝내야 하는 전투에 관하여 짧게 다루었다.
세 번째 전투를 어떻게 소개해드리면 좋을까 고민하다 '엑조디아식 전투'라 이름 붙여보았다. 유 x황이라는 카드게임에 대해 들어보셨다면, 사지와 몸뚱이를 붙이면 게임에서 그냥 승리하는 희대의 사기카드 '엑조디아'에 대해서도 들어보셨을 것이다.
이 전투는 기본적으로 양쪽의 HP가 다 떨어지면 끝나게 된다. 하지만 이번에 소개해드릴 전투에는 적의 스킬이 특별하다. 2번의 기가 모이면 높은 대미지를 주고, 3번의 기가 모이면 자동적으로 전투에서 패배하게 된다.
복잡하게 생각할 것 없이 바로 설명해보겠다.
기본 세팅
언제나 그렇듯 상대의 정보를 작성해 주어야 한다.
체력1 = 체력 print(f"검성 XXX와의 전투. {나}는 가볍계 목례했다.") 적체력 = 160 print(f"상대방의 체력 {적체력}") 적방어력 = 0 적공격력 = 10 적기 = 0 적정신력 = 15
따로 다른 부분은 없으므로 코드만 소개하고 다음으로 넘어가겠다.
플레이어의 공격 패턴
while 체력 > 0 or 적체력 > 0: print(f"\n{나}의 턴!!!!") time.sleep(1) N = input("q)공격 w)방어 e)스킬 r)도망간다\n") if N == "q": print(f"삽을 치켜 든 {나}, 후려쳤다.") 공격력1 = random.choice([1, 2, 3, 5, 8]) + 공격력 if 공격력1 - 적방어력 <= 0: print("공격은 완전히 복부로 흡수돼 방어됐다...") 적방어력 -= 공격력1 else: 적체력 -= (공격력1 - 적방어력) print(f"상대방의 남은 체력 = {적체력}") 적방어력 = 0 elif N == "w": 방어력 += 5 + 정신력 print(f'{나}은 덜 아프게 맞을 자세를 취했다 방어도가 {방어력}가 되었다') elif N == "e": 기 += 1 print("기~") if 기 == 2: print(f"방독면 속에 왠지 모르게 들어 있던 쇠구슬을 던진 {나}. 큰 피해를 줬다!") 적체력 -= 정신력 + random.choice([10, 15, 20, 25, 30]) print(f"상대방의 남은 체력 = {적체력}") 기 = 0 elif N == "r": escape = random.random() if escape < 운/10: print(f"{나}는 군인의 본분을 져버리고 도망갔다... \n무언가 업보가 쌓이는 듯한 느낌이 든다...") 도주 += 1 break else: print("도망에 실패했다!!!") if 적체력 <= 0: break
나머지 부분은 이미 지난 전투들에서 설명했기 때문에 따로 소개하지 않는다. 참고로 time.sleep(1)은 위의 print문과 아래의 input문 사이에 1초의 간격을 준다. 다시 말하면, 꼭 필요하지는 않다.
적의 공격 패턴
적의 공격 패턴은 앞선 전투와 약간 다르다. 차이점을 중심으로 설명해 본다.
N = random.randrange(1, 4) print("\n상대의 턴!!!") time.sleep(1) if N == 1: 적공격력1 = random.choice([1, 2, 3, 5, 8]) + 적공격력 if 적공격력1 - 방어력 <= 0: print("공격은 완전히 복부로 흡수돼 방어됐따 ^^7") 방어력 -= 적공격력1 else: 체력 -= (적공격력1 - 방어력) print("상대의 공격!") print(f"{나}의 남은 체력 = {체력}") 방어력 = 0 elif N == 2: 적방어력 += 5 + 적정신력 print(f'상대는 덜 아프게 맞을 자세를 취했다 방어도가 {적방어력}가 되었다') elif N == 3: 적기 += 1 print("기~") if 적기 == 1: print("검을 건네받은 아저씨. 엄숙한 표정을 짓는다.") elif 적기 == 2: print("심상치 않은 기운이 몰아치고 있다. 소드마스터의 기운이 느껴진다. 풍압으로 인해 데미지를 받습니다.") 체력 -= int(체력/2) print(f"{나}의 남은 체력 = {체력}") print(f"{나}: 저게 진짜 검성의 검... 예기만으로 베여버리는 기분이... 아니, 손가락에 왠 피가...?") elif 적기 == 3: print("아아 이 서늘하고도 묵직한 시동의 감각, 2년 만이야.\n소드마스터의 발도는 눈에 보이지도 않았다.") print("눈앞이 깜깜해졌다. \ntip: 스킬이 3번 모이면 죽는다. 빠른 마무리가 필요하다.") Count = input("다시 하시겠습니까? q: 다시 한다. w: 다시 한다. e: 다시 한다.\n... ") if Count != "지금은없어나중은몰라도.": t = 4 while t >= 1: t = t - 1 time.sleep(1) print(f"로딩까지 {t}초") 적기 = 0 기 = 0 체력 = 체력1 적체력 = 160 방어력 = 0 적방어력 = 0 continue if 체력 <= 0: print("눈앞이 깜깜해졌다") print("\ntip: 스킬이 3번 모이면 죽는다. 빠른 마무리가 필요하다.") Count = input("다시 하시겠습니까? q: 다시 한다. w: 다시 한다. e: 다시 한다.\n... ") if Count != "지금은없어나중은몰라도.": t = 4 while t >= 1: t = t - 1 time.sleep(1) print(f"로딩까지 {t}초") 체력 = 체력1 적체력 = 160 continue
elif N == 3:
기를 모으는 방식이 이전과는 다르다. '엑조디아'의 핵심은 조건이 충족되면 필패하게 되는 것이다.
적기 += 1
print("기~")
if 적기 == 1:
print("검을 건네받은 아저씨. 엄숙한 표정을 짓는다.")기를 처음 모으면 대사만 있고, 특별한 효과는 없다. 앞선 전투와 동일하다.
elif 적기 == 2:
print("심상치 않은 기운이 몰아치고 있다. 소드마스터의 기운이 느껴진다. 풍압으로 인해 대미지를 받습니다.")
체력 -= int(체력/2)기를 두 번 모으면 강한 데미지를 준다. 체력을 절반 깎는 정도면 충분하다고 생각했다. int함수는 괄호 안의 수를 정수형으로 바꾸어 준다. 이상한 소수점이 나오지 않도록 처리했다.
print(f"{나}의 남은 체력 = {체력}")
print(f"{나}: 저게 진짜 검성의 검... 예기만으로 베여버리는 기분이... 아니, 손가락에 웬 피가...?")극적인 효과를 위해 삽입한 구절이다. 위의 두 문장은 없더라도 코드에 아무런 영향을 주지 않는다.
elif 적기 == 3:
print("아아 이 서늘하고도 묵직한 시동의 감각, 2년 만이야.\n소드마스터의 발도는 눈에 보이지도 않았다.")기가 3번 모이면 극적인 대사 이후 게임이 끝나게 된다. 저장할 수 있는 시스템이 마련되어 있지 않기 때문에, 부득이하게 해당 전투를 다시 시작할 수 있도록 했다.
print("눈앞이 깜깜해졌다. \ntip: 스킬이 3번 모이면 죽는다. 빠른 마무리가 필요하다.")
Count = input("다시 하시겠습니까? q: 다시 한다. w: 다시 한다. e: 다시 한다.\n... ")
if Count != "지금은없어나중은몰라도.":
t = 4
while t >= 1:
t = t - 1
time.sleep(1)
print(f"로딩까지 {t}초")
적기 = 0
기 = 0
체력 = 체력1
적체력 = 160
방어력 = 0
적방어력 = 0
continue다시 시작할 때 변동되었던 스텟을 꼭 초기화해주자.
if 체력 <= 0:앞서 말씀드렸듯, 이 전투는 일반 전투와 동일하게 체력이 0이 되어도 전투에서 지게 된다. 이 경우에도 위와 같이 재시작해주면 된다. continue의 위치는 각각의 while문 안에 들어가도록 설정하면 된다. 위와 아래의 continue문 위치를 확인하자.
print("눈앞이 깜깜해졌다")
print("\ntip: 스킬이 3번 모이면 죽는다. 빠른 마무리가 필요하다.")
Count = input("다시 하시겠습니까? q: 다시 한다. w: 다시 한다. e: 다시 한다.\n... ")
if Count != "지금은없어나중은몰라도.":
t = 4
while t >= 1:
t = t - 1
time.sleep(1)
print(f"로딩까지 {t}초")적기 = 0
기 = 0
체력 = 체력1
적체력 = 160
방어력 = 0
적방어력 = 0
체력 = 체력1
적체력 = 160
continue
이 식이 끝나면
전투가 끝나면 바로 전 시간에 올렸던 스텟 배분 식을 이용하면 된다. 자연스럽게 다음으로 이어질 수 있다.
이번 시간에는 끝으로 기가 모여 지게 되는 과정을 보여드린다.
정말 마지막으로, 지금까지 완성된 전체 코드를 보여드린다. 전투가 끝나고 나면 스텟 분배를 할 수 있도록 했다.
# 390줄 넘게 나와서 글 마무리를 우선 하겠습니다. 궁금하신 분들은 아래의 코드를 구경해 주시면 되겠습니다.
저 포함 두 명이서 식을 짜고 고민하면서 알아낸 사실들, 그리고 그렇게 해서 나온 결과물을 최대한 자세하게 설명드리고 싶었습니다. 이번에도 분량 조절에 실패해 버렸네요...ㅎㅎ 이 글을 통해 조금이나마 기초 개념의 사용 선택지를 늘려 가신다면 좋겠습니다. 방문 감사합니다~ 구독 공감도 감사히 받고 있습니다!(꾸벅)
반복적으로 등장하는 개념들은 백준 단계별로 풀어보기나 파이썬 기초에도 많이 사용되는 것들이니, 복습하신다는 마음으로 한 번씩 검토해 보시면 좋겠습니다. 시간이 지나면서 기존에 설명드렸던 내용은 조금씩 빼놓고 글을 써 내려갈 수 있는데, 혹시 불친절한 방식이라고 느껴진다면 주저 없이! 댓글 남겨주세요~ 다시 한번 들러주셔서 감사합니다!
반응형import random import time print("당신의 이름을 선택하세요.") 나 = input() # 전투 시 실제로 적용되는 요소들 기초체력 = 75 방어력 = 0 공격력 = 0 # 전투력: 공격력, 체력 상승 / 정신력: 방어력, 스킬 강해짐 / 운: 도주 확률 증가 전투력 = 0 정신력 = 0 운 = 0 # 기: 스킬을 위해 필요 / 도주: 보스를 위한 숨겨진 요소 기 = 0 도주 = 0 while 1: 전투력 = random.randrange(5, 11) 체력 = 기초체력 + 전투력*1 공격력 = 전투력 정신력 = random.randrange(1, 6) 운 = random.randrange(1, 6) print(f"전투력 = {전투력}, 국방력= {정신력}, 열외력={운}") print("다시 하겠습니까: a = 네, b = 아니오") A = input() if A == "a": continue if A == "b": print("\n정말 결정하셨습까?: a = 네, b = 아니오") B = input() if B == "b": continue elif B == "a": print("\n결정되었습니다.") print(f""" [스테이터스] 이름 = {나} 직업 = 훈련병 체력= {체력} 전투력 = {전투력} 국방력 = {정신력} 열외력 = {운}""") break input(f"\n{나}: 뭐야? 왜 이렇게 조용해?") input(f"\n거울 속의 {나}: 뭐긴, 시작한 거지. 이번엔 이런 몸인가? 슬슬 나가자 좀.") input(f"\n{나}: 거울 속에서 말이? 아니 그럼 훈련병 괴담이 전부 사실이었단 말이야?") input(f"\n거울 속의 {나}: 뭐... 그건 잘 모르겠고. 일단 좀 맞자.") input(f"\n{나}: ???") 적체력 = 50 적방어력 = 0 적공격력 = 7 적기 = 0 적정신력 = 0 print(f"거울 속 {나}의 체력: {적체력}") 체력1 = 체력 while 1: #주인공의 행동 패턴 print(f"\n{나}의 턴!!!!") time.sleep(1) N = input("q)공격 w)방어 e)스킬 r)도망간다\n") if N == "q": print(f"{나}은/는 잽을 두 번 날렸다.") 공격력1 = 공격력 + random.choice([1, 2, 3, 5, 8]) if 공격력1 - 적방어력 <= 0: print("공격은 완전히 복부로 흡수돼 방어됐다...") 적방어력 -= 공격력1 else: 적체력 -= (공격력1 - 적방어력) print(f"상대방의 남은 체력 = {적체력}") 적방어력 = 0 elif N == "w": 방어력 += 5 + 정신력 print(f'{나}은 덜 아프게 맞을 자세를 취했다 방어도가 {방어력}가 되었다') elif N == "e": 기 += 1 print("기~") if 기 == 2: print(f"{나}의 어퍼컷!") 적체력 -= 정신력 + random.choice([10, 15, 20, 25, 30]) print(f"상대방의 남은 체력 = {적체력}") 기 = 0 elif N == "r": escape = random.random() if escape < 운/10: print(f"{나}는 군인의 본분을 져버리고 도망갔다... \n무언가 업보가 쌓이는 듯한 느낌이 든다...") 도주 += 1 break else: print("도망에 실패했다!!!") if 적체력 <= 0: print(f"거울 속의 {나}: 쳇, 이번에도 글렀나.") break #적의 행동 패턴 N = random.randrange(1, 4) print("\n상대의 턴!!!") time.sleep(1) if N == 1: 적공격력1 = 적공격력 + random.choice([1, 2, 3, 5, 8]) if 적공격력1 - 방어력 <= 0: print("공격은 완전히 복부로 흡수돼 방어됐따 ^^7") 방어력 -= 적공격력1 else: print("상대는 잽을 두 번 날렸다.") 체력 -= (적공격력1 - 방어력) print(f"{나}의 남은 체력 = {체력}") 방어력 = 0 elif N == 2: 적방어력 += 5 + 적정신력 print(f'상대는 덜 아프게 맞을 자세를 취했다 방어도가 {적방어력}가 되었다') elif N == 3: 적기 += 1 print("기~") if 적기 == 2: print("상대의 어퍼컷!") 체력 -= 적정신력 + random.choice([10, 15, 20, 25, 30]) print(f"{나}의 남은 체력 = {체력}") 적기 = 0 if 체력 <= 0: print("눈앞이 깜깜해졌다") print("\ntip: 이걸 지다니... 지나가던 개(발자)가 웃겠다.") Count = input("다시 하시겠습니까? q: 다시 한다. w: 다시 한다. e: 다시 한다.\n... ") if Count != "이걸맞추면당신은천재": t = 4 while t >= 1: t = t - 1 time.sleep(1) print(f"로딩까지 {t}초") 체력 = 체력1 적체력 = 50 적방어력 = 0 방어력 = 0 continue 체력 = 체력1 방어력 = 0 스킬포인트 = 3 while 스킬포인트 > 0: print('\n하나 고르시오. q: 전투력 (공격력 상승 / 체력 상승) w: 국방력 (방어력 상승 / 스킬 상승) e: 열외력 (도주 확률 증가)') N = input('당신의 선택은? ... ') if N == "q": 전투력1 = 전투력 체력1 = 체력 전투력 += random.choice([1,2,3]) 공격력 = 전투력 체력 += (전투력 - 전투력1)*5 print(f"\n전투력이 {전투력 - 전투력1} 만큼 올라 {전투력}(이/가) 되었다. 체력이 {체력 - 체력1}만큼 올라 {체력}(이/가) 되었다.") 스킬포인트 -= 1 elif N == "w": 정신력1 = 정신력 정신력 += random.choice([1,2,3]) print(f"\n국방력이 {정신력 - 정신력1} 만큼 올라 {정신력}(이/가) 되었다.") 스킬포인트 -= 1 elif N == "e": 운1 = 운 운 += random.choice([1,2,3]) print(f"\n열외력이 {운 - 운1} 만큼 올라 {운}(이/가) 되었다.") 스킬포인트 -= 1 print("고라니: 꾸엥에에에에ㅔ에ㅔ엑") input(f"\n{나}: 저건 또 뭐야.") input("\n고라니: 꿰에에에에엑...에에엑...엑...에에엑...") input(f"\n{나}: 뭐야 왜 고라니가 두 발로 서? 어? 어?") input("\n고라니: 열 턴. 그 안에 슈슉 슉 날 슈슉 쓰러뜨리지 슉 못하면 넌 슉 슈슉 슈슈슉 죽는다.") input(f"\n{나}: 이젠 모르겠다. 덤벼.") # [적2] 고라니 체력1 = 체력 print(f"삽을 치켜든 {나}와, 3대 800은 칠 것 같은 순한 외모의 고라니와의 전투!") 적체력 = 100 print(f"상대방의 체력 {적체력}") 적방어력 = 0 적공격력 = 0 적기 = 0 적정신력 = 20 turn = 0 while 1: print(f"\n{나}의 턴!!!!") time.sleep(1) N = input("q)공격 w)방어 e)스킬 r)도망간다\n") if N == "q": print(f"삽을 치켜 든 {나}, 후려쳤다.") 공격력1 = random.choice([1, 2, 3, 5, 8]) + 공격력 if 공격력1 - 적방어력 <= 0: print("공격은 완전히 복부로 흡수돼 방어됐다...") 적방어력 -= 공격력1 else: 적체력 -= (공격력1 - 방어력) print(f"상대방의 남은 체력 = {적체력}") 적방어력 = 0 elif N == "w": 방어력 += 5 + 정신력 print(f'{나}은 덜 아프게 맞을 자세를 취했다 방어도가 {방어력}가 되었다') elif N == "e": 기 += 1 print("기~") if 기 == 2: print(f"방독면 속에 왠지 모르게 들어 있던 쇠구슬을 던진 {나}. 큰 피해를 줬다!") 적체력 -= 정신력 + random.choice([10, 15, 20, 25, 30]) print(f"상대방의 남은 체력 = {적체력}") 기 = 0 elif N == "r": escape = random.random() if escape < 운/10: print(f"{나}는 군인의 본분을 져버리고 도망갔다... \n무언가 업보가 쌓이는 듯한 느낌이 든다...") 도주 += 1 break else: print("도망에 실패했다!!!") #상대의 공격 패턴 if 적체력 <= 0: print(f"{나}: 성공했나?") break print("\n상대의 턴!!!") turn += 1 print(f"{turn}번째 차례가 되었다. 분발하도록.") if turn >= 10: print("끝내지 못하다니, 더 이상 고라니의 힘을 감당할 수 없다.\n눈앞이 깜깜해졌다.\n\ntip: 공격공격공격공격") Count = input("다시 하시겠습니까? q: 다시 한다. w: 다시 한다. e: 다시 한다.\n... ") if Count != "블록블록님감사합니다.": t = 4 while t >= 1: t = t - 1 time.sleep(1) print(f"로딩까지 {t}초") turn = 0 체력 = 체력1 적체력 = 100 방어력 = 0 적방어력 = 0 continue time.sleep(1) N = random.randrange(1, 4) if N == 1: print(f"고라니는 째려봤다. \n 고라니: (째릿) \n {나}: 어쩌라고. 내 뒤에 계신 분이 더 무섭다구...") elif N == 2: 적방어력 += 5 + 적정신력 print(f'상대는 덜 아프게 맞을 자세를 취했다 방어도가 {적방어력}가 되었다') print(f"{나}의 공격!") elif N == 3: 적기 += 1 print("고라니가 포효를 모으고 있다") if 적기 == 2: print("고라니의 괴횕뢱ㅇ괴힉욒기 정신이 혼미해진다") turn += 1 print(f"{나}는 기절했다. 정신을 차리고 보니 어느새 한 턴이 지나 있다... \n 지난 턴 = {turn}") 적기 = 0 체력 = 체력1 방어력 = 0 스킬포인트 = 3 while 스킬포인트 > 0: print('\n하나 고르시오. q: 전투력 (공격력 상승 / 체력 상승) w: 국방력 (방어력 상승 / 스킬 상승) e: 열외력 (도주 확률 증가)') N = input('당신의 선택은? ... ') if N == "q": 전투력1 = 전투력 체력1 = 체력 전투력 += random.choice([1,2,3]) 공격력 = 전투력 체력 += (전투력 - 전투력1)*5 print(f"\n전투력이 {전투력 - 전투력1} 만큼 올라 {전투력}(이/가) 되었다. 체력이 {체력 - 체력1}만큼 올라 {체력}(이/가) 되었다.") 스킬포인트 -= 1 elif N == "w": 정신력1 = 정신력 정신력 += random.choice([1,2,3]) print(f"\n국방력이 {정신력 - 정신력1} 만큼 올라 {정신력}(이/가) 되었다.") 스킬포인트 -= 1 elif N == "e": 운1 = 운 운 += random.choice([1,2,3]) print(f"\n열외력이 {운 - 운1} 만큼 올라 {운}(이/가) 되었다.") 스킬포인트 -= 1 # PX 아저씨와의 대화 input(f"\n{나}: 어? 아저씨는 누구세요?") input("\nPX 아저씨: 아직 훈련병 찌끄레기라 나를 볼 일은 없구나. 만일 네가 이 곳에서 실패하고 훈련병 시절을 그저 그렇게 보내면, 곧 가게 될 GOP에서 만날 수 있는 황금마차 아저씨란다.") input(f"\n{나}: GOP라니!!!!!!!! 내가... GOP라니!!!") input("\nPX 아저씨: (혼잣말) 그 놈이 또 경고문을 안 적어 놓은 모양이군... 정말 악취미라니까.") input(" 어쨌든, 일단 나랑 만난 이상 멀쩡히 살아 돌아가긴 글렀구나.") #길동이 아저씨 스텟 체력1 = 체력 print(f"검성 XXX와의 전투. {나}는 가볍계 목례했다.") 적체력 = 160 print(f"상대방의 체력 {적체력}") 적방어력 = 0 적공격력 = 10 적기 = 0 적정신력 = 15 while 체력 > 0 or 적체력 > 0: #나의 공격패턴 print(f"\n{나}의 턴!!!!") time.sleep(1) N = input("q)공격 w)방어 e)스킬 r)도망간다\n") if N == "q": print(f"삽을 치켜 든 {나}, 후려쳤다.") 공격력1 = random.choice([1, 2, 3, 5, 8]) + 공격력 if 공격력1 - 적방어력 <= 0: print("공격은 완전히 복부로 흡수돼 방어됐다...") 적방어력 -= 공격력1 else: 적체력 -= (공격력1 - 적방어력) print(f"상대방의 남은 체력 = {적체력}") 적방어력 = 0 elif N == "w": 방어력 += 5 + 정신력 print(f'{나}은 덜 아프게 맞을 자세를 취했다 방어도가 {방어력}가 되었다') elif N == "e": 기 += 1 print("기~") if 기 == 2: print(f"방독면 속에 왠지 모르게 들어 있던 쇠구슬을 던진 {나}. 큰 피해를 줬다!") 적체력 -= 정신력 + random.choice([10, 15, 20, 25, 30]) print(f"상대방의 남은 체력 = {적체력}") 기 = 0 elif N == "r": escape = random.random() if escape < 운/10: print(f"{나}는 군인의 본분을 져버리고 도망갔다... \n무언가 업보가 쌓이는 듯한 느낌이 든다...") 도주 += 1 break else: print("도망에 실패했다!!!") if 적체력 <= 0: break #상대의 공격 패턴 N = random.randrange(1, 4) print("\n상대의 턴!!!") time.sleep(1) if N == 1: 적공격력1 = random.choice([1, 2, 3, 5, 8]) + 적공격력 if 적공격력1 - 방어력 <= 0: print("공격은 완전히 복부로 흡수돼 방어됐따 ^^7") 방어력 -= 적공격력1 else: 체력 -= (적공격력1 - 방어력) print("상대의 공격!") print(f"{나}의 남은 체력 = {체력}") 방어력 = 0 elif N == 2: 적방어력 += 5 + 적정신력 print(f'상대는 덜 아프게 맞을 자세를 취했다 방어도가 {적방어력}가 되었다') elif N == 3: 적기 += 1 print("기~") if 적기 == 1: print("검을 건네받은 아저씨. 엄숙한 표정을 짓는다.") elif 적기 == 2: print("심상치 않은 기운이 몰아치고 있다. 소드마스터의 기운이 느껴진다. 풍압으로 인해 데미지를 받습니다.") 체력 -= int(체력/2) print(f"{나}의 남은 체력 = {체력}") print(f"{나}: 저게 진짜 검성의 검... 예기만으로 베여버리는 기분이... 아니, 손가락에 왠 피가...?") elif 적기 == 3: print("아아 이 서늘하고도 묵직한 시동의 감각, 2년 만이야.\n소드마스터의 발도는 눈에 보이지도 않았다.") print("눈앞이 깜깜해졌다. \ntip: 스킬이 3번 모이면 죽는다. 빠른 마무리가 필요하다.") Count = input("다시 하시겠습니까? q: 다시 한다. w: 다시 한다. e: 다시 한다.\n... ") if Count != "지금은없어나중은몰라도.": t = 4 while t >= 1: t = t - 1 time.sleep(1) print(f"로딩까지 {t}초") 적기 = 0 기 = 0 체력 = 체력1 적체력 = 160 방어력 = 0 적방어력 = 0 continue if 체력 <= 0: print("눈앞이 깜깜해졌다") print("\ntip: 스킬이 3번 모이면 죽는다. 빠른 마무리가 필요하다.") Count = input("다시 하시겠습니까? q: 다시 한다. w: 다시 한다. e: 다시 한다.\n... ") if Count != "지금은없어나중은몰라도.": t = 4 while t >= 1: t = t - 1 time.sleep(1) print(f"로딩까지 {t}초") 적기 = 0 기 = 0 체력 = 체력1 적체력 = 160 방어력 = 0 적방어력 = 0 continue
'깜빡의 취미 > 파이썬을 합니다.' 카테고리의 다른 글
[파이썬/Python] 텍스트 RPG(4): 슈슉 슉 고라니 전투 (0) 2021.10.10 [파이썬/Python] 텍스트 RPG(3): 스텟 분배 (2) 2021.10.03 [파이썬/Python] 텍스트 RPG(2): 튜토리얼(= 첫 전투) (4) 2021.09.26 [파이썬/Python] 텍스트 RPG(1): 이름, 기본 스텟 (0) 2021.09.19 [파이썬/Python] 백준 8393번(합) 단계별로 풀어보기 + ['+=' 에 관한 조금 더 자세한 설명] (2) 2021.09.12