EDIT: определение для self.D_Stats
не является списком, см. Определение для self.P_Stats = [self.P_HP, self.P_Attack, self.P_Speed]
.Это не работает "то же самое", потому что (я полагаю) это должно быть: self.D_Stats = [self.S_Defence]
Петли Python for
должны занять повторяемость .Таким образом, в этом цикле for
, self.D_Stats
должен быть списком или чем-то подобным.
for loop in self.D_Stats:
loop += random.randint(4, 8)
self.Increased_Defence.append(loop)
self.D_Stats = self.Increased_Defence
self.D_Stats = self.S_Defence
Если self.D_Stats
является целым числом, тогда используйте функцию python range()
, который создает итерацию из 0 -> <argument>-1
или иным образом с дополнительными аргументами.
for loop in range( self.D_Stats ):
loop += random.randint(4, 8)
Тело цикла for
также выглядит немного странно.self.D_Stats
устанавливается дважды, поэтому значение self.Increased_Defence
теряется.self.D_Stats
должен быть списком / массивом и должен быть .append()
ed?
Основываясь на описании того, что должен делать код, я думаю, что он должен выглядеть примерно так, как "Щит"Защита ", похоже, не имеет никакого отношения к увеличению базового показателя защиты.Мы повышаем уровни и «истощаем» очки опыта.Таким образом, цикл while()
повторяется, уменьшая очки опыта, но увеличивая D_Stats
.Так или иначе, я так понимаю из описания.
while self.S_Exp >= 0 + (self.S_Level * 100):
self.S_Level += 1
self.S_Exp -= ((self.S_Level - 1) * 250)
self.S_Level_Stats = [self.S_Exp, self.S_Level]
points_increase = random.randint(4, 8)
self.Increased_Defence.append(points_increase)
self.D_Stats += points_increase
EDIT2: Глядя на ваш код, я думаю, что было бы аккуратнее, чище и короче , если вы используете структуры данных для хранениянекоторые из значений статов.Модификатор оружия может быть значительно упрощен:
def Weapon(self, Weapon):
weapon_mods = { "Dagger":[6,0], "Knife":[5,0], "Sword":[7,0], "Axe":[7,-5] } #etc
if ( Weapon in weapon_mods ):
attack_mod, speed_mod = weapon_mods[ Weapon ]
self.P_Attack += attack_mod
self.P_Speed += speed_mod
self.P_Stats = [self.P_HP, self.P_Attack, self.P_Speed]
Я думаю, что лучше всегда добавлять модификатор и использовать отрицательные / положительные модификаторы.Это упрощает логику (а что, если вы хотите создать оружие, которое увеличивает скорость атаки?)