Клавиши / элементы управления в libtcod и python? - PullRequest
2 голосов
/ 20 июня 2011

В учебнике Python / Libtcod на Roguebasin базовый код для управления вашим персонажем использует клавиши вверх, вниз, влево и вправо.Есть ли способ заставить его использовать WSAD или любые другие ключи?Libtcod позволяет мне использовать только «специальные» клавиши, такие как клавиши со стрелками, PGDN / PGUP, F1 F2 F3, но не обычные буквенно-цифровые клавиши.

#movement keys
def handle_keys():
    global playerx, playery


    if libtcod.console_is_key_pressed(libtcod.KEY_UP):
        playery -= 1

    elif libtcod.console_is_key_pressed(libtcod.KEY_DOWN):
        playery += 1

    elif libtcod.console_is_key_pressed(libtcod.KEY_LEFT):
        playerx -= 1

    elif libtcod.console_is_key_pressed(libtcod.KEY_RIGHT):
        playerx += 1

Ответы [ 2 ]

4 голосов
/ 22 июня 2011

Вам нужно будет сделать что-то вроде этого:

    key = libtcod.console_check_for_keypress(libtcod.KEY_PRESSED)

    if key.vk == libtcod.KEY_CHAR:
        if key.c == ord('w'):
            playery -= 1
        elif key.c == ord('s'):
            playery += 1
        elif key.c == ord('a'):
            playerx -= 1
        elif key.c == ord('d'):
            playerx += 1

Отметьте doc\console\console_check_for_keypress.html и doc\console\key_t.html в папке libtcod.

0 голосов
/ 04 января 2017

Вы также можете использовать только код ASCII для каждого ключа для экономии места кода:

if key.c == 119: #w
        playery -= 1
    elif key.c == 115: #s
        playery += 1
    elif key.c == 97: #a
        playerx -= 1
    elif key.c == 100: #d
        playerx += 1
...