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

📄 rain.c

📁 应用平台 SCO OpenServer 5 是一个模拟下雨的小玩意
💻 C
字号:
/* * $Id: rain.c,v 1.15 2000/09/02 18:41:22 tom Exp $ */#include "test.priv.h"#include <term.h>	/* for tparm() */#include <signal.h>/* rain 11/3/1980 EPS/CITHEP */static float ranf(void);static void onsig(int sig);static int next_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;    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();	    return(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();    exit(EXIT_FAILURE);}static floatranf(void){    long r = (rand() & 077777);    return ((float) r / 32768.);}

⌨️ 快捷键说明

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