Pygame,有没有办法让"screen layers"?

Pygame, is there a way to make "screen layers"?

我正在将 Tank 游戏作为一个学校项目进行开发,我正在努力使其尽可能对用户友好(使用可自定义的键绑定、显示设置等)。但是,我不希望游戏 window 失去它的比例,所以我想我会在游戏的两侧添加边框 window 以支持宽屏。

我附上了一张图片来说明我正在寻找的内容:

因此,为了使它起作用,我需要一种制作 "screen layers" 的方法。基础层是整个屏幕,两侧添加了一些图形和一个显示乐谱的字体。然后第二层将在屏幕中间呈现,这将是游戏window,其宽度和高度将明显小于基础层。

此时,游戏从屏幕左上角开始渲染,直到所有方块都渲染完。所以这就是为什么我认为最好将图块渲染在位于屏幕表面中间的单独表面上。

非常感谢有关如何使这成为可能的一些提示! :) 我在 类 和 pygame 方面没有那么多经验,所以如果你也能给出充实的描述就太棒了! :D

只需在不同的表面上绘制不同的东西。

例如,为您的游戏 window 创建一个 Surface(我们称它为 game_surf),然后在新的 Surface 上绘制您的坦克和子弹等而不是 pygame 主 window(这只是另一个 Surface)。

# the main window
screen = pygame.display.init() 

# just a regular surface
game_surf = pygame.surface.Surface(width, height)

...
# in your main loop
    # or however you draw your sprites
    your_sprite_group.draw(game_surf)

然后blit到屏幕上

screen.blit(game_surf, the_position)

最简单的方法:为每个 'layer'.

创建一个组
import pygame
front_sprites = pygame.sprite.Group()
middle_sprites = pygame.sprite.Group()
background_sprites = pygame.sprite.Group()

然后,按照以下顺序将它们全部绘制到屏幕上:

background_sprites.draw(screen)
middle_sprites.draw(screen)
front_sprites.draw(screen)