Как создать пустую строку и обновить ее - PullRequest
2 голосов
/ 27 февраля 2020

Я делаю игру с Pygame, и я хочу, чтобы игрок вводил свое имя, чтобы оно отображалось на экране во время игры. Я пробовал со списком:

def input_player_name():
    player_name_screen = True
    name_list = []
    win.blit(player_name_bg, (0, 0))
    while player_name_screen:
        for event in pygame.event.get():
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_a:
                    name_list.append("a")
                elif event.key == pygame.K_b:
                    name_list.append("b")
                elif event.key == pygame.K_c:
                    name_list.append("c")
                elif event.key == pygame.K_d:
                    name_list.append("d")
                elif event.key == pygame.K_e:
                    name_list.append("e")
                elif event.key == pygame.K_RETURN:
                    print (name_list)
                    player_name_screen = False

        pygame.display.update()
        clock.tick(fps)

Это работает. Но я хочу сделать это со строкой, поэтому она создает пустую строку, которую игрок обновляет, набирая свое имя на клавиатуре. Есть ли способ сделать это? Или, может быть, вы можете перенаправить меня на уже существующую страницу, где кто-то задал этот вопрос (я пока не смог его найти)? Спасибо за ваш ответ = D

1 Ответ

2 голосов
/ 27 февраля 2020

Использование event.unicode:

Например:

player_name_screen = True
name = ""

while player_name_screen:
    for event in pygame.event.get():
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_RETURN:
                print (name)
                player_name_screen = False
            else:
                name += event.unicode

Если вы хотите ограничить ввод букв, то вы можете сделать что-то вроде:

if event.type == pygame.KEYDOWN:
    if event.key == pygame.K_RETURN:
        print (name)
        player_name_screen = False
    elif 'a' <= event.unicode <= 'z' or 'A' <= event.unicode <= 'Z':
        name += event.unicode
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...