Управление параллельными циклами в Pygame
В Pygame одновременная обработка нескольких циклов while может иметь решающее значение для программ, требующих параллельных задач. В этой статье рассматривается проблема, возникшая у пользователя, пытающегося реализовать цикл внутри цикла, обеспечивая при этом непрерывное выполнение программы.
Пользователь пытался добавить цикл с управлением по времени в основной цикл приложения. Хотя это может показаться простым, дополнительный цикл по своей сути останавливает другие операции программы из-за блокирующей природы time.sleep() и подобных методов. Этот конфликт проистекает из фундаментального принципа основного цикла Pygame, который обрабатывает события и отображает обновления.
Решение: использовать измерение времени
Вместо использования функций блокировки сна, рекомендуемое решение использует функцию Pygame time.get_ticks() для отслеживания системного времени. Вычисляя будущие моменты времени на основе текущего времени, программа может определить, когда обновить и визуализировать лицо, не прерывая основной цикл.
Пересмотренная структура кода
next_render_time = 0
while run:
current_time = pygame.time.get_ticks()
# Existing code here...
if current_time >= next_render_time:
currentFace = random.choice(face)
faceDisplay = myFont.render(str(currentFace), 1, (0,255,0))
next_render_time = current_time randint(5, 10) * 1000
screen.fill((0,0,0))
screen.blit(faceDisplay, text_rect)
pygame.display.flip()
Эта пересмотренная структура позволяет обоим циклам работать одновременно, гарантируя, что лицо меняется с указанными интервалами, не затрагивая другие функции программы.
Аспекты событий таймера
В качестве альтернативы Pygame предоставляет события таймера для планирования действий через фиксированные интервалы времени. Однако в случаях, подобных представленному, когда интервал не является постоянным, более целесообразно использовать метод измерения времени.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3