gpt4 book ai didi

c++ - 如何为 ncurses 中的选择着色?

转载 作者:行者123 更新时间:2023-11-28 06:58:16 24 4
gpt4 key购买 nike

我现在正在使用 ncurses 和 C++ 开发 Roguelike。现在我正在编写标题屏幕,它看起来像这样:

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());

然后我有了我的 key 处理程序。我试着这样做:

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

但它不起作用。我对 ncurses 还很陌生,所以它可能是我忽略的非常明显的东西。谢谢!

最佳答案

完成简单菜单的最佳/最简单方法是在每次更改选择时重绘标题屏幕(通常是按 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--

我知道它并不完美,您必须按照自己的逻辑来获取输入和绘制新屏幕,但这只是简单、突出显示的菜单背后的一般想法。

如果您需要任何帮助,请写在这里,我将深入挖掘我的一些代码/内存以获取详细信息和提示。祝您游戏顺利!

关于c++ - 如何为 ncurses 中的选择着色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22884436/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com