繁体   English   中英

Python Roguelike:库存消失

[英]Python Roguelike: Inventory Disappears

今天,我进一步学习了这个Python roguelike教程 ,并获得了清单。 截至目前,我可以拿起物品并使用它们。 唯一的问题是,即使我使用console_wait_for_keypress(True)函数,访问清单时也仅在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

感谢任何人的帮助或对此问题的投入。

它可能与该库的旧版本有关,该旧版本在您按一个键时有一个事件,而在释放它时有另一个事件。 因此,这可能导致它在您释放钥匙时显示和消失。

因此,如果您按住该键,请尝试查看屏幕是否保持打开状态。

实际上, wait_for_keypress确实会在按下和释放事件上触发。 要解决此问题,请将wait_for_keypress替换为sys_wait_for_event ,指定仅在按下事件时触发。

文献资料

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM