重复瓷砖背景pygame

时间:2012-06-01 23:57:04

标签: python opengl pygame

pygame中是否有类似的功能?

screen.fill(pygame.image.load('brick.bmp').convert()) 

我想用图像填充窗口(背景)以产生类似于此的效果:

enter image description here

我唯一的想法就是将每块砖块放在屏幕上,但我认为这会减慢游戏速度。有没有人知道如何做到这一点(并提供一些示例代码)?

下面是一个有效但速度慢的方法的片段

    While True:
        for y in range(0,600,32):
            for x in range(0,800,32):
                screen.blit( self.img,(x,y))
        ...
        pygame.display.flip()

2 个答案:

答案 0 :(得分:3)

  

将每块砖块放在屏幕上,但我认为这会减慢游戏速度。

没有你想象的那么多。 bliting非常快。即使存在某种“填充”命令,它仍然相当于将图像复制到表面直到表面被覆盖。

如果背景图像是静止的,您可以在程序启动时渲染到屏幕外表面,而不是通过填充纯色来擦除屏幕,而只是将预渲染的背景改为blit。

答案 1 :(得分:2)

我无法在Pygame中找到此功能。但是,我有办法提高方法的性能。 您可以先创建曲面。我们称之为bgSurface。然后使用双循环方法将所有砖块blit到bgSurface。然后在主循环中,执行screen.blit(bgSurface, (0, 0))。试一试。