之前试过终端的输出控制,可以简单的控制光标,通过光标控制可以完成很多有趣的事情。
最近在寻思 vim 怎么完成在终端上面来无影去无踪的, 后面发现折腾不起,百度搜索没有找到想要的东西,不知所以了。
在看其他资料居然瞄到一眼,突然就发现一个好玩的东西,ncurses,恩恩,所有的奥秘都在这儿了。
有其他事情,这里做一个笔记,下面是别人的程序,有点小问题,我做了下修改,可以运行了:
/* c.c */
#include <curses.h>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
// #include "getrandom_int.h"
#define ITERMAX 10000
#define getrandom_int() rand()
int main(void)
{
long iter;
int yi, xi;
int y[3], x[3];
int index;
int maxlines, maxcols;
/* initialize curses */
initscr();
cbreak();
noecho();
clear();
/* initialize triangle */
maxlines = LINES - 1;
maxcols = COLS - 1;
srand(time(0));
y[0] = 0;
x[0] = 0;
y[1] = maxlines;
x[1] = maxcols / 2;
y[2] = 0;
x[2] = maxcols;
mvaddch(y[0], x[0], '0');
mvaddch(y[1], x[1], '1');
mvaddch(y[2], x[2], '2');
/* initialize yi,xi with random values */
yi = getrandom_int() % maxlines;
xi = getrandom_int() % maxcols;
mvaddch(yi, xi, '.');
/* iterate the triangle */
for (iter = 0; iter < ITERMAX; iter++) {
index = getrandom_int() % 3;
yi = (yi + y[index]) / 2;
xi = (xi + x[index]) / 2;
mvaddch(yi, xi, '
/* triangle.c */*');
refresh();
}
/* done */
mvaddstr(maxlines, 0, "Press any key to quit");
refresh();
getch();
endwin();
exit(0);
}
编译与执行命令:
$ gcc c.c -Wall -lncurses -o c
$ ./c
运行结果:
参考: