0

今天我进一步学习了这个 Python roguelike 教程,并进入了清单。到目前为止,我可以拿起物品并使用它们。唯一的问题是,在访问库存时,即使我使用了该console_wait_for_keypress(True)功能,它也只能在瞬间可见。我不确定它为什么会消失。这是显示菜单的代码(在本例中为库存):

def menu(header,options,width):
    if len(options)>26: raise ValueError('Cannot have a menu with more than 26 options.')

    header_height=libtcod.console_get_height_rect(con,0,0,width,SCREEN_HEIGHT,header)
    height=len(options)+header_height

    window=libtcod.console_new(width,height)

    libtcod.console_set_default_foreground(window,libtcod.white)
    libtcod.console_print_rect_ex(window,0,0,width,height,libtcod.BKGND_NONE,libtcod.LEFT,header)

    y=header_height
    letter_index=ord('a')
    for option_text in options:
        text='('+chr(letter_index)+')'+option_text
        libtcod.console_print_ex(window,0,y,libtcod.BKGND_NONE,libtcod.LEFT,text)
        y+=1
        letter_index+=1

    x=SCREEN_WIDTH/2-width/2
    y=SCREEN_HEIGHT/2-height/2
    libtcod.console_blit(window,0,0,width,height,0,x,y,1.0,0.7)

    libtcod.console_flush()
    key=libtcod.console_wait_for_keypress(True)

    index=key.c-ord('a')
    if index>=0 and index<len(options): return index
    return None

我很感激任何人对这个问题的帮助或意见。

4

2 回答 2

0

它可能与旧版本的库有关,当你按下一个键时有一个事件,当你释放它时有另一个事件。因此,这可能会导致它在您释放密钥时出现和消失。

因此,如果您按住该键,请尝试查看屏幕是否保持亮起。

于 2013-03-09T06:17:41.493 回答
0

wait_for_keypress确实会在新闻和发布事件上触发。要解决此问题,请替换wait_for_keypresssys_wait_for_event, 指定仅在按下事件时触发。

文档

于 2013-12-26T20:01:33.047 回答