Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Создание моба из класса

ЕВГЕНИЙ ЕВГЕНИЙ Знаток (311), закрыт 6 лет назад
Написан на Python`e такой код:
class Player:
_def __init__(self):
__self.hp=hp
__self.oc=oc
__self.lvl=lvl
__self.imag=imag
Тут всё понятно, с этим вроде как вопросов нет, но вот как теперь мне создать моба из этого класса? Вообще это делается так:
Skeleton=Player()
Но мне выдаёт ошибку, мол имя hp в строке self.hp=hp не индифицируется, почему? В другом коде, из которого я взял этот кусок всё работает (решил по кусочкам писать) хотя там всё точно так-же и нет в начале кода каких нибудь hp=0, oc=0, lvl=0, там всё точно так-же, почему так происходит? Как исправить?
Это лишь первый вопрос. Ещё мне бы хотелось узнать, как затем создать моба, допустим того же Skeleton но с определёнными характеристиками?
Пробовал Skel1=Player(hp=100,oc=0,lvl=1,image="Skull11") после class Player(self): но такой вариант не работает
Лучший ответ
Сергей Шиманский Мудрец (11357) 6 лет назад
class Player:
_def __init__(self, hp, oc, lvl, imag):
__self.hp=hp
__self.oc=oc
__self.lvl=lvl
__self.imag=imag

Skel1=Player(hp=100,oc=0,lvl=1,imag="Skull11")
ЕВГЕНИЙ ЕВГЕНИЙЗнаток (311) 6 лет назад
Большое спасибо! Как можно будет выбрать лучший ответ, выберу ваш!
На самом деле у меня есть ещё пара вопросов, но пока попробую разобраться с ними сам)
Сергей Шиманский Мудрец (11357) спрашивайте, смогу отвечу, не смогу мож кто ещё поможет)
ЕВГЕНИЙ ЕВГЕНИЙЗнаток (311) 6 лет назад
Можете подсказать ещё одно, в моём основном коде помимо этих строк так-же есть ещё множество других (странно сказано.. вроде логично) и там, мир создан в отдельном классе, мне подсказали что таким образом можно будет сделать потом "пошаговость", так вот.. например строка:
self.img1 = ImageTk.PhotoImage(Image.open(Skel1.imag))
Тут всё ясно как день, но.. у меня же планируется не 1 враг Skel1, а множество, как мне изменить эту и другие строки, чтобы в дальнейшем, скажем при нажатии на кнопку "далее" (которая будет появляться после смерти врага) он брал следующего нпс.. скажем.. dragon.image ?
Сергей Шиманский Мудрец (11357) не очень понимаю что вы хотите, по идее self.img1 = ImageTk.PhotoImage(Image.open(dragon.image)) или self.img2 = ImageTk.PhotoImage(Image.open(dragon.image)) без контекста не понять или надо создать список imag и прогонять его циклом foreach зависит от задумки
Остальные ответы
noname Мастер (2098) 6 лет назад
не указаны переменные hp, oc, lvl, imag
ЕВГЕНИЙ ЕВГЕНИЙЗнаток (311) 6 лет назад
Да, я тоже так подумал, что где то в начале должны быть черновые варианты этих переменных, типа hp=0 lvl=0, как уже писал..
("каких нибудь hp=0, oc=0, lvl=0"), но проблема в том что в основном коде нет такой ошибки и всё работает нормально, но при этом там нет ничего такого, там скажу написанно:
#Костыль
class Player:
def __init__(self):
self.hp=hp
self.oc=oc
self.lvl=lvl
self.imag=imag
Skel1=Player(hp=100,oc=0,lvl=1,image="Skull11")
ЕВГЕНИЙ ЕВГЕНИЙЗнаток (311) 6 лет назад
или я его то не понимаю?
ЕВГЕНИЙ ЕВГЕНИЙЗнаток (311) 6 лет назад
И как мне выйти из этой ситуации, я конечно могу написать:
class Player:
_def __init__(self):
__self.hp=100
__self.oc=0
__self.lvl=1
__self.imag="12312.png"
но тогда этот костыль сможет создавать только нпс с данными характеристиками, а я хочу чтобы при помощи этого класса можно было создавать любого нпс, просто по ходу давая ему разные хар.
Денис Безруков Знаток (441) 6 лет назад
Научи меня программировать, тога скажу
ЕВГЕНИЙ ЕВГЕНИЙЗнаток (311) 6 лет назад
Чему я могу научить, я второй год изучаю этот язык (хотя и не целенаправленно и не каждый день, но всё же) и при этом встаю в ступор вот в таких простых вещах.
Похожие вопросы