Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 24, 2015 22:35:24

AKubax
Зарегистрирован: 2015-10-24
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Не работает функция

В комментариях к коду все написано(читать по нумерации), но все же:
не создается новый объект или создается неправильно

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")
    

Прикреплённый файлы:
attachment bandicam 2015-10-24 22-32-15-071.jpg (168,7 KБ)

Офлайн

#2 Окт. 25, 2015 00:34:53

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Не работает функция

Если вы думаете что применили ООП, то вы ошибаетесь. Я даже не знаю с чего начать, что бы описать, где вы ошибаетесь. Везде.
Для начала понять что есть объект класса, а что есть экземпляр класса. Это самая базовая ошибка.
НУ а так, читать книги, раздел ООП



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#3 Окт. 25, 2015 00:52:33

Kon52
Зарегистрирован: 2015-01-31
Сообщения: 66
Репутация: +  3  -
Профиль   Отправить e-mail  

Не работает функция

JOHN_16
Я даже не знаю с чего начать, что бы описать, где вы ошибаетесь.
Думаю, многие будут признательны, если всё- таки решитесь.

Офлайн

#4 Окт. 25, 2015 06:19:12

J.R.
Зарегистрирован: 2015-07-18
Сообщения: 147
Репутация: +  16  -
Профиль  

Не работает функция

.

Отредактировано J.R. (Янв. 27, 2016 08:47:43)

Офлайн

#5 Окт. 25, 2015 13:15:26

AKubax
Зарегистрирован: 2015-10-24
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Не работает функция

J.R.
AKubaxПосмотрите на свой класс Player внимательно. А именно на метод eattack этого класса. В этом методе вы манипулируете некой переменной enemy.HP, но при этом вы не передаёте эту переменную данному методу в качестве параметра. То есть enemy.HP внутри класса Player - глобальная переменная. Не есть гуд, с таким подходом будете иметь бажный код.То же самое касается класса SDragon, в нем переменные isEnemy и player.HP тоже глобальные. А соответствующие методы ничего не возвращают. Это тупик.Вам стоит научиться передавать свои желаемые переменные методам класса в качестве параметров, а методы, соответственно, должны возвращать искомые значения. И в теле своего модуля вы должны манипулировать возвращенными вашими методами значениями. Тогда может всё получиться…
А как передать в качестве параметра переменную? Что - то не могу понять…

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version