Pygame 如何在不擦除任何其他内容的情况下更改背景颜色
Pygame how to change background colour without erasing anything else
我正在 Python 和 Pygame 一起画这幅画。我有绘制圆形和矩形的功能,但我想添加一个功能,让我可以更改背景颜色,同时不擦除其他圆形和矩形。这是矩形的代码:
def drawRect(surface, colour, x, y, w, h):
pygame.draw.rect(surface, colour, (x, y, w, h))
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_s:
#print("pressed")
drawRect(screen, RANDOM_COLOUR, RANDOM_X, RANDOM_Y, RANDOM_SIZE_X, RANDOM_SIZE_Y)
pygame.display.flip()
它的功能最好,但任何解决方案都可以。
你不能。您必须在每一帧中重新绘制整个场景。
为形状创建 类。例如RectShape
class RectShape:
def __init__(self, colour, x, y, w, h):
self.colour = colour
self.rect = pygame.Rect(x, y, w, h)
def draw(self, surface):
pygame.draw.rect(surface, self.colour, self.rect)
将形状添加到列表中。用你想要的颜色清除背景,绘制列表中的所有形状,并在每一帧刷新显示:
object_list = []
background_color = pygame.Color('gray')
run = True
while run:
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_s:
rect = RectShape(RANDOM_COLOUR, RANDOM_X, RANDOM_Y, RANDOM_SIZE_X, RANDOM_SIZE_Y)
object_list.append(rect)
screen.fill(background_color)
for obj in object_list:
obj.draw(screen)
pygame.display.flip()
我正在 Python 和 Pygame 一起画这幅画。我有绘制圆形和矩形的功能,但我想添加一个功能,让我可以更改背景颜色,同时不擦除其他圆形和矩形。这是矩形的代码:
def drawRect(surface, colour, x, y, w, h):
pygame.draw.rect(surface, colour, (x, y, w, h))
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_s:
#print("pressed")
drawRect(screen, RANDOM_COLOUR, RANDOM_X, RANDOM_Y, RANDOM_SIZE_X, RANDOM_SIZE_Y)
pygame.display.flip()
它的功能最好,但任何解决方案都可以。
你不能。您必须在每一帧中重新绘制整个场景。
为形状创建 类。例如RectShape
class RectShape:
def __init__(self, colour, x, y, w, h):
self.colour = colour
self.rect = pygame.Rect(x, y, w, h)
def draw(self, surface):
pygame.draw.rect(surface, self.colour, self.rect)
将形状添加到列表中。用你想要的颜色清除背景,绘制列表中的所有形状,并在每一帧刷新显示:
object_list = []
background_color = pygame.Color('gray')
run = True
while run:
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_s:
rect = RectShape(RANDOM_COLOUR, RANDOM_X, RANDOM_Y, RANDOM_SIZE_X, RANDOM_SIZE_Y)
object_list.append(rect)
screen.fill(background_color)
for obj in object_list:
obj.draw(screen)
pygame.display.flip()