你将如何在PyGame中绘制多个屏幕(仅在一个窗口中)?

时间:2013-04-06 06:00:58

标签: python pygame game-engine

我正在尝试将一些代码从Javascript移植到Python,我甚至无法确定从哪里开始。我看过PyGame的十几个教程,但似乎没有人为我点击。所以,我希望在这里得到一个快速的例子,或者至少在正确的方向上有一点。

我想制作一些屏幕,我可以在它们之间来回切换,具体取决于用户当时正在做什么,甚至可以并排显示两个屏幕。目前,我所拥有的只是一些在屏幕上绘制随机圆圈的Javascript。 PyGame逻辑是我遇到的唯一问题。

Here's my javascript for reference.

2 个答案:

答案 0 :(得分:1)

您可以为要创建的每个子屏幕创建Subsurface

然后您可以将每个视为全屏/单个表面,但它们仍然会引用原始屏幕。

答案 1 :(得分:0)

Pygame是SDL的包装器。 SDL使用表面来表示位图,或者可以在屏幕上绘制的任何内容。使用pygame.display.set_mode((w,h),0,d),您可以获得曲面或整个画布。然后,您可以绘制或blit其他曲面,然后调用flip()以显示更改。如果您希望有几个屏幕,则可以使用当前状态编号,并相应地对屏幕进行blit。 例如:

if(current_state == MAIN_SCREEN):
    drawAll(screen)
else
    drawEnemiesOnly(screen)

您可以使用数字键更改屏幕:

for event in pygame.event.get():
        if event.type == KEY_DOWN:
            if(event.key == K_1):
                current_state = 1