ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [파이썬/Python] 텍스트 RPG(5): 전투3 - 엑조디아식 전투
    깜빡의 취미/파이썬을 합니다. 2021. 10. 17. 23:57
    728x90

    # 출력 화면은 모두 Pycharm을 이용했습니다.

    이 글이 완료될 즈음 여러분은 가장 기초적인 형태의 턴제 RPG를 만들어볼 수 있을 것이다. 물론 가장 기초적인 형태라 실제 그래픽 구현 등은 거의 되어 있지 않다. 그래도 파이썬으로 무언가 해보고 싶은데 무엇부터 해야 할지 모르겠어 막막한 초심자라면, 한 번쯤 도전해볼 만하다.

    앞선 글에서부터 계속 전투를 다루고 있다. 게임은 일정 분량 이상은 되어야 할 맛이 나고, 그렇다고 턴제 전투가 매번 같은 형식으로 반복되면 재미가 없으니 형식을 조금씩 변형한 전투를 소개해 드리는 것이 도움이 되리라 믿는다. 

     

    처음 소개해드린 전투는 가장 기본적인 턴제 전투로, 둘 중 한쪽의 체력이 바닥나면 끝나는 방식이었다.

     

    [파이썬/Python] 텍스트 RPG(2): 튜토리얼(= 첫 전투)

    # 출력 화면은 모두 Pycharm을 이용했습니다. 이 글이 완료될 즈음 여러분은 가장 기초적인 형태의 턴제 RPG를 만들어볼 수 있을 것이다. 물론 가장 기초적인 형태라 실제 그래픽 구현 등은 거의 되

    ccamppak.tistory.com

    바로 지난 시간에는 특정 턴 내에 끝내야 하는 전투에 관하여 짧게 다루었다.

     

    [파이썬/Python] 텍스트 RPG(4): 슈슉 슉 고라니 전투

    # 출력 화면은 모두 Pycharm을 이용했습니다. 이 글이 완료될 즈음 여러분은 가장 기초적인 형태의 턴제 RPG를 만들어볼 수 있을 것이다. 물론 가장 기초적인 형태라 실제 그래픽 구현 등은 거의  

    ccamppak.tistory.com

     

    세 번째 전투를 어떻게 소개해드리면 좋을까 고민하다 '엑조디아식 전투'라 이름 붙여보았다. 유 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

    댓글

Designed by Tistory.