Если я раскомментирую закомментированные строки, я отчетливо увижу, что программа выходит из-под контроля при отображении значений от 47 до 50.
Я использую python 2.7 и pygame 1.9.2, Windows 8 (64 бита) и Eclipse + PyDev.
Переведено автоматически
Ответ 1
Вызов pygame.event.get() в начале цикла while.
Ответ 2
Вам необходимо регулярно выполнять вызов одной из четырех функций в pygame.event модуле, чтобы pygame могла внутренне взаимодействовать с вашей операционной системой. В противном случае операционная система подумает, что ваша игра завершилась сбоем. Поэтому убедитесь, что вы вызываете одно из этих:
pygame.event.get() возвращает список всех событий, находящихся в данный момент в очереди событий.
pygame.event.poll() возвращает одно событие из очереди событий или pygame.NOEVENT если очередь пуста.
pygame.event.wait() возвращает одно событие из очереди событий или ожидает, пока событие не будет возвращено.
pygame.event.pump() позволяет pygame обрабатывать внутренние действия. Полезно, когда вы не хотите обрабатывать события из очереди событий.
Ответ 3
Окно не отвечает (зависает), потому что вы не обрабатываете события. Вы должны обрабатывать события с помощью pygame.event.pump() или pygame.event.get(), чтобы окно продолжало отвечать.
Для каждого кадра вашей игры вам нужно будет выполнить какой-либо вызов очереди событий. Это гарантирует, что ваша программа сможет внутренне взаимодействовать с остальной операционной системой.
Добавьте цикл событий, например:
run = True while run: for event in pygame.event.get(): if event.type == pygame.QUIT: run = False
# [...]
В качестве альтернативы просто перекачайте события: