Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使图像/图像在pygame中消失?_Python_Pygame - Fatal编程技术网

Python 如何使图像/图像在pygame中消失?

Python 如何使图像/图像在pygame中消失?,python,pygame,Python,Pygame,嗨,我想问一个问题,这个问题在这个网站上已经回答了很多次,但我从来没有找到一个合适的答案。如果游戏窗口中已经有背景图像,如何删除Pygame中的图像。 在大多数答案中,他们说使用screen.fill(颜色),但会使区域变黑。如果没有背景图像,但有背景图像,则效果良好,当只有某个区域被涂成黑色时,它看起来很奇怪。我如何才能消除它?在这种特殊情况下,有没有其他方法可以删除图像。顺便说一句,我没有在这里添加任何特定代码,因为我在制作游戏时经常处理这个问题。你不能删除图像。必须在应用程序循环中重新绘制

嗨,我想问一个问题,这个问题在这个网站上已经回答了很多次,但我从来没有找到一个合适的答案。如果游戏窗口中已经有背景图像,如何删除Pygame中的图像。
在大多数答案中,他们说使用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年前那是不一样的。