Я нахожусь в процессе создания RPG-игры в Python. Я делал разные уроки, но у меня проблемы с одним из типов врагов. Это паук, и, чтобы оживить ситуацию, я попытался заставить паука делать точки (урон со временем). Урон от яда не гарантирован, но когда он отравляет вас, он складывается. Это мой родительский класс (враг):
class Enemy():
def __init__(self, number_of, name):
self.number_of = int(number_of)
self.name = name
self.hp = 20 * self.number_of
self.dmg = 2 * self.number_of
def attack(self):
print(f"you now have {round(class1.hp)} health" + "\n")
def appearing(self):
if self.number_of > 1:
print (f"{self.number_of} {self.name}s have appeared")
else:
print(f"A {self.name} has appeared")
print (f"They have {self.hp} health")
Примечание: class1 - это игрок
Это мой класс пауков:
class Spider(Enemy):
posion_dmg = 0
def __init__(self, number_of, name):
Enemy.__init__(self, number_of, name)
self.posion_dmg = 0
def attack(self,player):
if self.posion_dmg > 0:
dot = 2 ** (self.poison_dmg + 1)
player.hp -= dot
print ("you are posioned" + "\n")
print (f"it deals {round(dot)} damage")
dmg = random.uniform(1.2 * self.dmg, 1.8* self.dmg)
player.hp -= dmg
print ("The spider(s) bite(s) you. ")
print(f"It deals {round(dmg)} damage")
if randint(1,4) == 1:
self.poison_dmg += 1
if self.number_of == 1:
print ("The spider poisons you")
else:
print ("The spiders poison you")
return Enemy.attack(self)
def appearing(self):
print ("*Spiders have a chance to hit you with poison that deals damage over time - this stack exponentially*")
return Enemy.appearing(self)
Когда я go в бою со пауком, а randint равен 1, он говорит, что у «Паука» нет атрибута «toxic_dmg», но я сделал его атрибутом, верно?