home *** CD-ROM | disk | FTP | other *** search
/ Gold Fish 1 / GoldFishApril1994_CD2.img / d4xx / d439 / curses / examples / odds / rain.c < prev    next >
C/C++ Source or Header  |  1991-01-17  |  2KB  |  103 lines

  1. #define MINICURSES
  2. #include <curses.h>
  3. #include <signal.h>
  4. /* rain 11/3/1980 EPS/CITHEP */
  5.  
  6. #define cursor(col,row) move(row,col)
  7. main(argc,argv)
  8. int argc;
  9. char *argv[];
  10. {
  11.     char *malloc();
  12.     float ranf();
  13.     int onsig();
  14.     register int x, y, j;
  15.     static int xpos[5], ypos[5];
  16.     setbuf(stdout,malloc(BUFSIZ));
  17.  
  18. #ifdef AMIGA
  19.     signal(SIGINT, SIG_IGN);
  20. #else
  21.     for (j=SIGHUP;j<=SIGTERM;j++)
  22.     if (signal(j,SIG_IGN)!=SIG_IGN) signal(j,onsig);
  23. #endif /* AMIGA */
  24.  
  25.     initscr();
  26.     nl();
  27.     noecho();
  28.     for (j=5;--j>=0;) {
  29.     xpos[j]=(int)(76.*ranf())+2;
  30.     ypos[j]=(int)(20.*ranf())+2;
  31.     }
  32.     for (j=0;;) {
  33.     x=(int)(76.*ranf())+2;
  34.     y=(int)(20.*ranf())+2;
  35.  
  36.     cursor(x,y); addch('.');
  37.  
  38.     cursor(xpos[j],ypos[j]); addch('o');
  39.  
  40.     if (j==0) j=4; else --j;
  41.     cursor(xpos[j],ypos[j]); addch('O');
  42.  
  43.     if (j==0) j=4; else --j;
  44.     cursor(xpos[j],ypos[j]-1);
  45.     addch('-');
  46.     cursor(xpos[j]-1,ypos[j]);
  47.     addstr("|.|");
  48.     cursor(xpos[j],ypos[j]+1);
  49.     addch('-');
  50.  
  51.     if (j==0) j=4; else --j;
  52.     cursor(xpos[j],ypos[j]-2);
  53.     addch('-');
  54.     cursor(xpos[j]-1,ypos[j]-1);
  55.     addstr("/ \\");
  56.     cursor(xpos[j]-2,ypos[j]);
  57.     addstr("| O |");
  58.     cursor(xpos[j]-1,ypos[j]+1);
  59.     addstr("\\ /");
  60.     cursor(xpos[j],ypos[j]+2);
  61.     addch('-');
  62.  
  63.     if (j==0) j=4; else --j;
  64.     cursor(xpos[j],ypos[j]-2);
  65.     addch(' ');
  66.     cursor(xpos[j]-1,ypos[j]-1);
  67.     addstr("   ");
  68.     cursor(xpos[j]-2,ypos[j]);
  69.     addstr("     ");
  70.     cursor(xpos[j]-1,ypos[j]+1);
  71.     addstr("   ");
  72.     cursor(xpos[j],ypos[j]+2);
  73.     addch(' ');
  74.     xpos[j]=x; ypos[j]=y;
  75.     refresh();
  76.     }
  77. }
  78.  
  79. onsig(n)
  80. int n;
  81. {
  82.     endwin();
  83.     exit(0);
  84. }
  85.  
  86. float
  87. ranf()
  88. {
  89.     float rv;
  90.     long r = rand();
  91.  
  92.     r &= 077777;
  93.     rv =((float)r/32767.);
  94.     return rv;
  95. }
  96.  
  97. #ifdef AMIGA
  98. getpid()
  99. {
  100.   return 221;
  101. }
  102. #endif /* AMIGA */
  103.