⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rain.c

📁 ncurses 库 可能有用酒用 没用就算了 我觉得还可以用
💻 C
字号:
/* * $Id: rain.c,v 1.20 2002/06/29 23:32:18 tom Exp $ */#include <test.priv.h>/* rain 11/3/1980 EPS/CITHEP */static float ranf(void);static void onsig(int sig);static intnext_j(int j){    if (j == 0)	j = 4;    else	--j;    if (has_colors()) {	int z = (int) (3 * ranf());	chtype color = COLOR_PAIR(z);	if (z)	    color |= A_BOLD;	attrset(color);    }    return j;}intmain(	int argc GCC_UNUSED,	char *argv[]GCC_UNUSED){    int x, y, j;    static int xpos[5], ypos[5];    float r;    float c;    setlocale(LC_ALL, "");    for (j = SIGHUP; j <= SIGTERM; j++)	if (signal(j, SIG_IGN) != SIG_IGN)	    signal(j, onsig);    initscr();    if (has_colors()) {	int bg = COLOR_BLACK;	start_color();#if HAVE_USE_DEFAULT_COLORS	if (use_default_colors() == OK)	    bg = -1;#endif	init_pair(1, COLOR_BLUE, bg);	init_pair(2, COLOR_CYAN, bg);    }    nl();    noecho();    curs_set(0);    timeout(0);    r = (float) (LINES - 4);    c = (float) (COLS - 4);    for (j = 5; --j >= 0;) {	xpos[j] = (int) (c * ranf()) + 2;	ypos[j] = (int) (r * ranf()) + 2;    }    for (j = 0;;) {	x = (int) (c * ranf()) + 2;	y = (int) (r * ranf()) + 2;	mvaddch(y, x, '.');	mvaddch(ypos[j], xpos[j], 'o');	j = next_j(j);	mvaddch(ypos[j], xpos[j], 'O');	j = next_j(j);	mvaddch(ypos[j] - 1, xpos[j], '-');	mvaddstr(ypos[j], xpos[j] - 1, "|.|");	mvaddch(ypos[j] + 1, xpos[j], '-');	j = next_j(j);	mvaddch(ypos[j] - 2, xpos[j], '-');	mvaddstr(ypos[j] - 1, xpos[j] - 1, "/ \\");	mvaddstr(ypos[j], xpos[j] - 2, "| O |");	mvaddstr(ypos[j] + 1, xpos[j] - 1, "\\ /");	mvaddch(ypos[j] + 2, xpos[j], '-');	j = next_j(j);	mvaddch(ypos[j] - 2, xpos[j], ' ');	mvaddstr(ypos[j] - 1, xpos[j] - 1, "   ");	mvaddstr(ypos[j], xpos[j] - 2, "     ");	mvaddstr(ypos[j] + 1, xpos[j] - 1, "   ");	mvaddch(ypos[j] + 2, xpos[j], ' ');	xpos[j] = x;	ypos[j] = y;	switch (getch()) {	case ('q'):	case ('Q'):	    curs_set(1);	    endwin();	    ExitProgram(EXIT_SUCCESS);	case 's':	    nodelay(stdscr, FALSE);	    break;	case ' ':	    nodelay(stdscr, TRUE);	    break;#ifdef KEY_RESIZE	case (KEY_RESIZE):	    r = (float) (LINES - 4);	    c = (float) (COLS - 4);	    break;#endif	}	napms(50);    }}static voidonsig(int n GCC_UNUSED){    curs_set(1);    endwin();    ExitProgram(EXIT_FAILURE);}static floatranf(void){    long r = (rand() & 077777);    return ((float) r / 32768.);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -