微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 NCurses 中阻止移动字符后面的踪迹?

如何解决如何在 NCurses 中阻止移动字符后面的踪迹?

我正在用 ncurses 库用 C 语言制作一个终端游戏。使用 WASD 键,字符 @ 在屏幕上移动。但是,我希望它不会在其后留下任何痕迹,截至目前它会留下诸如@@@@@@@@ 之类的痕迹。

有谁知道这方面的方法吗? 谢谢!

下面是移动字符的代码

init_Curses(); //start ncurses
mvwprintw(stdscr,y,x,"@");
curs_set(0);

while (1)
{
     refresh();
     direction = getchar();
     switch (direction)
     {
     //proccess movement with WASD controls
     case 'w':
          y -= 1;
          break;
     case 'a':
          x -= 1;
          break;
     case 's':
          y += 1;
          break;
     case 'd':
          x += 1;
          break;
     default:
          continue;
     }
     if (x == -1 && y == -1)
     {
          y += 1;
          x += 1;
     } //keep in grid
     mvwprintw(stdscr,"@");
}
endwin();

解决方法

您必须自己删除轨迹,将其替换为@ 通过之前存在的字符。

您必须跟踪 @ 之前的位置,然后打印被 @ 删除的字符,假设它是一个空格:>

if (x == -1 && y == -1) { y += 1;x += 1;} //keep in grid
    mvwprintw(stdscr,previous_pos_y,previous_pos_x," ");
    mvwprintw(stdscr,y,x,"@");
}

不用说,您还必须跟踪此类字符,以便恢复

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。