Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
libtcod和python中的击键/控件?_Python_Roguelike_Libtcod - Fatal编程技术网

libtcod和python中的击键/控件?

libtcod和python中的击键/控件?,python,roguelike,libtcod,Python,Roguelike,Libtcod,在中,用于控制角色的基本代码使用上下左右键。有没有办法让它使用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

在中,用于控制角色的基本代码使用上下左右键。有没有办法让它使用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

您必须执行以下操作:

    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

检查
libtcod
文件夹中的
doc\console\console\u Check\u是否有keypress.html
doc\console\key\t.html

您也可以对每个键仅使用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