class활용으로 1:1 턴 게임

seonghyeon·2021년 12월 23일
0

class를 활용하여 워로드, 발탄을 만들고 워로드와 발탄이
1턴씩 번갈아가며 둘중하나가 죽기전까지 게임을 진행하는 코드
기존에 했던 다른 것보다 게임하는 느낌이라서 훨씬 쉬웠음

1vs3 까지 만들엇는데

그냥 똑같이 복붙느낌으로 몬스터행동을 랜덤으로 실행하는 코드를 작성해놓고보니
1vs3 이아닌 1vs 10 이상만 되어도 매우 비효율적일거라 생각해서 차후 다른 방식으로

반복문으로 효율적이게 구성해볼 예정

import random



class unit():
    hp = None
    normal_dmg = None
    name = None

    def attack(self, enemy):
        print(f'{self.name}가 {enemy.name}를 공격!')
        return enemy.hp - self.normal_dmg

class Warload(unit):
    hp = 200
    normal_dmg = 20
    bash_dmg = 40
    name = '워로드'

    def bash(self, enemy):
        print("읏~차!")
        print(f'{self.name}가 {enemy.name} 에게 40의 데미지!')
        return enemy.hp - self.bash_dmg
    def drink_potion(self):
        print(f'{self.name}회복회복 + 10')
        return self.hp + 10

class Baltan(unit):
    hp = 100
    normal_dmg = 30
    hard_atk_dmg = 50
    name = '발탄'

    def hard_atk(self, enemy):
        print("으읏~차!")
        print(f'{self.name}가 {enemy.name} 에게 50의 데미지!')

        return enemy.hp - self.hard_atk_dmg

    def drink_potion(self):
        print(f'{self.name} 회복회복 + 10')
        return self.hp + 10
    
    def wait(self):
        print(f'{self.name}이 대기합니다')




turn = random.randint ( 0 , 1 )


while True:

    print('워로드 체력:',Warload.hp)
    print('발탄 체력:', Baltan.hp)

    if turn == 1:
        a = input('워로드의 행동을 입력해주세요(일반공격,배쉬,체력회복): ')
        if a == '배쉬':
            Baltan.hp = Warload.bash(Warload, Baltan)
            print("발탄의 체력:",Baltan.hp)
            print('턴 종료')
        elif a == '일반공격':
            Baltan.hp = Warload.attack(Warload, Baltan)
            print("발탄의체력",Baltan.hp)
            print('턴 종료')
            
        elif a == '체력회복':
            Warload.hp = Warload.drink_potion(Warload)
            print('턴 종료')
        else :
            print('다시입력해주세요')
            continue
        turn -= 1

    else :
        b = random.randint (1 , 3)
        if b == 1:
            Warload.hp = Baltan.attack(Baltan, Warload)
            print("워로드의 체력:", Warload.hp)
            print('턴 종료')
        elif b == 2:
            Warload.hp = Baltan.hard_atk(Baltan, Warload)
            print("워로드의 체력:", Warload.hp)
            print('턴 종료')
        elif b == 3:
            Baltan.wait(Baltan)
            print('턴 종료')
        turn += 1
    
    if Warload.hp == 0:
        print('워로드 사망')
        break
    if Baltan.hp == 0:
        print('발탄 사망')
        break


0개의 댓글