如何删除/在pygame中替换文本(How to remove/replace text in py

2019-06-24 04:35发布

我是相当新的pygame的和香港专业教育学院打了我,我无法找到一个答案第一残端..

块传输文本,然后改变字符串相同的变量,游戏,而不是用新的替换原来的文本后,重叠的两个文本..?

Answer 1:

你必须先删除旧的文本。 通过创建曲面Font.render是普通的表面。 一旦Surface是块传送,其内容将成为目标表面的一部分,你必须控制目标表面抹去无论是从源表面的blit。

删除目的地表面的一种方法是的blit背景表面在其上。 背景表面为目标表面将是什么样子,而不喜欢它的文字或精灵什么。 另一种方法是用纯色填充面:

# pygame initialization goes here

screen = pygame.display.get_surface()
font = pygame.font.Font(None, 40)

font_surface = font.render("original", True, pygame.Color("white"));
screen.blit(surface, (0, 0))

screen.fill(pygame.Color("black")) # erases the entire screen surface
font_surface = font.render("edited", True, pygame.Color("white"));
screen.blit(surface, (0, 0))


Answer 2:

可以有一个其他的解决办法,即使它没有太大的不同。 以前的答案将删除所有画面,但你可以删除只是你的文字。 如果这是写在图像上,你将取代只是一个形象的一部分,通过获取文本大小和块传输对应的图像部分(pygame.surface.subsurface功能)。 或者,如果不是的话,你可以填满屏幕的一部分。 在这种情况下,你只删除文本。



Answer 3:

你也可以覆盖你的文字。
像这样:

label = myfont.render("Text", 0, (255,255,0))
screen.blit(label, (100, 100))
if x: //Parameter you check before overwrite
    label = myfont.render("Text", 0, BACKGROUND_COLOR)
    screen.blit(label, (100, 100))


文章来源: How to remove/replace text in pygame
标签: text pygame blit