gpt4 book ai didi

python - 为什么 pygame 很难一次绘制 80 个图像?

转载 作者:行者123 更新时间:2023-12-04 09:31:49 24 4
gpt4 key购买 nike

我开始用 pygame 编写“2D Minecraft”只是为了好玩。
然而现在,即使在屏幕上绘制大约 70 张图像,也会导致 FPS 计数下降到低至 20。
图像加载和缩放发生在问题的开始。当程序运行时,只执行玩家物理(这不是问题)和块的绘制。
我在 Github 上发布了代码.

最佳答案

  • 我建议你使用 .convert() 每个加载的图像到 FPS 的两倍
    blockTextures = {block: transform.scale(image.load('blocks/' + block + '.png').convert(), (128, 128)) for block in allBlocks}
    breakTextures = [transform.scale(image.load('blocks/destroy_' + str(i) + '.png').convert(), (128, 128)) for i in range(10)]

  • https://www.pygame.org/docs/ref/surface.html#pygame.Surface.convert
  • 在每一帧中做更少的计算(物理)。
    记住玩家方向所需的帧
     class Player: # This class controls and draws the player
    def __init__(self):
    self.pos = [0, 0]
    self.velocity = [0, 0]

    self.imageRight = transform.scale(image.load('steve.png'), (57, 230))
    self.imageLeft = transform.flip(self.imageRight, True, False)
    self.AImage = self.imageLeft

    def draw(self, screen, size):
    screen.blit(self.AImage, (size[0] / 2 - 28, size[1] / 2 - 115))

    def physics(self, blocks): # The first part checks for input, the second part does the physics
    pressed = key.get_pressed()
    if pressed[K_LEFT]:
    self.velocity[0] -= 0.1
    self.AImage = self.imageLeft

    if pressed[K_RIGHT]:
    self.velocity[0] += 0.1
    self.AImage = self.imageRight

  • 并且将 FPS 提高 10%
  • 如果您在游戏开始时对一张大图计算一次世界,然后将其中的一部分一帧一帧地绘制到屏幕上,那么 FPS 可能会更好。我不确定。
  • 关于python - 为什么 pygame 很难一次绘制 80 个图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62813829/

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