7

我还是 C 和 ncurses 的新手。我被要求做一个涉及制作多线程乒乓球游戏的任务。游戏运行良好,并以正确的失败条件结束,但在终止时我的终端全乱了。我没有得到回声,所以我必须输入stty echo才能找回,即使终端表现得很奇怪。

我的最终功能如下:

void wrap_up(){

    curs_set(1);
    clear();
    endwin();
    refresh();
}

这是一个屏幕截图。我如何解决它?

在此处输入图像描述

4

2 回答 2

9

endwin 后删除刷新。在 endwin 之后调用 refresh 会导致程序回到 curses 模式。

于 2013-11-01T10:20:21.110 回答
-1

好吧,这取决于您要如何实现它。为了使其可移植,您可能需要实现编译指令以根据您正在使用的操作系统清除屏幕。

例如:

void Refresh(){
#ifdef WIN_32_OS
  system("cls");
#elif LINUX_OS
  system("clear");
#else // (DOS, for example)
  system("Another command");
#endif
}

所以在编译时你可以使用类似的东西:

bash2.2$ gcc -c -DLINUX_OS 代码.c -o 代码

于 2013-11-01T10:27:55.410 回答