2014-04-05 26 views
0

我正在使用ncurses和C++編寫Roguelike。現在,我的編碼標題畫面,它看起來是這樣的:如何着色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-- 

我知道這不是完美的,你有你的工作讓輸入和畫圖新鮮屏幕的邏輯,但是這只是一個總體思路背後簡單的,突出顯示的菜單。

如果您需要任何幫助,請在此處填寫,我會深入瞭解一些代碼/內存以瞭解詳細信息和提示。祝你好運!