Pygame一直在mac上崩溃

时间:2018-01-20 09:38:36

标签: python pygame

我开始学习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

pygame crashing without display on mac

1 个答案:

答案 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)

我希望这个答案对您有所帮助,如果您有任何其他问题,请随时在下面发表评论!