Pygame,有没有办法制作“屏幕层”?

时间:2015-11-10 12:50:36

标签: python pygame screen layer

我正在研究坦克游戏作为学校项目,我正在努力使其尽可能方便用户(使用可自定义的键绑定,显示设置等)。但是,我不希望游戏窗口失去比例,所以我想我会在游戏窗口的两侧添加边框以支持宽屏幕。

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

enter image description here

因此,为了实现这一点,我需要一种方法来制作“屏幕图层”。基础层是整个屏幕,两侧添加了一些图形和显示分数的字体。然后第二层将在屏幕中间呈现为游戏窗口,其宽度和高度明显小于基础层。

此刻,游戏从屏幕的左上角渲染,直到所有图块都被渲染出来。所以这就是为什么我认为最好让瓷砖在位于屏幕中间的单独表面上渲染出来。

非常感谢有关如何实现这一目标的一些提示! :)我在Classes和pygame中没有那么多经验,所以如果你能给出一个充实的描述那就太棒了! :d

2 个答案:

答案 0 :(得分:3)

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

例如,为您的游戏窗口创建一个Surface(让我们称之为game_surf),并在新的Surface而不是pygame主窗口上绘制您的坦克和子弹等(这只是另一个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)

答案 1 :(得分:0)

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

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)