0

今日、私はさらにこの Python ローグライク チュートリアルに進み、インベントリにたどり着きました。今のところ、アイテムを拾って使用できます。唯一の問題は、インベントリにアクセスすると、機能を使用したにもかかわらず、ほんの一瞬しか表示されないことです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_keypressますsys_wait_for_event

ドキュメンテーション

于 2013-12-26T20:01:33.047 に答える