我想写一个生活游戏应用程序,只是为了娱乐/练习。
进程(例如top
或watch
)如何重绘屏幕,但不生成整个输出负载(这样当我向上滚动时,它只是一帧,而不是每一帧生成的过程)?
这种语言是依赖的,还是通过OS调用完成的?
我想用C语言做,所以我可以通过添加吃掉对象的'兔子'来练习记忆共享。
答案 0 :(得分:1)
它不依赖于语言;它与终端有关(在您的情况下可能是终端仿真)。最初终端不允许这样的功能,但后来,一些特殊的#34;字符"有这样的效果(清除屏幕,移动光标等)。图书馆(例如ncurses)知道此类代码,这些代码可能因每个模拟终端而异;还可以查看Termcap或Terminfo)。
所有这些功能都依赖于一个名为TERM的环境变量;每个软件都能够知道哪种终端被模拟。当然像ncurses这样的库会根据它来调整它们的行为。看看
echo $TERM
可能会输出类似xterm
(事实上的标准)或linux
(其他标准为vt100
,有点旧,或者screen
这是一个很棒的工具。)
答案 1 :(得分:1)
要清除C中的终端,您可以这样做:
printf("\033[0;0H\033[2J");
将此分开:
\033
是 ESC 键的ascii转义序列[0;0H
将光标位置设置在屏幕的左上角[2J
清除屏幕上的所有内容 \033
也可以在某些系统上写为\x1b
或\e
。作为旁注,您可以使用Java和其他语言执行此操作,因此它不是特定于C的。