чего я хочу добиться, так это нарисовать фон в начале и не нужно сбрасывать фон
Это невозможно.Когда вы рисуете что-то на поверхности экрана, это просто там.Чтобы избавиться от этого, вам нужно нарисовать что-то новое.
Самый простой способ - просто заполнить экран сплошным цветом или перетащить поверхность фона на экран после каждой итерации основного цикла.
Существуют более продвинутые методы (например, перерисовываются только области экрана с фоном, который перезаписан другой поверхностью), и pygames предлагает некоторые абстракции в виде различных классов Group
.Например, есть функция clear()
, которая «очищает» экран от любых спрайтов Group
(и делает это путем перерисовки этих областей с предоставленной поверхностью).
Сначала я хочу нарисовать два слоя, один для статического фона, а другой для движущегося объекта.Однако я не нахожу никаких атрибутов, таких как слои
Вы ищете класс LayeredUpdates
, который будет рисовать свои спрайты в порядке их _layer
-атрибут.
Если вы новичок в Pygame, вы должны изучить, как использовать классы Pygame Sprite
и Group
, которые будут делать то, что вынужны и достаточно хороши в 99% случаев.
tl; др:
Ваши варианты:
1)заполнять поверхность экрана каждую итерацию игрового цикла
2) использовать спрайты и Group
и его функцию clear
каждую итерацию игрового цикла
3) использовать спрайты и LayeredUpdates
-группу и добавлятьфоновый спрайт