如何使用python中的pygame设置静态背景?

如何使用python中的pygame设置静态背景?,python,pygame,pygame-clock,Python,Pygame,Pygame Clock,我正在用python编写pygame的演示,希望在静态背景上绘制一个移动对象。但是我不想更新静态背景 首先,我想画两个图层,一个用于静态背景,另一个用于移动对象。但是,我找不到任何类似层的属性(就像photoshop中的层)。那我该怎么处理呢 这是我的密码: # -*- coding: utf-8 -*- import sys from settings import Settings import pygame import math def run_game(): #

我正在用python编写pygame的演示,希望在静态背景上绘制一个移动对象。但是我不想更新静态背景

首先,我想画两个图层,一个用于静态背景,另一个用于移动对象。但是,我找不到任何类似层的属性(就像photoshop中的层)。那我该怎么处理呢

这是我的密码:

# -*- coding: utf-8 -*-
import sys
from settings import Settings
import pygame
import math


def run_game():
    # 
    pygame.init()
    ai_settings = Settings()
    screen = pygame.display.set_mode((ai_settings.screen_width, ai_settings.screen_height))
    pygame.display.set_caption("Catch Me If You CAN")

    radius = 10

    # 
    while True:

        # 
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                sys.exit()

        # 
        screen.fill(ai_settings.bg_color)

        pygame.draw.rect(screen, [0, 0, 0], [math.cos(radius)*100+300, math.sin(radius)*50+200, 10, 10], 4)

        radius = radius + 0.1

        # 
        pygame.display.flip()


run_game()
我想要实现的是在开始时绘制背景,而不需要重置背景

那是不可能的。当你把东西画到屏幕表面时,它就在那里。为了摆脱它,你必须画一些新的东西

最简单的方法是,在主循环的每次迭代中,用纯色填充屏幕,或将背景表面闪烁到屏幕上

还有一种更先进的技术(比如仅用另一个曲面覆盖的背景重新绘制屏幕区域),pygames以不同的
类的形式提供了一些抽象。例如,有一个功能可以从
的任何精灵中“清除”屏幕(并通过使用提供的曲面重新绘制这些区域来实现)

首先,我想画两个图层,一个用于静态背景,另一个用于移动对象。但是,我找不到任何类似层的属性

您正在查找该类,该类将按照其
\u层
-属性的顺序绘制其精灵

如果您是pygame新手,您应该研究如何使用pygame的和类,它们可以满足您的需要,并且在99%的情况下都足够好


tl;医生:

你的选择是:

1) 在游戏循环的每次迭代中填充屏幕表面
2) 在游戏循环的每次迭代中使用精灵和
组及其
清除
功能

3) 使用精灵和
LayeredUpdates
-组并添加背景精灵

是的,此方法可以在曲面中绘制背景,但主循环将更新曲面,我需要重置背景,它不是静态背景。我想要实现的是在开始时绘制背景,而不需要重置背景