所以,我正在 Pygame 上编写一个游戏,我试图在游戏中添加背景图像。然而,当游戏运行时,当向下移动精灵时,它会消失在背景图像中,只有当精灵再次向上移动时才会重新出现。
这是我用来向游戏添加背景图像的游戏代码部分。
class Game:
def __init__(self):
pygame.init()
self.window = pygame.display.set_mode((DISPLAYW, DISPLAYH))
pygame.display.set_caption('Action!')
self.clock = pygame.time.Clock()
self.run = True
self.play()
def play(self):
initial_pos = math.Vector2(int(DISPLAYW / 4), int(DISPLAYH / 4))
self.play = True
self.sprites = pygame.sprite.LayeredUpdates()
self.blocks = pygame.sprite.LayeredUpdates()
self.enemy = pygame.sprite.LayeredUpdates()
self.player = Player(self, initial_pos)
def events(self):
for event in pygame.event.get():
if event.type == pygame.QUIT:
self.play = False
self.run = False
if event.type == pygame.KEYDOWN:
...
def update(self):
self.sprites.update()
def draw(self):
self.sprites.draw(self.window)
self.clock.tick(FPS)
pygame.display.update()
def main(self):
background = pygame.image.load('Grass.png')
while self.play:
self.events()
self.window.fill([255, 255, 255])
self.window.blit(background, [0, 0])
self.update()
self.draw()
self.run = False
game = Game()
game.menu()
while game.run:
game.main()
pygame.quit()
sys.exit()
但是,错误仍然存在...
这是一个顺序问题。在绘制场景中的所有内容后,您必须在应用程序循环的最后更新显示:
def main(self):
background = pygame.image.load('Grass.png')
while self.play:
# handle events
self.events()
# draw background
self.window.fill([255, 255, 255])
self.window.blit(background, [0, 0])
# draw objects
self.draw()
# update the display
self.update()
self.run = False