关于python:Pygame,有没有办法制作“屏幕图层”?

Pygame, is there a way to make “screen layers”?

我正在将Tank游戏作为学校项目进行开发,并且正在尝试使其尽可能的易于使用(带有可自定义的按键绑定,显示设置等)。但是,我不想让游戏窗口失去比例,所以我认为我会在游戏窗口的侧面添加边框以支持宽屏。

我已附上一张图片来说明我在寻找什么:

enter image description here

为此,我需要一种制作"屏幕图层"的方法。基本层是整个屏幕,在其两侧添加了一些图形,并带有显示分数的字体。然后在屏幕中间渲染第二层,即游戏窗口,其宽度和高度明显小于基础层。

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

非常感谢您提供一些有关如何实现此目标的提示! :)我在Class和pygame方面没有太多经验,所以如果您也能给出详尽的描述,那将是非常棒的! :D


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

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

1
2
3
4
5
6
7
8
9
10
# 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)

然后将其涂抹到屏幕上

1
screen.blit(game_surf, the_position)

最简单的方法:为每个"层"创建一个组。

1
2
3
4
import pygame
front_sprites = pygame.sprite.Group()
middle_sprites = pygame.sprite.Group()
background_sprites = pygame.sprite.Group()

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

1
2
3
background_sprites.draw(screen)
middle_sprites.draw(screen)
front_sprites.draw(screen)