我开始学习pygame,写了一个简单的程序来在屏幕上显示一些文字。
import pygame, time
pygame.init()
window = pygame.display.set_mode((600,300))
myfont = pygame.font.SysFont("Arial", 60)
label = myfont.render("Hello Pygame!", 1, (255, 255, 0))
window.blit(label, (100, 100))
pygame.display.update()
time.sleep(15)
pygame.quit()
但它一直在崩溃。 我正在使用python2.7
答案 0 :(得分:3)
问题是您只运行一次代码,而不是重复每一帧需要重复的代码行。
然后你调用pygame.quit()
而没有使用quit()
退出Python线程,导致窗口只是"崩溃"或者没有回应。
解决此问题:
在while循环中包含一些代码,这些代码将在每个帧上运行,从而使程序保持运行和响应。
确保初始化代码只运行一次。
添加一些事件处理,让用户退出程序时," X"单击按钮。
一些有用的补充:
包含允许FPS上限的Clock
。
每帧都用黑色填充屏幕
使用pygame.quit()
退出游戏以退出pygame窗口并sys.exit()
退出Python线程。
pygame游戏中的Clock
允许您指定FPS。在每个主游戏循环迭代(帧)结束时,您调用clock.tick(FPS)
等待确保游戏以指定的帧速率运行的时间量。
以下是修订后的代码示例:
import pygame
import sys
# this code only needs to be ran once
pygame.init()
window = pygame.display.set_mode((600,300))
myfont = pygame.font.SysFont("Arial", 60)
label = myfont.render("Hello Pygame!", 1, (255, 255, 0))
clock = pygame.time.Clock()
FPS = 30
while True:
#allows user to exit the screen
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
# this code should be ran every frame
window.fill((0, 0, 0))
window.blit(label, (100, 100))
pygame.display.update()
clock.tick(FPS)
我希望这个答案对您有所帮助,如果您有任何其他问题,请随时在下面发表评论!