#python #text
#python #текст
Вопрос:
все еще работая над моей текстовой RPG и столкнувшись с ошибкой в моей магии, наносящей урон, я использовал тот же формат, что и мой урон в ближнем бою, но затем понял, что у меня есть отдельная функция для определения best_weapon.damage, и в моих заклинаниях я просто пытаюсь извлечь значение урона из объекта заклинания, чтобы изменить hp противника.
Вот мой magic.py файл iv получил только 2 заклинания для целей тестирования
import player
class Spell:
def __init__(self):
raise NotIMplementedError("Do not create raw spell objects!")
def __str__(self):
return self.name
class magic_missle(Spell):
def __init__(self):
self.name = "Magic Missle"
self.discription = "A bolt of condensed magical power that you fling at an opponent."
self.damage = 15
self.mana = 10
class fire_ball(Spell):
def __init__(self):
self.name = "Fire Ball"
self.discription = "A ball of fire that explodes on impact."
self.damage = 20
self.mana = 15
это боевая функция, у меня возникли проблемы с линией enemy.hp =- magic.damage, которая, как я думал, увеличит значение урона ранее выбранного заклинания, но я просто продолжаю получать сообщение об ошибке модуль объекта не имеет значения magic.
def attack(self):
spell = [magic_spell for magic_spell in self.spell_book if isinstance(magic_spell,magic.Spell)]
if not spell:
print("You have no spells to cast!")
user_input = input('What do you want to attack with? Melee or Magic: ')
if user_input == str('magic'):
for i, magic_spell in enumerate(spell, 1):
print("Choose a spell to cast: ")
print("{}. {}".format(i,magic_spell))
valid =False
while not valid:
choice = input("")
try:
if self.mana == 0:
print("You dont have enough mana")
else:
room = world.tile_at(self.x,self.y)
enemy = room.enemy
print("You use {} against {}!".format(spell,enemy.name))
enemy.hp -= magic.damage
self.mana = self.mana - spell.mana
if not enemy.is_alive():
print("You killed {}!".format(enemy.name))
else:
print("{} HP is {}.".format(enemy.name,enemy.hp))
except(ValueError,IndexError):
print("Invalid choice, try again")
elif user_input == str('melee'):
best_weapon = self.most_powerful_weapon()
room = world.tile_at(self.x,self.y)
enemy = room.enemy
print("You use {} against {}!".format(best_weapon.name,enemy.name))
enemy.hp -= best_weapon.damage
if not enemy.is_alive():
print("You killed {}!".format(enemy.name))
else:
print("{} HP is {}.".format(enemy.name,enemy.hp))
спасибо за любую помощь.
Комментарии:
1. Ваш код должен быть переведен
choice
вmagic_spell
объект, а затем получить доступ кdamage
этому объекту, а не кmagic
модулю.2. спасибо, сэр, я думал, что уже пробовал это. сработало как шарм.