libtcod 和 python 中的按键/控件?

发布于 2024-11-16 04:35:56 字数 766 浏览 6 评论 0原文

Python/Libtcod教程中://roguebasin.roguelikedevelopment.org/index.php/Main_Page" rel="nofollow">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

In the Python/Libtcod tutorial on Roguebasin the basic code for controlling your character uses the up down left and right keys. Is there a way to make it use WSAD or any other keys? Libtcod only allows me to use "special" keys, like the arrow keys, PGDN/PGUP, F1 F2 F3, but not regular alphanumeric keys.

#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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

扬花落满肩 2024-11-23 04:35:56

您必须执行以下操作:

    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_check_for_keypress.htmldoc\console\key_t.html文件夹。

You'll have to do something like this:

    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

Check doc\console\console_check_for_keypress.html and doc\console\key_t.html in your libtcod folder.

请止步禁区 2024-11-23 04:35:56

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

You could also use only the ASCII code for each key to save code space:

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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文