首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >皮博特在麦克身上不断地崩溃

问皮博特在麦克身上不断地崩溃
EN

Stack Overflow用户
提问于 2018-01-20 09:38:36
回答 1查看 2.1K关注 0票数 1

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

代码语言:javascript
复制
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()

但它一直在崩溃。我用的是丙酮2.7

​

​

EN

回答 1

Stack Overflow用户

发布于 2018-01-20 10:56:18

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

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

解决此问题的:

  • 在will循环中包含一些代码,这些代码将在每个帧上运行,从而保持程序运行和响应。
  • 确保初始化代码只运行一次。
  • 添加一些事件处理,让用户退出程序时,"X“按钮被点击。

一些有用的补充

  • 包括一个允许FPS上限的Clock。
  • 屏幕上每一帧都是黑色的
  • 正确地退出游戏,使用pygame.quit()退出pygame窗口,sys.exit()退出Python线程。

游戏中的Clock允许您指定FPS。在每个主游戏循环迭代(frame)结束时,您将调用clock.tick(FPS)来等待确保游戏在指定框架下运行的时间。

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

代码语言:javascript
复制
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)

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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48354601

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档