Я пытаюсь сделать небольшую текстовую 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)
Я вижу, как это может сбить с толку без всего кода, но, надеюсь, вы может помочь мне:)