gpt4 book ai didi

python - 为什么这个 pygame 程序会卡住?

转载 作者:太空宇宙 更新时间:2023-11-03 17:30:47 25 4
gpt4 key购买 nike

下面是一个使用 pygame 的程序,它会随着值的变化更新直方图。

然而,运行几秒钟后,程序就卡住了。有人能指出错误吗?

import random
import pygame

SCREEN_SIZE = SCREEN_WIDTH, SCREEN_HEIGHT = 800, 600
FRAME_RATE = 50
BACKGROUND_COLOR = pygame.Color("white")
BAR_COLOR = pygame.Color("Black")
BUCKET_CNT = 20

pygame.init()

screen = pygame.display.set_mode(SCREEN_SIZE)
screen.fill(BACKGROUND_COLOR)

buckets = BUCKET_CNT*[0]
bar_w = SCREEN_WIDTH / BUCKET_CNT

clock = pygame.time.Clock()
background = pygame.Surface(screen.get_size())
background.fill(BACKGROUND_COLOR)

while True:
clock.tick(FRAME_RATE)
random.seed()
idx = random.randrange(BUCKET_CNT)
buckets[idx] += 1

# Create rectangles representing bars in the histogram.
bars = [pygame.Rect(i*bar_w,
SCREEN_HEIGHT - buckets[i],
bar_w, buckets[i]) for i in range(BUCKET_CNT)]

# Draw bars on the background
[pygame.draw.rect(background, BAR_COLOR, b, 5) for b in bars]

# Blit the background
screen.blit(background, (0, 0))

# Show "stuff" on the screen
pygame.display.flip()

编辑

这些都是非常好的建议。我已经更改了我的代码以遵循它们,但是代码仍然卡住。下面是代码现在的样子:

import random
import pygame

SCREEN_SIZE = SCREEN_WIDTH, SCREEN_HEIGHT = 800, 600
FRAME_RATE = 50
BACKGROUND_COLOR = pygame.Color("white")
BAR_COLOR = pygame.Color("Black")
BUCKET_CNT = 20
GROWTH_RATE = 10

pygame.init()

screen = pygame.display.set_mode(SCREEN_SIZE)
screen.fill(BACKGROUND_COLOR)

buckets = BUCKET_CNT*[0]
bar_w = SCREEN_WIDTH / BUCKET_CNT

clock = pygame.time.Clock()
background = pygame.Surface(screen.get_size())
background.fill(BACKGROUND_COLOR)

# Create rectangles representing bars in the histogram.
bars = [pygame.Rect(i*bar_w,
SCREEN_HEIGHT - buckets[i],
bar_w, buckets[i]) for i in range(BUCKET_CNT)]
random.seed()
while True:
clock.tick(FRAME_RATE)
idx = random.randrange(BUCKET_CNT)
buckets[idx] += 1

bars[idx].inflate_ip(0, GROWTH_RATE)

# Draw bars on the background
pygame.draw.rect(background, BAR_COLOR, bars[idx])

# Blit the background
screen.blit(background, (0, 0))

# Show "stuff" on the screen
pygame.display.flip()

最佳答案

对于占用了大家的时间,我深表歉意。事实证明,代码没有问题。我的工作机器因各种进程而重载。它正在运行多线程测试和虚拟机(当前正在编译一个非常大的代码库)。这一切都解释了为什么我的程序卡住了。感谢 DJMcMayhem 尝试代码。特别感谢 Alex Van Leiw。感谢您,我今天学到了一些关于 pygame 的新知识。

关于python - 为什么这个 pygame 程序会卡住?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31884304/

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