如何在pygame中阻止对象重叠



当我运行代码并按下左箭头时,宇宙飞船正在重叠/相乘。我希望该对象停止复制。这是代码:

import pygame
import sys
pygame.init()
screen = pygame.display.set_mode((288, 512))
clock = pygame.time.Clock()
spaceship = pygame.image.load(r'C:UsersAnonymousDownloadsNew folderspaceship.png')
x = 150
y = 495
spaceship_rect = spaceship.get_rect(center=(x, y))
velocity = 10
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()

keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT] and x > 0:
x -= velocity
spaceship_rect = spaceship.get_rect(center=(x, y))
screen.blit(spaceship, spaceship_rect)
pygame.display.update()
clock.tick(120)

在曲面上绘制的任何对象都会永久停留在那里。绘制对象只会持续更改曲面中某些像素的颜色
在绘制场景并更新显示之前,必须通过pygame.Surface.fill清除每帧中的显示:

screen.fill(0)
screen.blit(spaceship, spaceship_rect)
pygame.display.update()

完整示例:

import pygame
import sys
pygame.init()
screen = pygame.display.set_mode((288, 512))
clock = pygame.time.Clock()
spaceship = pygame.image.load(r'C:UsersAnonymousDownloadsNew folderspaceship.png')
x = 150
y = 495
spaceship_rect = spaceship.get_rect(center=(x, y))
velocity = 10
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()

keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT] and x > 0:
x -= velocity
spaceship_rect = spaceship.get_rect(center=(x, y))
screen.fill(0)
screen.blit(spaceship, spaceship_rect)
pygame.display.update()
clock.tick(120)

最新更新