【问题标题】:Python 3.6 pygame crashingPython 3.6 pygame 崩溃
【发布时间】:2021-09-22 03:40:51
【问题描述】:

我尝试使用一个非常简单的代码来使用 python 3.6.1 创建一个矩形形状。我不确定我使用的代码是否会导致程序在每次使用时崩溃,或者是否有人可以就我的 pygame 模块、我的 cmd 和我正在使用的代码之间可能发生的情况给我建议。

【问题讨论】:

  • @Alastair False,pygame 要求用户有无限的while 循环来模拟连续的事件循环
  • @jayardot 虽然代码相当简单,但我们希望您也将代码复制并粘贴到问题本身(以避免误读,并防止托管站点删除图像的风险)。
  • 什么崩溃?为什么你认为这里发生了崩溃?
  • 好吧,我所说的崩溃是指程序窗口一打开,它就会变得无响应。如果我将鼠标移到它上面,我只会得到蓝色圆圈,就像它正在处理某些东西一样。

标签: python pygame


【解决方案1】:

当我运行您的代码时,窗口会加载并显示矩形,但是,我认为您的问题涉及尝试退出程序。为此,您需要有一个事件循环,当用户退出游戏循环时会终止游戏:

import pygame

pygame.init()

isrunning = True

window = pygame.display.set_mode((500, 400))

while isrunning:
   for event in pygame.event.get():
            if event.type == pygame.QUIT:
                isrunning = False
    pygame.draw.rect(window, (255, 0, 0), (0, 0, 50, 30)) #here, access the rect method

    pygame.display.update()

【讨论】:

  • 很高兴为您提供帮助。请考虑接受此答案,以便其他用户知道您的问题已得到解答。谢谢。
【解决方案2】:

您需要用背景颜色填充屏幕。如果你想要黑色,你仍然需要手动将背景颜色设置为黑色。

import pygame

pygame.init()
window = pygame.display.set_mode((500, 400))

while True:
    window.fill(0, 0, 0)
    pygame.draw.rect(window, (255, 0, 0), (0, 0, 50, 30))

    pygame.display.flip()

如果加上帧率,加上事件循环会更好。

import pygame

pygame.init()
window = pygame.display.set_mode((500, 400))
clock = pygame.time.Clock()

while True:
    window.fill(0, 0, 0)
    pygame.event.pump()  # use pump if you’re not planning to catch any event

    pygame.draw.rect(window, (255, 0, 0), (0, 0, 50, 30))
    pygame.display.flip()
    clock.tick(50)  # add the frame rate, should always be > 30

作为一般提示,如果您没有将任何矩形参数传递给 update(),请使用 flip()

【讨论】:

    【解决方案3】:
    import pygame
    pygame.init()
    window = pygame.display.set_mode((500, 400))
    while True:
        pygame.draw.rect(window, (255,0,0),
            (0, 0, 50, 30))
        pygame.display.update()
    

    这是代码

    【讨论】:

    • 通过单击编辑按钮编辑您的帖子,不要发布非答案作为答案,但非常适合您粘贴代码。请删除此答案。
    猜你喜欢
    • 2017-08-23
    • 2013-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多