Python 如何在pygame中不让文本相互重叠?
我有两个文本示例,但它们只是重叠出现。如何使第二个取代第一个Python 如何在pygame中不让文本相互重叠?,python,text,pygame,Python,Text,Pygame,我有两个文本示例,但它们只是重叠出现。如何使第二个取代第一个 if player_x_coor <= -2750: text = font.render("text 1", True, WHITE) screen.blit(text, [100, 150]) if player_x_coor <= -6310: text = font.render("text 2", True, WHITE) screen.blit(
if player_x_coor <= -2750:
text = font.render("text 1", True, WHITE)
screen.blit(text, [100, 150])
if player_x_coor <= -6310:
text = font.render("text 2", True, WHITE)
screen.blit(text, [100, 150])
如果player_x_coor您需要在写入另一个文本之前擦除第一个文本
请参见类似的问题和
我认为有很多方法可以满足你的需求。最好的办法是:
- 在缓存中复制当前曲面(无文本)
- 渲染文本
- 在缓存的曲面中blit文本
当你在屏幕上画图时,所有已经存在的东西都无法自行清除。你必须用一些颜色来清空屏幕,比如说黑色。一旦屏幕清除上一帧,就可以从下到上重新绘制每个对象
如果在要替换的文本下面有一个简单的正方形,则可以只绘制该正方形(而不是重新绘制整个屏幕),然后绘制新文本。但是如果你不处理少数琐碎的形状,这会变得更复杂
通常,游戏循环用于每秒重绘帧x
。模式如下:
def game_loop():
BLACK = (0, 0, 0)
while True:
# Do this loop, at maximum, 50 times a second
clock.tick(50)
# Clear screen
screen.fill(BLACK)
# Draw background
# characters
# user interface
# Get user input
你的意思是用纯色填充屏幕吗?如果我只是填充屏幕,那么它会覆盖所有颜色,只显示第二个文本。填充一个矩形区域…如果你给出一个例子,可能会有所帮助,因为你的答案有点误导。你不能只删除文本。但是,您可以用窗口颜色填充文本占据的矩形区域。搜索有关pygame的类似问题可以提供一些(有用的)答案。检查我编辑的答案中的链接。当做