Итак, у меня есть этот код, который отслеживает вводимые пользователем данные для игры в стиле pac-man.
def receiving_inputs(self):
while True:
events = pg.event.get()
for event in events:
if event.type == pg.KEYDOWN:
if event.key == pg.K_UP:
self.move = 'n'
elif event.key == pg.K_RIGHT:
self.move = 'e'
elif event.key == pg.K_DOWN:
self.move = 's'
elif event.key == pg.K_LEFT:
self.move = 'w'
time.sleep(1/60)
threading.Thread(target=self.receiving_inputs).start()
Когда я нажимаю какие-либо клавиши на клавиатуре, я не получаю никаких событий, однако перемещение мыши вернет событие с использованием этого кода.
Раздражает то, что этот точный код отлично работает, когда не в потоке. т.е. когда в основном цикле программы.
К вашему сведению, я хочу использовать здесь поток, чтобы минимизировать количество раз, когда pygame не регистрирует нажатие клавиши (что, как я предполагаю, связано с другими вещами в основном цикле).
Заранее спасибо.
В этом есть большой смысл, но почему я все еще получаю события мыши?
Понятия не имею, что вызывает такое поведение. В документации просто сказано: '«Подсистема событий должна вызываться из основного потока». - поэтому, если вы выполняете обработку событий в потоке, то поведение не определено и, вероятно, зависит от системы.
Достаточно честно 😂😂