«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как одновременно запускать несколько циклов while в Pygame?

Как одновременно запускать несколько циклов while в Pygame?

Опубликовано 7 ноября 2024 г.
Просматривать:299

How to Run Multiple While Loops Concurrently in Pygame?

Как одновременно реализовать несколько циклов while в Pygame

В Pygame можно выполнять несколько циклов while одновременно, что позволяет создавать независимые и непрерывные операции в вашей программе.

Преодоление блокировки выполнения

В предоставленном фрагменте кода проблема возникает из-за присутствия двух циклов while, пытающихся выполниться одновременно . Второй цикл, который включает функцию time.sleep() для введения задержки, мешает выполнению первого цикла, который имеет решающее значение для постоянной функциональности программы.

Использование системного времени для задержки

Вместо того, чтобы полагаться на time.sleep() для задержки выполнения определенного блока кода, рекомендуется использовать модуль pygame.time. Pygame.time.get_ticks() предоставляет доступ к системному времени в миллисекундах с момента инициализации программы.

Интеграция с Loop

Чтобы предотвратить блокировку одного цикла другим, рассмотрите возможность включения следующей стратегии:

  • Определите интервал времени, через который контент должен обновляться.
  • Реализуйте условную проверку в основном цикле, чтобы оценить, превышает ли прошедшее время указанное интервал.
  • Если интервал истек, выполните необходимые обновления и соответствующим образом сбросьте временной интервал.

Этот подход позволяет отложенному действию выполняться одновременно с основным циклом, не нарушая его поток выполнения.

Альтернативный подход с использованием событий таймера

В качестве альтернативы вы можете использовать события таймера Pygame для планирования действий через определенные интервалы времени. Этот метод особенно полезен при работе с постоянными интервалами времени.

Пример кода

В следующем фрагменте кода приведен полный пример, демонстрирующий реализацию нескольких циклов while в Pygame:

import pygame
import random

# Initialize Pygame
pygame.init()

# Define screen dimensions
screen_width = 800
screen_height = 600
screen = pygame.display.set_mode((screen_width, screen_height))

# Define some faces
faces = ['^-^', '^v^', '◠◡◠', "'v'", '⁀◡⁀']

# Define the current face
current_face = random.choice(faces)

# Set up the font
font = pygame.font.SysFont('Arial', 100)

# Render the face
face_surface = font.render(current_face, True, (0, 255, 0))

# Get the center of the screen
center_x = screen_width // 2
center_y = screen_height // 2

# Set up the main loop
running = True
while running:

    # Process events
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    # Calculate the next time the face should be updated
    next_update_time = pygame.time.get_ticks()   randint(5000, 10000)

    # If the time has come to update the face, do it
    if pygame.time.get_ticks() >= next_update_time:
        current_face = random.choice(faces)
        face_surface = font.render(current_face, True, (0, 255, 0))

    # Draw everything to the screen
    screen.fill((0, 0, 0))
    screen.blit(face_surface, (center_x - face_surface.get_width() // 2, center_y - face_surface.get_height() // 2))
    pygame.display.update()
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3