Основная проблема вашего цикла состоит в том, что у вас нет задержки между «кадрами», то есть вы просто циклически повторяете цикл обработки событий с максимальной скоростью ЦП. Это приводит к тому, что нажатие клавиши генерирует лоты (лоты, вероятно, около миллионов величин) прочитанных событий нажатия клавиш.
Итак:
- вставьте
pygame.time.delay(x)
в петлю, с помощью x
где-то между 15 и 100 - это даст вам так много
миллисекунды паузы между взаимодействиями
- вставить
pygame.event.pump()
вызов внутри цикла - это сохранит событие
Буфер течет по-хапилли и предотвращает тонкое плохое поведение
разные системы
- это не связано с вашей проблемой - но,
абсолютно не нужно такого понятия, как "
-1*moveSpeed
", чтобы
получить отрицательное значение переменной - просто используйте "-moveSpeed
"
вместо этого.
Кроме того, это должно остановить зависание, но pygame может захватывать события мыши или клавиши только в своем собственном окне дисплея - которое вы не инициализируете - вам придется вызвать pygame.display.set_mode
, чтобы действительно что-то увидеть.