Python 在Pygame中,如何清除一个blit以替换另一个blit?

Python 在Pygame中,如何清除一个blit以替换另一个blit?,python,pygame,Python,Pygame,我正在制作一个游戏,在标题屏幕上,当我在坐标278365处悬停时按回车键时,我希望它显示新的背景(background1)。如何使其在这些坐标下按enter键时,删除当前背景并替换为新背景1 screen=pygame.display.set_mode((1024,768),0,32) background=pygame.image.load(bif).convert() background1=pygame.image.load(wi1).convert() cursor=pygame.im

我正在制作一个游戏,在标题屏幕上,当我在坐标278365处悬停时按回车键时,我希望它显示新的背景(background1)。如何使其在这些坐标下按enter键时,删除当前背景并替换为新背景1

screen=pygame.display.set_mode((1024,768),0,32)

background=pygame.image.load(bif).convert()
background1=pygame.image.load(wi1).convert()
cursor=pygame.image.load(mif).convert_alpha()

x,y =278,365


while True:
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()

        if event.type == KEYDOWN:
            if event.key == K_DOWN:
                x=420
                y=508
            elif event.key == K_UP:
                x=278
                y=365

            elif event.key == K_RETURN and x==420 and y==508:
                pygame.quit()
                sys.exit()

            elif event.key == K_RETURN and x==278 and y==365:







    screen.blit(background, (0,0))
    screen.blit(cursor, (x,y))
    pygame.display.update()

我没有时间测试它,但我希望它能工作:)

您不需要删除旧背景;只需blit新的背景而不是旧的背景。你不能“清除”blit,你只能在适当的位置blit其他东西。你可以使用每个循环清除整个屏幕,使用,不带rect参数。然后画出你的新场景。这不包括屏幕上的所有图像吗?如果您有两个图像,并且只想移动其中一个,此解决方案是否仍然有效?此解决方案适用于此问题,但如果您有更多图像,则应首先blit背景,然后是所有其他图像。据我所知,你的图片的顺序很重要。
# your code
while True:
    for event in pygame.event.get():
            # more of your code
            elif event.key == K_RETURN and x==420 and y==508:
                pygame.quit()
                sys.exit()

            elif event.key == K_RETURN and x==278 and y==365:
                #just blit the other image on top of it over it
                screen.blit(background1, 0, 0)
            else:
                #no action performed for other background, set normal background
                screen.blit(background, (0,0))
    screen.blit(cursor, (x,y))
    pygame.display.update()