Pygame에서 여러 While 루프를 동시에 실행하는 방법
Pygame 애플리케이션에서는 time.sleep과 같은 차단 기능의 사용을 피하는 것이 중요합니다. () 지연을 수행합니다. 대신 애플리케이션 루프와 pygame.time.get_ticks() 같은 함수를 사용하여 시간 관련 작업을 관리하세요.
도전 과제 이해
에 제공된 코드에서 쿼리에서 여러 while 루프가 동시에 실행을 시도하지만 time.sleep()을 사용하는 한 루프가 다른 루프를 차단합니다.
해결책: Pygame 시간 함수 사용
시간 지연을 올바르게 처리하려면 pygame.time.get_ticks()를 사용하여 获取时间戳。 수행 시기를 계산하세요. 현재 시간을 기준으로 특정 작업을 수행합니다. 현재 시간이 계산된 시간을 초과하면 액션을 실행합니다.
개정 코드:
<code class="python">import pygame import random from time import time pygame.init() faces = ['^-^', '^v^', '◡◠◠', "'v'", '⁀◡⁀'] display = pygame.display.set_mode((800, 600)) font = pygame.font.Font('unifont.ttf', 100) surface = font.render(random.choice(faces), 1, (0, 255, 0)) center = surface.get_rect(center=(800/2, 600/2)) next_render_time = time() run = True while run: current_time = time() for event in pygame.event.get(): if event.type == pygame.QUIT: run = False if current_time >= next_render_time: surface = font.render(random.choice(faces), 1, (0, 255, 0)) next_render_time = current_time + random.randint(5, 10) display.fill((0, 0, 0)) display.blit(surface, center) pygame.display.flip()</code>
이 코드에서 next_render_time 변수는 시간을 저장합니다. 얼굴을 업데이트해야합니다. 현재 시간이 이 값을 초과하면 새 얼굴이 무작위로 선택되어 렌더링되어 표시됩니다. 이 접근 방식을 사용하면 차단 없이 여러 루프를 동시에 실행할 수 있습니다.
위 내용은 파이게임에서 차단을 피하고 여러 루프를 동시에 실행하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!