Hallo Leute, ich bin wirklich neu in Python - oder irgendeine Codierung für diese Angelegenheit! Wie auch immer, ich versuche ein einfaches, textbasiertes RPG-Spiel zu machen, ich bin noch lange nicht am Ende, aber ich habe Probleme beim Erstellen eines Heilsystems. Alles funktioniert, bis ich versuche, den Heilzauber zu verwenden und den Fehler im Titel zurückgibt. Nein, ich weiß irgendwie, was es zu sagen versucht, ist falsch, aber ich habe keine Ahnung, wie ich es beheben soll. Jede Hilfe wird geschätzt, aber denken Sie bitte daran, dass ich ein großer Neuling bin, wenn es um das Codieren geht.AttributeError: 'Person' Objekt hat kein Attribut 'heilen'
Vielen Dank.
from classes.game import Person, bcolors
from classes.magic import Spell
# Create Black Magic
fire = Spell("Fire", 10, 100, "black")
thunder = Spell("Thunder", 10, 100, "black")
blizzard = Spell("Blizzard", 10, 100, "black")
meteor = Spell("Meteor", 20, 200, "black")
quake = Spell("Quake", 14, 140, "black")
# Create White Magic
cure = Spell("Cure", 12, 120, "white")
cura = Spell("Cura", 18, 200, "white")
# Instantiate People
player = Person(460, 65, 60, 34, [fire, thunder, blizzard, meteor, cure, cura])
enemy = Person(1200, 65, 45, 25, [])
running = True
i = 0
print(bcolors.FAIL + bcolors.BOLD + "AN ENEMY ATTACKS!" + bcolors.ENDC)
while running:
print("=================")
player.choose_action()
choice = input("Choose action")
index = int(choice) - 1
if index == 0:
dmg = player.generate_damage()
enemy.take_damage(dmg)
print("You attacked for", dmg, "points of damage.")
elif index == 1:
player.choose_magic()
magic_choice = int(input("Choose magic:")) - 1
spell = player.magic[magic_choice]
magic_dmg = spell.generate_damage()
current_mp = player.get_mp()
if spell.cost > current_mp:
print(bcolors.FAIL + "\nNot enough MP\n" + bcolors.ENDC)
continue
player.reduce_mp(spell.cost)
if spell.type == "white":
player.heal(magic_dmg)
print(bcolors.OKBLUE + "\n" + spell.name + " heals for", str(magic_dmg), "HP." + bcolors.ENDC)
elif spell.type == "black":
enemy.take_damage(magic_dmg)
print(bcolors.OKBLUE + "\n" + spell.name + " deals", str(magic_dmg), "points of damage." + bcolors.ENDC)
enemy_choice = 1
enemy_dmg = enemy.generate_damage()
player.take_damage(enemy_dmg)
print("Enemy attacks for", enemy_dmg)
print("-----------------------")
print("Enemy HP:", bcolors.FAIL + str(enemy.get_hp()) + "/" + str(enemy.get_max_hp()) + bcolors.ENDC + "\n")
print("Your HP:", bcolors.OKGREEN + str(player.get_hp()) + "/" + str(player.get_max_hp()) + bcolors.ENDC)
print("Your MP:", bcolors.OKBLUE + str(player.get_mp()) + "/" + str(player.get_max_mp()) + bcolors.ENDC + "\n")
if enemy.get_hp() == 0:
print(bcolors.OKGREEN + "You win!" + bcolors.ENDC)
running = False
elif player.get_hp() == 0:
print(bcolors.FAIL + "Your enemy has defeated you!" + bcolors.ENDC)
running = False
Person Klasse:
class Person:
def __init__(self, hp, mp, atk, df, magic):
self.maxhp = hp
self.hp = hp
self.maxmp = mp
self.mp = mp
self.atkl = atk - 10
self.atkh = atk + 10
self.df = df
self.magic = magic
self.actions = ["Attack", "Magic"]
def generate_damage(self):
return random.randrange(self.atkl, self.atkh)
def take_damage(self, dmg):
self.hp -= dmg
if self.hp < 0:
self.hp = 0
def heal(self, dmg):
self.hp += dmg
if self.hp > self.maxhp:
self.hp = self.maxhp
def get_hp(self):
return self.hp
def get_max_hp(self):
return self.maxhp
def get_mp(self):
return self.mp
def get_max_mp(self):
return self.maxmp
def reduce_mp(self, cost):
self.mp -= cost
def choose_action(self):
i = 1
print(bcolors.OKBLUE + bcolors.BOLD + "Actions" + bcolors.ENDC)
for item in self.actions:
print(str(i) + ":", item)
i += 1
def choose_magic(self):
i = 1
print(bcolors.OKBLUE + bcolors.BOLD + "Magic" + bcolors.ENDC)
for spell in self.magic:
print(str(i) + ":", spell.name, "(cost:", str(spell.cost) + ")")
i += 1
Der Fehler sagt, dass 'Person' nicht weiß, wie' .heal'ed werden, so sollten Sie uns zeigen, wie Sie die Klasse definiert 'Person'. – kazemakase
Wenn das in Ihrem Kommentar die gesamte Klasse ist. dann ist das Problem offensichtlich, dass du niemals "def heal" (selbst, Menge) "heilst. Bitte machen Sie dies auch in der Frage selbst. –
bitte [bearbeiten] (http://Stackoverflow.com/posts/43206556/edit) den Beitrag und poste keinen mehrzeiligen Code in Kommentaren, der völlig unlesbar ist :) – kazemakase