2013-03-09 4 views
0

오늘 나는 this Python roguelike tutorial으로 진행하여 인벤토리에 들어갔습니다. 현재로서는 항목을 선택하여 사용할 수 있습니다. 단 하나의 문제는 인벤토리에 액세스 할 때 console_wait_for_keypress(True) 기능을 사용 했음에도 불구하고 초 단위로만 볼 수 있다는 것입니다. 나는 그것이 왜 사라지는 지 확신하지 못합니다. 다음은 메뉴 (이 경우 인벤토리)를 표시하는 코드입니다.Python Roguelike : 인벤토리가 사라짐

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 

누구든지 도움을 주거나이 문제를 입력 해 주시면 감사하겠습니다.

+0

"The python roguelike tutorial"? 특정 하나? 당신이 일하는 것이 당신이 기대하는만큼 유명하지 않다고 생각합니다. –

+0

오, 예, 어제이 튜토리얼에 대한 글을 올렸습니다 ... 튜토리얼에 대한 링크가 있습니다 : http://roguebasin.roguelikedevelopment.org/index.php?title=Complete_Roguelike_Tutorial,_using_python%2Blibtcod –

답변

0

키를 누를 때 이벤트가 있고 릴리스 할 때 다른 이벤트가있는 라이브러리의 이전 버전과 관련이있을 수 있습니다. 이렇게하면 키를 놓으면 표시되고 사라질 수 있습니다.

키를 계속 누르고 있으면 화면이 계속 켜져 있는지 확인하십시오.

+0

키를 계속 누르면 인벤토리 화면이 나타나서 정말 빨리 사라지는 것과 같습니다. 그런 다음 키를 놓으면 인벤토리 화면이 유지됩니다 (몇 초 동안 키를 누른 후에 만). 이것은 나를위한 진짜 당황입니다. –

0

wait_for_keypress 실제로 프레스 및 릴리스 이벤트에서 트리거됩니다. 이 문제를 해결하려면 wait_for_keypresssys_wait_for_event으로 대체하고 프레스 이벤트에서만 트리거하도록 지정하십시오.

Documentation