использование переменных из классов в других классах - python - PullRequest
1 голос
/ 07 января 2020

Я пытаюсь сделать небольшую текстовую RPG-игру, но решил сделать ее немного сложнее, чем просто текстовую. Я создал класс для одного из классов, который вы можете выбрать (маг), а затем класс для врага (или c). В настоящее время у меня много проблем с ним, и я просто не могу понять, как это исправить, как использовать статистику (атрибуты) из моего класса игрока в классе или c. Я хочу, чтобы или c (s) повредил игрока, и наоборот, но я не могу использовать player.hp в классе или c. Я пытался сделать разные вещи глобальными, но он просто сказал, что экземпляр использовался ранее, поэтому это было невозможно.

Это два моих класса для мага и или c:

class Mage():
    def __init__(self,name):
        self.name = name
        self.hp = 100
        self.mana = 200
        self.spellpower = 1
    def fireball(self, enemy):
        dmg = randint(10 * self.spellpower,12*1.2*self.spellpower)
        dot = randint(0.5 * self.spellpower, 1.5* self.spellpower)
        self.mana -= 20
        enemy.hp -= dmg
    def attack(self, enemy):
        print(f"you have attacked {enemy}")
        fight = True
        return fight
    def flee(self,enemy):
        num = randint(1,2)
        if num == 1:
            fight = False
            print("you have succesfully fled")
            return fight
        else:
            print(f"You failed to flee. The {enemy} attacks you")
            fight = True
            attack_first = "enemyflee"
            return fight, attack_first

class Orc():
    def __init__(self, number_of):
        self.number_of = int(number_of)
        self.name = "Orc"
        self.hp = 20 * self.number_of
        self.dmg = 5 * self.number_of
    def hit(self, player):
        dmg = randint(4 * self.dmg, 6* self.dmg)
        player.hp -= dmg
        print ("The orc(s) hit(s) you")
    def appearing(self):
        if self.number_of > 1:
            print (f"{self.number_of} Orcs have appeared")
        else:
            print(f"{self.number_of} orc has appeared")

И это часть моего класса, где я пытаюсь использовать классы для создания или c напасть на меня (игрок в настоящее время называется class1 и называется или c mineorc1):

    while fight:
        if attack_first == "enemyflee":
            turn = "enemy"
        else:
            if attack_first() == "enemy":
                turn = "enemy"
            else:
                turn = "player"
        if turn == "enemy":
            mineorc1.hit(class1)

Я вижу, как это может сбить с толку без всего кода, но, надеюсь, вы может помочь мне:)

...