如何在pygame中不让文本相互重叠?

时间:2016-08-22 21:42:57

标签: 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(text, [100, 150])

如您所见,我尝试通过分配text = font.render("text 2", ...)

将第一个文本替换为第二个文本

但是第一个测试仍然显示,以便第二个测试重叠。

2 个答案:

答案 0 :(得分:2)

当您在屏幕上绘制时,已经存在的所有内容都不会自行清除。你必须用一些颜色使屏幕空白,让我们说黑色。一旦屏幕没有上一帧,您就可以从下到上重新绘制每个对象。

有可能,如果您在文本下面有一个简单的正方形,您试图替换,只绘制该正方形(而不是重绘整个屏幕),然后绘制新文本。但如果你不处理少量的形状,这会变得更加复杂。

通常,游戏循环用于每秒重绘帧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

答案 1 :(得分:-1)

在写另一个文本之前,你需要删除第一个文本。

查看类似问题herehere

我认为有很多方法可以做你想做的事。最好的方法是:

  • 将当前曲面(无文字)复制到缓存中
  • 渲染文字
  • blit缓存表面中的文字