2 * $Id: firework.c,v 1.17 2000/09/02 18:41:12 tom Exp $
9 static int my_bg = COLOR_BLACK;
19 onsig(int n GCC_UNUSED)
30 if ((ch = getch()) != ERR) {
32 if (ch == KEY_RESIZE) {
39 } else if (ch == 's') {
40 nodelay(stdscr, FALSE);
41 } else if (ch == ' ') {
42 nodelay(stdscr, TRUE);
49 get_colour(chtype * bold)
52 attr = (rand() % 16) + 1;
64 explode(int row, int col)
68 mvprintw(row, col, "-");
71 init_pair(1, get_colour(&bold), my_bg);
72 attrset(COLOR_PAIR(1) | bold);
73 mvprintw(row - 1, col - 1, " - ");
74 mvprintw(row + 0, col - 1, "-+-");
75 mvprintw(row + 1, col - 1, " - ");
78 init_pair(1, get_colour(&bold), my_bg);
79 attrset(COLOR_PAIR(1) | bold);
80 mvprintw(row - 2, col - 2, " --- ");
81 mvprintw(row - 1, col - 2, "-+++-");
82 mvprintw(row + 0, col - 2, "-+#+-");
83 mvprintw(row + 1, col - 2, "-+++-");
84 mvprintw(row + 2, col - 2, " --- ");
87 init_pair(1, get_colour(&bold), my_bg);
88 attrset(COLOR_PAIR(1) | bold);
89 mvprintw(row - 2, col - 2, " +++ ");
90 mvprintw(row - 1, col - 2, "++#++");
91 mvprintw(row + 0, col - 2, "+# #+");
92 mvprintw(row + 1, col - 2, "++#++");
93 mvprintw(row + 2, col - 2, " +++ ");
96 init_pair(1, get_colour(&bold), my_bg);
97 attrset(COLOR_PAIR(1) | bold);
98 mvprintw(row - 2, col - 2, " # ");
99 mvprintw(row - 1, col - 2, "## ##");
100 mvprintw(row + 0, col - 2, "# #");
101 mvprintw(row + 1, col - 2, "## ##");
102 mvprintw(row + 2, col - 2, " # ");
105 init_pair(1, get_colour(&bold), my_bg);
106 attrset(COLOR_PAIR(1) | bold);
107 mvprintw(row - 2, col - 2, " # # ");
108 mvprintw(row - 1, col - 2, "# #");
109 mvprintw(row + 0, col - 2, " ");
110 mvprintw(row + 1, col - 2, "# #");
111 mvprintw(row + 2, col - 2, " # # ");
118 char *argv[]GCC_UNUSED)
121 int start, end, row, diff, flag = 0, direction;
124 for (j = SIGHUP; j <= SIGTERM; j++)
125 if (signal(j, SIG_IGN) != SIG_IGN)
131 keypad(stdscr, TRUE);
132 nodelay(stdscr, TRUE);
136 #if HAVE_USE_DEFAULT_COLORS
137 if (use_default_colors() == OK)
143 seed = time((time_t *) 0);
147 start = rand() % (COLS - 3);
148 end = rand() % (COLS - 3);
149 start = (start < 2) ? 2 : start;
150 end = (end < 2) ? 2 : end;
151 direction = (start > end) ? -1 : 1;
152 diff = abs(start - end);
153 } while (diff < 2 || diff >= LINES - 2);
155 for (row = 0; row < diff; row++) {
156 mvprintw(LINES - row, start + (row * direction),
157 (direction < 0) ? "\\" : "/");
168 seed = time((time_t *) 0);
170 explode(LINES - row, start + (diff * direction));