annotate packages/services/curses/pdcurses/current/tests/firework.c @ 2873:da0eeb594067

* ecos.db, services/curses/pdcurses/current/*: Initial check-in of PDCurses port.
author jld
date Sun, 10 May 2009 08:29:53 +0000
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2873
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
1 /* $Id: firework.c,v 1.1 2009/05/10 08:29:53 jld Exp $ */
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
2
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
3 #include <stdio.h>
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
4 #include <signal.h>
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
5 #include <curses.h>
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
6 #include <ctype.h>
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
7 #include <stdlib.h>
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
8 #include <sys/types.h>
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
9 #include <time.h>
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
10
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
11 #define DELAYSIZE 200
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
12
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
13 void myrefresh(void);
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
14 void get_color(void);
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
15 void explode(int, int);
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
16
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
17 short color_table[] =
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
18 {
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
19 COLOR_RED, COLOR_BLUE, COLOR_GREEN, COLOR_CYAN,
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
20 COLOR_RED, COLOR_MAGENTA, COLOR_YELLOW, COLOR_WHITE
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
21 };
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
22
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
23 int main(int argc, char **argv)
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
24 {
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
25 int i, start, end, row, diff, flag, direction, seed;
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
26
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
27 #ifdef XCURSES
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
28 Xinitscr(argc, argv);
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
29 #else
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
30 initscr();
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
31 #endif
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
32 nodelay(stdscr, TRUE);
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
33 noecho();
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
34
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
35 if (has_colors())
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
36 start_color();
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
37
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
38 for (i = 0; i < 8; i++)
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
39 init_pair(i, color_table[i], COLOR_BLACK);
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
40
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
41 seed = time((time_t *)0);
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
42 srand(seed);
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
43 flag = 0;
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
44
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
45 while (getch() == ERR) /* loop until a key is hit */
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
46 {
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
47 do {
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
48 start = rand() % (COLS - 3);
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
49 end = rand() % (COLS - 3);
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
50 start = (start < 2) ? 2 : start;
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
51 end = (end < 2) ? 2 : end;
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
52 direction = (start > end) ? -1 : 1;
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
53 diff = abs(start - end);
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
54
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
55 } while (diff < 2 || diff >= LINES - 2);
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
56
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
57 attrset(A_NORMAL);
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
58
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
59 for (row = 0; row < diff; row++)
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
60 {
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
61 mvaddstr(LINES - row, row * direction + start,
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
62 (direction < 0) ? "\\" : "/");
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
63
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
64 if (flag++)
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
65 {
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
66 myrefresh();
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
67 erase();
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
68 flag = 0;
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
69 }
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
70 }
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
71
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
72 if (flag++)
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
73 {
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
74 myrefresh();
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
75 flag = 0;
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
76 }
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
77
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
78 explode(LINES - row, diff * direction + start);
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
79 erase();
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
80 myrefresh();
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
81 }
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
82
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
83 endwin();
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
84
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
85 return 0;
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
86 }
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
87
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
88 void explode(int row, int col)
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
89 {
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
90 erase();
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
91 mvaddstr(row, col, "-");
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
92 myrefresh();
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
93
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
94 --col;
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
95
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
96 get_color();
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
97 mvaddstr(row - 1, col, " - ");
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
98 mvaddstr(row, col, "-+-");
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
99 mvaddstr(row + 1, col, " - ");
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
100 myrefresh();
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
101
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
102 --col;
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
103
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
104 get_color();
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
105 mvaddstr(row - 2, col, " --- ");
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
106 mvaddstr(row - 1, col, "-+++-");
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
107 mvaddstr(row, col, "-+#+-");
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
108 mvaddstr(row + 1, col, "-+++-");
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
109 mvaddstr(row + 2, col, " --- ");
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
110 myrefresh();
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
111
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
112 get_color();
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
113 mvaddstr(row - 2, col, " +++ ");
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
114 mvaddstr(row - 1, col, "++#++");
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
115 mvaddstr(row, col, "+# #+");
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
116 mvaddstr(row + 1, col, "++#++");
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
117 mvaddstr(row + 2, col, " +++ ");
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
118 myrefresh();
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
119
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
120 get_color();
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
121 mvaddstr(row - 2, col, " # ");
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
122 mvaddstr(row - 1, col, "## ##");
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
123 mvaddstr(row, col, "# #");
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
124 mvaddstr(row + 1, col, "## ##");
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
125 mvaddstr(row + 2, col, " # ");
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
126 myrefresh();
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
127
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
128 get_color();
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
129 mvaddstr(row - 2, col, " # # ");
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
130 mvaddstr(row - 1, col, "# #");
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
131 mvaddstr(row, col, " ");
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
132 mvaddstr(row + 1, col, "# #");
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
133 mvaddstr(row + 2, col, " # # ");
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
134 myrefresh();
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
135 }
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
136
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
137 void myrefresh(void)
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
138 {
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
139 napms(DELAYSIZE);
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
140 move(LINES - 1, COLS - 1);
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
141 refresh();
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
142 }
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
143
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
144 void get_color(void)
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
145 {
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
146 chtype bold = (rand() % 2) ? A_BOLD : A_NORMAL;
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
147 attrset(COLOR_PAIR(rand() % 8) | bold);
da0eeb594067 * ecos.db, services/curses/pdcurses/current/*: Initial check-in of
jld
parents:
diff changeset
148 }