2014-04-05 3 views
0

저는 지금 Roguelike를 ncurses와 C++에서 작업하고 있습니다. 지금 내가 제목 화면을 코딩하고있어,이 같은 :ncurses에서 선택 항목의 색상을 지정하는 방법은 무엇입니까?

game name 
company name 

(n)ew game 
(q)uit 

하지만 좋겠 정말 사용자가 자신의 선택을 강조하기 위해 화살표 키를 사용하고 아마도 나중에이 기능을 다시 사용할 수 할 수와 같은 인벤토리 화면 용. 문제는 새로운 게임을 색칠하는 방법을 알아 내지 못하고 그 선택이 끝나면 종료하지 않는 것입니다. 지금까지 내 코드는 다음과 같습니다.

mvaddstr((height-1)/2, ((width-4)/2)-(newgame_button.length()/2),newgame_button.c_str()); 
mvaddstr((height+1)/2, ((width-4)/2)-(quit_button.length()/2),quit_button.c_str()); 
mvaddstr((height-10)/2, ((width-4)/2)-(titlename.length()/2), titlename.c_str()); 
mvaddstr((height-8)/2, ((width-4)/2)-(companyname.length()/2), companyname.c_str()); 

그렇다면 키 처리기가 있습니다. 나는 이렇게하려고했습니다 :

if(ch == KEY_DOWN) { 
    start_color();   
init_pair(1, COLOR_BLUE, COLOR_BLACK); 
attron(COLOR_PAIR(1)); 
attroff(COLOR_PAIR(1)); 
} 

하지만 작동하지 않습니다. 나는 ncurses에 꽤 새로울 것이므로 내가 간과하는 것이 완전히 명백 할 수있다. 감사!

답변

1

간단한 메뉴를 수행하는 가장 좋은 방법은 선택 항목을 변경할 때마다 제목 화면을 다시 그립니다 (일반적으로 rp_arrow down_arrow를 누르는 것과 같습니다). 내 ncurses를 새로 고칠 시간이별로 없으므로 의사 코드가 여기 있습니다. 선택 변수를 강조 표시해야하는 텍스트와 연관시킵니다. 그리고 그렇게됩니다.

#selecion=0; 
#while(key_pressed != ENTER) 
    #print game title 
    #print company name 
    #if selection = 0 print highlighted new game 
    #else print new game without highlight 
    #if selection = 1 print highlighted quit 
    #else print quit without highlight 
    #if uparrow selection++ 
    #if downarrow selection-- 

내가 완벽하지 알고 당신이 입력을 받고 신선한 화면 그리기 로직을 ​​일해야하지만 간단한 뒤에 그냥 일반적인 생각, 메뉴를 강조했다.

여기에 글을 남기려면 도움이 필요하면 내 코드/메모리에 대한 자세한 내용과 팁을 자세히 살펴보십시오. 게임에 행운을 비네!