在pygame中打印用户的输入

时间:2018-02-13 15:35:35

标签: python python-3.x pygame

我几乎完成了一个我正在为一个学校项目工作的游戏,但现在我在游戏的一小部分上挣扎。我能够获取用户的名称,并将其用作例如将其写入排行榜csv文件,但我想这样做,以便无论用户输入什么类型,游戏都会打印用户的输入到屏幕就像您在搜索框中输入一样,无论您输入什么密钥,该密钥都会显示在搜索框中。

1 个答案:

答案 0 :(得分:2)

只需创建一个字体对象,用它来渲染文本(它会给你一个pygame.Surface),然后将文本表面blit到屏幕上。

此外,要将字母添加到user_input字符串,您只需将其与event.unicode属性连接即可。

这是一个最小的例子:

import pygame as pg

pg.init()

screen = pg.display.set_mode((640, 480))
clock = pg.time.Clock()
FONT = pg.font.Font(None, 40)  # A font object which allows you to render text.
BG_COLOR = pg.Color('gray12')
BLUE = pg.Color('dodgerblue1')

user_input = ''

done = False
while not done:
    for event in pg.event.get():
        if event.type == pg.QUIT:
            done = True
        elif event.type == pg.KEYDOWN:
            if event.key == pg.K_BACKSPACE:
                user_input = user_input[:-1]
            else:
                user_input += event.unicode

    screen.fill(BG_COLOR)
    # Create the text surface.
    text = FONT.render(user_input, True, BLUE)
    # And blit it onto the screen.
    screen.blit(text, (20, 20))
    pg.display.flip()
    clock.tick(30)

pg.quit()