Как раскрасить выделения в ncurses?

0

Я сейчас работаю над Roguelike в ncurses и C++. Сейчас я кодирую экран заголовка, он выглядит примерно так:

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, так что это может быть что-то совершенно очевидное, что я упускаю из виду. Благодарю!

Теги:
ncurses

1 ответ

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--

Я знаю, что это не идеально, и вам нужно работать над своей логикой получения ввода и рисования нового экрана, но это всего лишь общая идея простого простого меню.

Если вам нужна помощь, просто напишите здесь, и я углубится в некоторые из своих кодов/памяти, чтобы узнать подробности и советы. Удачи вам в вашей игре!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню