我有一个简单的 Pygame 程序:
#!/usr/bin/env python
import pygame
from pygame.locals import *
pygame.init()
win = pygame.display.set_mode((400,400))
pygame.display.set_caption("My first game")
但每次我尝试运行它时,我都会得到以下信息:
pygame 2.0.0 (SDL 2.0.12, python 3.8.3)
Hello from the pygame community. https://www.pygame.org/contribute.html
然后什么也没有发生。
为什么我无法运行这个程序?
您的应用程序运行良好。但是,您还没有实现应用程序循环:
import pygame
from pygame.locals import *
pygame.init()
win = pygame.display.set_mode((400,400))
pygame.display.set_caption("My first game")
clock = pygame.time.Clock()
run = True
while run:
# handle events
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
# update game objects
# [...]
# clear display
win.fill((0, 0, 0))
# draw game objects
# [...]
# update display
pygame.display.flip()
# limit frames per second
clock.tick(60)
pygame.quit()
典型的 PyGame 应用程序循环必须:
- 通过调用以下任一方法处理事件pygame.event.pump() https://www.pygame.org/docs/ref/event.html#pygame.event.pump or pygame.event.get() https://www.pygame.org/docs/ref/event.html#pygame.event.get.
- 根据输入事件和时间(分别为帧)更新游戏状态和对象位置
- 清除整个显示或绘制背景
- 绘制整个场景(
blit
所有对象)
- 通过调用更新显示pygame.display.update() https://www.pygame.org/docs/ref/display.html#pygame.display.update or pygame.display.flip() https://www.pygame.org/docs/ref/display.html#pygame.display.flip
- 限制每秒帧数以限制 CPU 使用率pygame.time.Clock.tick https://www.pygame.org/docs/ref/time.html#pygame.time.Clock
repl.it/@Rabbid76/PyGame-MinimalApplicationLoop See also Event and application loop https://github.com/Rabbid76/PyGameExamplesAndAnswers/blob/master/documentation/pygame/pygame_event_and_application_loop.md
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)