Добавление цикла for в python из другого класса
Прости меня, я новичок...
Короче говоря, я пытаюсь добавить в отдельный класс для цикла в Python. Ниже приведены подробности...
Я делаю игру с Python и Pygame. У меня есть базовый класс для всех моих "состояний" (например, начальное состояние, игровое состояние, игровое состояние закончено и т. Д.), Который включает в себя функцию, которая имеет цикл for, проверяющий события Pygames "события" (например, выход из программы, нажатием клавиши, т. д.).
Ниже приведен родительский метод... Он работает.
def events(self):
for event in pygame.event.get():
if event.type == pygame.QUIT:
self.quit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
self.quit()
Ниже приведен метод Чайлдс. Он хочет добавить, чтобы добавить событие 'key up' к уже существующим событиям 'exit' и 'escape'...
def events(self):
super().events()
for event in pygame.event.get():
if event.type == pygame.KEYUP:
self.start_state = False
Что происходит, код застревает в родительском классе для цикла и игнорирует все ниже него. Я также попытался вызвать супер под циклом childs for, и вместо этого он просто застревает в цикле childs for и игнорирует родителей.
Я думаю, что решение было бы сделать отдельный метод для событий класса потомков, но я все еще хотел бы знать, возможно ли способ, которым я пытаюсь это сделать, чтобы я мог избежать беспорядка отдельных функций.
Благодарю.
1 ответ
Скорее тогда вызывающий цикл (for event in pygame.event.get():
) внутри events
метод, было бы лучше иметь отдельный метод только для обработки событий, но получить их в другом месте
class Base():
def events(self):
for event in pygame.event.get():
self._proceed_event(event)
def _process_event(self, event):
if event.type == pygame.QUIT:
self.quit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
self.quit()
class Child(Base):
def _process_event(self, event):
if event.type == pygame.KEYUP:
self.start_state = False
super()._proceed_event(event)