Python 如何使图像/图像在pygame中消失?
嗨,我想问一个问题,这个问题在这个网站上已经回答了很多次,但我从来没有找到一个合适的答案。如果游戏窗口中已经有背景图像,如何删除Pygame中的图像。Python 如何使图像/图像在pygame中消失?,python,pygame,Python,Pygame,嗨,我想问一个问题,这个问题在这个网站上已经回答了很多次,但我从来没有找到一个合适的答案。如果游戏窗口中已经有背景图像,如何删除Pygame中的图像。 在大多数答案中,他们说使用screen.fill(颜色),但会使区域变黑。如果没有背景图像,但有背景图像,则效果良好,当只有某个区域被涂成黑色时,它看起来很奇怪。我如何才能消除它?在这种特殊情况下,有没有其他方法可以删除图像。顺便说一句,我没有在这里添加任何特定代码,因为我在制作游戏时经常处理这个问题。你不能删除图像。必须在应用程序循环中重新绘制
在大多数答案中,他们说使用screen.fill(颜色),但会使区域变黑。如果没有背景图像,但有背景图像,则效果良好,当只有某个区域被涂成黑色时,它看起来很奇怪。我如何才能消除它?在这种特殊情况下,有没有其他方法可以删除图像。顺便说一句,我没有在这里添加任何特定代码,因为我在制作游戏时经常处理这个问题。你不能删除图像。必须在应用程序循环中重新绘制整个场景(包括背景)。请注意,这些图像只是在背景上绘制的一个像素点。图像“下方”的背景被覆盖,信息丢失: 主应用程序循环必须:
- 通过或处理事件
- 根据输入事件和时间(分别为帧)更新游戏状态和对象位置
- 清除整个显示或绘制背景
- 绘制整个场景(
所有对象)blit
- 通过或更新显示
导入pygame
pygame.init()
window=pygame.display.set_模式((500500))
clock=pygame.time.clock()
#主应用程序循环
运行=真
运行时:
时钟滴答(60)
#事件循环
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
运行=错误
#更新游戏状态并移动对象
# [...]
#清除显示器
窗口。填充(0)#或“blit”背景图像
#绘制场景-绘制所有对象
# [...]
#更新显示
pygame.display.flip()
只需添加一小部分:您不必在每一帧重新绘制整个场景。您只需重新绘制逻辑删除图像的部分。Pygame使用DirtySprite
和LayeredDirty
类使这一点变得有些简单。但事实是,今天的努力通常是不值得的。跟踪屏幕的哪些部分发生了变化的开销通常过高。15年前那是不一样的。