我编写了一个小游戏,它应该可以在控制台上播放。我使用ncurses,代码编译但是当我开始游戏时,控制台上没有显示任何内容。游戏区域保存在2d Vector中,值在此Vector中我检查了它,使用普通的printf并且没有ncurses一切都很好,但是如果我想使用ncurses,则不会在控制台上打印任何内容。
for (auto const& i : gamearea) {
for (auto const& j : i){
// Wall
if (j == '#') {
// printf("#\n");
attron(5);
mvprintw(_height, _width, " ");
attroff(5);
}
这是函数中的一段代码,如果循环具有几乎相同的代码,则此函数中还有6个。 gamearea是我的2d Vector,_height和_width是变量,表示空间应该有多大。空间取代了#。
我想知道的是,我在哪里使用ncurses函数错了?我已经在其他功能中使用我需要的所有内容来启动终端:
void Play::initTerminal() {
initscr();
cbreak();
noecho();
curs_set(false);
nodelay(stdscr, true);
keypad(stdscr, true);
start_color();
use_default_colors();
init_pair(1, COLOR_BLACK, COLOR_BLACK);
init_pair(2, COLOR_GREEN, COLOR_GREEN);
init_pair(3, COLOR_BLUE, COLOR_BLUE);
init_pair(4, COLOR_YELLOW, COLOR_YELLOW);
init_pair(5, COLOR_WHITE, COLOR_WHITE);
init_pair(6, COLOR_RED, COLOR_RED);
init_pair(7, COLOR_CYAN, COLOR_CYAN);
}
也许我在这个功能上做错了。我之前只使用过ncurses,在那里我使用了printf,但这次我想使用ncurses中的函数。 我在这里找不到类似的东西。
答案 0 :(得分:0)
您的颜色对错误
init_pair (5, COLOR_WHITE, COLOR_WHITE)
会在白色背景上写下白色字符。