Я думаю, что это проблема с вашими циклами.
В цикле pygame:
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
pygame.display.update()
Как вы можете видеть, это бесконечный цикл.Тогда проблема возникает здесь:
running = True
while running:
if event.type == pygame.KEYDOWN:
if pygame.key == pygame.K_UP:
my_change = -15
Таким образом, вы создаете еще один бесконечный цикл внутри основного цикла.Таким образом, этот код никогда не обновит ваше окно pygame (поскольку оно застряло во вложенном цикле).
Помните, что обновление в pygame должно идти только в одной операции.Так как эта операция будет повторяться для каждого цикла в основном игровом цикле.Попробуйте пересмотреть свой код с учетом этого.Как сейчас, ваш код не будет работать независимо от того, как мы его упорядочим.
Совет: Для движения персонажа создайте класс для обработки вашего персонажа и добавьте функцию для его обновления, чтобы обновить его позицию.Наиболее распространенный подход на мой взгляд.
Возможное исправление: Переместите на выполнение за пределы цикла событий.Затем добавьте запуск в качестве еще одной проверки в событии keydown.
running = True
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
if running and event.type == pygame.KEYDOWN:
if pygame.key == pygame.K_UP:
my_change = -15
my += my_change
pygame.display.update()