运行Python程序时无响应

1 投票
1 回答
11030 浏览
提问于 2025-04-17 16:36

我正在用Python和Libtcod制作一个类Roguelike的游戏。当我运行代码时,窗口会弹出来,符号会在屏幕上显示,但窗口随后就卡住了。然后它会显示“没有响应”。我不明白发生了什么。以下是代码:

import libtcodpy as libtcod;

SCREEN_WIDTH = 80;
SCREEN_HEIGHT = 50;
LIMIT_FPS = 20;

libtcod.console_set_custom_font('arial10x10.png', libtcod.FONT_TYPE_GREYSCALE | libtcod.FONT_LAYOUT_TCOD);

libtcod.console_init_root(SCREEN_WIDTH, SCREEN_HEIGHT, 'Lets Crawl', False);

libtcod.sys_set_fps(LIMIT_FPS);

playerx = SCREEN_WIDTH/2;
playery = SCREEN_HEIGHT/2;

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


while not libtcod.console_is_window_closed():
    #libtcod.console_set_default_foreground(0, libtcod.white);
    libtcod.console_put_char(0, 1, 1, 'b');
    libtcod.console_flush();

1 个回答

1

你的游戏没有反应,是因为它在不停地循环(就是你的 while 循环)。

你应该在循环的某个地方调用 libtcod.console_wait_for_keypress(True) 或者 libtcod.console_check_for_keypress(),这样才能处理用户的输入。

撰写回答