Change-Id: If881ec130833c7e7e62caa3d31e350a531f5bc8e Signed-off-by: Stefan Reinauer <stefan.reinauer@coreboot.org> Reviewed-on: http://review.coreboot.org/12398 Tested-by: build bot (Jenkins) Reviewed-by: Patrick Georgi <pgeorgi@google.com>
		
			
				
	
	
		
			160 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			160 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /****************************************************************************
 | |
|  * Copyright (c) 2002 Free Software Foundation, Inc.                        *
 | |
|  *                                                                          *
 | |
|  * Permission is hereby granted, free of charge, to any person obtaining a  *
 | |
|  * copy of this software and associated documentation files (the            *
 | |
|  * "Software"), to deal in the Software without restriction, including      *
 | |
|  * without limitation the rights to use, copy, modify, merge, publish,      *
 | |
|  * distribute, distribute with modifications, sublicense, and/or sell       *
 | |
|  * copies of the Software, and to permit persons to whom the Software is    *
 | |
|  * furnished to do so, subject to the following conditions:                 *
 | |
|  *                                                                          *
 | |
|  * The above copyright notice and this permission notice shall be included  *
 | |
|  * in all copies or substantial portions of the Software.                   *
 | |
|  *                                                                          *
 | |
|  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
 | |
|  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
 | |
|  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
 | |
|  * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
 | |
|  * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
 | |
|  * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
 | |
|  * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
 | |
|  *                                                                          *
 | |
|  * Except as contained in this notice, the name(s) of the above copyright   *
 | |
|  * holders shall not be used in advertising or otherwise to promote the     *
 | |
|  * sale, use or other dealings in this Software without prior written       *
 | |
|  * authorization.                                                           *
 | |
|  ****************************************************************************/
 | |
| 
 | |
| /* $Id: rain.c,v 1.11 2008/07/13 16:08:17 wmcbrine Exp $ */
 | |
| 
 | |
| #include <curses.h>
 | |
| #include <stdlib.h>
 | |
| #include <time.h>
 | |
| 
 | |
| /* rain 11/3/1980 EPS/CITHEP */
 | |
| 
 | |
| static int next_j(int j)
 | |
| {
 | |
|     if (j == 0)
 | |
|         j = 4;
 | |
|     else
 | |
|         --j;
 | |
| 
 | |
|     if (has_colors())
 | |
|     {
 | |
|         int z = rand() % 3;
 | |
|         chtype color = COLOR_PAIR(z);
 | |
| 
 | |
|         if (z)
 | |
|             color |= A_BOLD;
 | |
| 
 | |
|         attrset(color);
 | |
|     }
 | |
| 
 | |
|     return j;
 | |
| }
 | |
| 
 | |
| int main(int argc, char *argv[])
 | |
| {
 | |
|     int x, y, j, r, c, seed;
 | |
|     static int xpos[5], ypos[5];
 | |
| 
 | |
| #ifdef XCURSES
 | |
|     Xinitscr(argc, argv);
 | |
| #else
 | |
|     initscr();
 | |
| #endif
 | |
|     seed = time((time_t *)0);
 | |
|         srand(seed);
 | |
| 
 | |
|     if (has_colors())
 | |
|     {
 | |
|         int bg = COLOR_BLACK;
 | |
| 
 | |
|         start_color();
 | |
| 
 | |
| #if defined(NCURSES_VERSION) || (defined(PDC_BUILD) && PDC_BUILD > 3000)
 | |
|         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);
 | |
|     keypad(stdscr, TRUE);
 | |
| 
 | |
|     r = LINES - 4;
 | |
|     c = COLS - 4;
 | |
| 
 | |
|     for (j = 5; --j >= 0;)
 | |
|     {
 | |
|         xpos[j] = rand() % c + 2;
 | |
|         ypos[j] = rand() % r + 2;
 | |
|     }
 | |
| 
 | |
|     for (j = 0;;)
 | |
|     {
 | |
|         x = rand() % c + 2;
 | |
|         y = rand() % r + 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);
 | |
| #ifdef KEY_RESIZE
 | |
|             break;
 | |
|         case KEY_RESIZE:
 | |
| # ifdef PDCURSES
 | |
|             resize_term(0, 0);
 | |
|             erase();
 | |
| # endif
 | |
|             r = LINES - 4;
 | |
|             c = COLS - 4;
 | |
| #endif
 | |
|         }
 | |
|         napms(50);
 | |
|     }
 | |
| }
 |