Я создаю «игру для домашних животных», чтобы обучать свои компьютерные навыки на питоне (это просто оправдание: это потому, что это весело).Как эффективно обновлять атрибуты объекта
Я решил сделать простую игру RPG. Для этого я определил класс героя:
class hero:
#Common class for the main character
def __init__(self, name, lvl, str, agi, vit, int, luk, prof):
self.name = name
self.lvl = lvl
self.str = str
self.agi = agi
self.vit = vit
self.int = int
self.luk = luk
self.prof = prof
self.exp = 0
if prof==1:
self.dmg=3*(self.str)+1*(self.agi)
self.skillList=['heavySlash01']
self.strUp=3
self.agiUp=1
self.vitUp=2
self.intUp=1
self.lukUp=1
if prof==2:
self.dmg=1*(self.str)+3*(self.agi)
self.skillList=['doubleAttack02']
self.strUp=1
self.agiUp=3
self.vitUp=1
self.intUp=1
self.lukUp=2
if prof==3:
self.dmg=4*(self.int)
self.skillList=['fireBall03']
self.strUp=1
self.agiUp=1.5
self.vitUp=0.5
self.intUp=3.5
self.lukUp=1.5
self.hp=19*vit
Однако я заметил, что всякий раз, когда герой выровнена, мне нужно, чтобы обновить все его статуса отдельно. Например, мне нужно было вручную обновить hero.dmg
. Изменение agi
, str
и int
не изменило автоматически dmg
, как и следовало ожидать.
Мой вопрос заключается в следующем: есть ли способ сделать dmg
автоматически обновлять себя, исходя из его формулы?
Все эти магические числа ... те действительно хотят жить в конфигурационном файле ИМХО. – Kevin
Согласен, но я также не пытаюсь полностью переписать код, просто отвечая на вопрос, поэтому перезаписанный код не путает OP. – Karin