gpt4 book ai didi

python - Pygame 显示仅在我退出时更新

转载 作者:行者123 更新时间:2023-12-03 23:03:47 24 4
gpt4 key购买 nike

摆弄 pygame,我不确定发生了什么。
代码只是应该制作一个红色框并在灰色屏幕周围弹跳。它有效,但仅当我退出显示器时。
我检查了类似的问题,但似乎没有一个适用于我的答案(可能是错误的)。有谁知道如何改进这段代码?

import pygame
from pygame.locals import *
from rect import *
##from pygame.font import *

RED = (255, 0, 0)
GRAY = (150, 150, 150)

width = 500
height = 200

pygame.init()

screen = pygame.display.set_mode((width, height))

rect = Rect(100, 50, 50, 50)
v = [2, 2]

##moving = False
running = True

while running:
for event in pygame.event.get():
if event.type == QUIT:
running = False

rect.move_ip(v)

if rect.left < 0 or rect.right > width:
v[0] *= -1
if rect.top < 0 or rect.bottom > height:
v[1] *= -1

screen.fill(GRAY)
pygame.draw.rect(screen, RED, rect)
pygame.display.flip()

pygame.quit()

最佳答案

看来问题是程序运行太快了。由于在每个循环中完成的工作很少,因此矩形最终移动得太快而无法清楚地看到发生了什么。
您可以使用 pygame.time.Clock 限制程序的速度。目的。在您的循环开始之前,可能就在您的屏幕定义之后,您可以构建一个时钟。clock = pygame.time.Clock()然后在主循环中,作为每次迭代的第一步(紧跟在 while running: 之后),您可以输入 clock.tick(60)将循环限制为每秒运行 60 次 (60fps)。这使程序运行顺利,您将获得漂亮的弹跳矩形!tick方法效果很好,但在我的系统上似乎每隔一段时间就会出现小故障。如果您也遇到过这种情况或者想要更准确,可以使用 clock.tick_busy_loop(60)反而。
这两种滴答方法的工作方式相同:通过测量自上次调用 clock.tick() 以来耗时量。并在此基础上延迟一定的额外金额,以便达到目标 fps。
更多信息 ClockPygame docs .
我也需要import pygame.rect而不仅仅是 import rect ,但如果您没有收到导入错误,则应该没问题。

关于python - Pygame 显示仅在我退出时更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63929542/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com