关于python:Pygame在mac上不断崩溃

Pygame keeps crashing on mac

我开始学习Pygame,写了一个简单的程序在屏幕上显示一些文本。

1
2
3
4
5
6
7
8
9
10
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


问题是,您只运行一次代码,而不重复每帧需要重复的代码行。

然后调用pygame.quit(),而不使用quit()退出python线程,这会导致窗口"崩溃"或没有响应。

要解决此问题:

  • 在while循环中包含一些代码,这些代码将在每个帧上运行,从而保持程序的运行和响应。

  • 确保初始化代码只运行一次。

  • 添加一些事件处理,让用户在单击"X"按钮时退出程序。

  • 小精灵

    一些有用的补充:

    • 包括一个Clock,允许一个FPS帽。

    • 每一帧都用黑色填充屏幕

    • 使用pygame.quit()退出游戏以退出pygame窗口,使用sys.exit()退出python线程。

    • 小精灵

      Pygame游戏中的Clock允许您指定一个fps。在每个主游戏循环迭代(帧)结束时,您调用clock.tick(FPS)等待确保游戏以指定的帧速率运行的时间。

      下面是修订后的代码示例:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      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)

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