Форум сайта python.su
0
В комментариях к коду все написано(читать по нумерации), но все же:
не создается новый объект или создается неправильно
class Player: maxHP = 800.0 HP = maxHP exp = 0.0 nextlvl = 100.0 attack = 75.0 def eattack(self): enemy.HP -= self.attack class SDragon: maxHP = 375.0 HP = 375.0 attack = 50.0 dieexp = 450.0 def die(self): player.exp += self.dieexp isEnemy = False #2.)Сама функция, которая также должна менять значение переменной isEnemy на False player.HP = player.HP + (self.maxHP * 0.35) def pattack(self): player.HP = player.HP - self.attack player = Player() isEnemy = False while True: if isEnemy == False: #3.)Условие, при котором должен создаваться новый объект, но он не создается или создается неправильно(Результат программы в приложеном файле) enemy = SDragon() isEnemy = True enemy.pattack() player.eattack() print("You've attacked enemy!") print("Enemy has attacked you!") print("Your HP is", player.HP, " Enemy's HP is", enemy.HP) if enemy.HP <= 0: enemy.die() #1.)Вызывает функцию die print("You won this enemy! Let`s see next one!") x = input("Press ENTER button to continue")
Прикреплённый файлы:
bandicam 2015-10-24 22-32-15-071.jpg (168,7 KБ)
Офлайн
221
Если вы думаете что применили ООП, то вы ошибаетесь. Я даже не знаю с чего начать, что бы описать, где вы ошибаетесь. Везде.
Для начала понять что есть объект класса, а что есть экземпляр класса. Это самая базовая ошибка.
НУ а так, читать книги, раздел ООП
Офлайн
3
JOHN_16Думаю, многие будут признательны, если всё- таки решитесь.
Я даже не знаю с чего начать, что бы описать, где вы ошибаетесь.
Офлайн
.
Отредактировано J.R. (Янв. 27, 2016 08:47:43)
Офлайн
0
J.R.А как передать в качестве параметра переменную? Что - то не могу понять…
AKubaxПосмотрите на свой класс Player внимательно. А именно на метод eattack этого класса. В этом методе вы манипулируете некой переменной enemy.HP, но при этом вы не передаёте эту переменную данному методу в качестве параметра. То есть enemy.HP внутри класса Player - глобальная переменная. Не есть гуд, с таким подходом будете иметь бажный код.То же самое касается класса SDragon, в нем переменные isEnemy и player.HP тоже глобальные. А соответствующие методы ничего не возвращают. Это тупик.Вам стоит научиться передавать свои желаемые переменные методам класса в качестве параметров, а методы, соответственно, должны возвращать искомые значения. И в теле своего модуля вы должны манипулировать возвращенными вашими методами значениями. Тогда может всё получиться…
Офлайн