Я работаю над игрушечным проектом, реализуя настольный клиент популярной карточной игры Dominion. Я подумал, что было бы интересно отобразить пользовательский интерфейс в терминале, используя библиотеку ncurses.
Мне нужно показать такие вещи, как рука игрока, карты, которые он сыграл, и карты, которые они могут купить. Я представлял их как меню ncurses, расположенные на экране.
Что я не могу понять, так это как донести фокус до пользователя. Например,
| | | |
| Copper | | >Adventurer< |
| Copper | | Chapel |
| Copper | | Moat |
| >Copper< | | Thief |
| Copper | | |
| | | |
| | | |
Заполненные меню имеют активированный курсор (обозначается символом> < записи), когда меню видно. Я хочу иметь возможность активировать одно меню одновременно, имея один видимый или иным образом специальный курсор, с помощью которого я могу построить рабочий процесс.
Как я могу это сделать? На самом высоком уровне я хочу, чтобы на экране были списки элементов, в которых пользователь мог бы делать выборки на основе настроенной мной логики.
ncurses позволяет возиться с раскраской меню с помощью таких функций, как set_menu_fore
, set_menu_back
а также set_menu_grey
, Это маршрут, который я выбрал. У меня была еще одна идея (но позже я отказался из-за слишком большого количества счетов) перекрашивать окна меню, используя wattron
а также wattroff
,
Других решений пока нет …