У меня есть 3 файла: один person.py
и items.py
и game.py
.
В game.py
есть обработчик событий, такой, что при нажатии кнопки или пробела он вызывает объект игрока, чтобы использовать функцию, данную ему объектом в его руке.
Для этого я создал наследуемый класс элементов с функцией, которая при вызове человеком возвращает функцию, специфичную для подкласса элемента.
Я попытался создать функцию декоратора элемента @efunc
, которая устанавливает функцию ниже как переменную self.efunc
и вторую функцию, которая будет вызываться человеком inhand.getefunc()
, который возвращает efunc как переменную, которая затем вызывается человеком, когда game.py вызывает эту функцию.
В person.py
:
class person:
def init(self):
self.inhand = banana # this could be many other different items and
#changes through the game
def useefunc(self): # game.py calls this function when e is pressed
func = self.inhand.getefunc()
func(self)
def usespacefunc(self):# game.py calls this function when space is #pressed
func = self.inhand.getspacefunc()
func(self)
В items.py
:
class items:
def init(self):
self.efunc
self.spacefunc
def efunc(func,self):
self.efunc = func
def getefunc(self)
return self.efunc
def spacefunc(func,self):
self.spacefunc = func
def getspacefunc(self):
return self.spacefunc
class banana(items):
def init(self):# was removed
self.efunc = consume # I tried this it did not work was removed
self.spacefunc = trash # also did not work was removed
@spacefunc
def consume (p):
#p is a person so consume can transfer its effects on the person and its animation
@efunc
def trash(p):
class nothing(items):
pass
Я выполнил некоторые действия по устранению неполадок и редактированию, и я не мог определить многое.