我是否正确使用ncurses for Vector?

时间:2016-08-04 10:33:01

标签: c++ ncurses

我编写了一个小游戏,它应该可以在控制台上播放。我使用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中的函数。 我在这里找不到类似的东西。

1 个答案:

答案 0 :(得分:0)

您的颜色对错误

init_pair (5, COLOR_WHITE, COLOR_WHITE)

会在白色背景上写下白色字符。