1 /******************************************************************************/
3 /* December 1989 Larry Bartz Indianapolis, IN */
6 /* I'm dreaming of an ascii character-based monochrome Christmas, */
7 /* Just like the one's I used to know! */
8 /* Via a full duplex communications channel, */
9 /* At 9600 bits per second, */
10 /* Even though it's kinda slow. */
12 /* I'm dreaming of an ascii character-based monochrome Christmas, */
13 /* With ev'ry C program I write! */
14 /* May your screen be merry and bright! */
15 /* And may all your Christmases be amber or green, */
16 /* (for reduced eyestrain and improved visibility)! */
24 /* Feel free to modify the defined string FROMWHO to reflect you, your */
25 /* organization, your site, whatever. */
27 /* This really looks a lot better if you can turn off your cursor before */
28 /* execution. I wanted to do that here but very few termcap entries or */
29 /* terminfo definitions have the appropriate string defined. If you know */
30 /* the string(s) for the terminal(s) you use or which your site supports, */
31 /* you could call asciixmas from within a shell in which you issue the */
32 /* string to the terminal. The cursor is distracting but it doesn't really */
35 /* At our site, we invoke this for our users just after login and the */
36 /* determination of terminal type. */
41 /* I wrote this using only the very simplest curses functions so that it */
42 /* might be the most portable. I was personally able to test on five */
43 /* different cpu/UNIX combinations. */
50 /* cc -O asciixmas.c -lcurses -o asciixmas -s */
53 /* Zilog S8000 models 11, 21, 31, etc with ZEUS variant of SYSTEM III */
54 /* maybe other SYSTEM III also: */
56 /* cc asciixmas.c -lcurses -ltermlib -o asciixmas -s */
58 /* as above with optional "peephole optimizer" installed: */
60 /* cc -O asciixmas.c -lcurses -ltermlib -o asciixmas -s */
63 /* Zilog S8000 models 32, 130 with WE32100 chip and SYS V, REL2 */
66 /* cc -f -O -K sd asciixmas.c -lcurses -o asciixmas -s */
69 /* Pyramid, Sequent, any other "dual universe" types compile and execute */
70 /* under either universe. The compile line for the ucb universe (as you */
71 /* might expect) is the same as for SYS III UNIX: */
73 /* cc -O asciixmas.c -lcurses -ltermlib -o asciixmas -s */
75 /* The above compile will also hold true for other BSD systems. (I hope) */
80 /* For the Scrooges out there among you who don't want this thing to loop */
81 /* forever (or until the user hits a key), insert this into your compile */
82 /* line just after "cc" : */
88 /* cc -DNOLOOP -O asciixmas.c -lcurses -o asciixmas -s */
92 /******************************************************************************/
94 #include <test.priv.h>
98 #define FROMWHO "Mark Hessling - (M.Hessling@gu.edu.au)"
100 static int y_pos, x_pos;
103 *treescrn, *treescrn2,*treescrn3, *treescrn4,*treescrn5, *treescrn6,
104 *treescrn7, *treescrn8,
107 *lildeer0, *lildeer1, *lildeer2, *lildeer3,
108 *middeer0, *middeer1, *middeer2, *middeer3,
109 *bigdeer0, *bigdeer1, *bigdeer2, *bigdeer3, *bigdeer4,
110 *lookdeer0, *lookdeer1, *lookdeer2, *lookdeer3, *lookdeer4,
114 static int boxit(void);
115 static int seas(void);
116 static int greet(void);
117 static int fromwho(void);
118 static int tree(void);
119 static int balls(void);
120 static int star(void);
121 static int strng1(void);
122 static int strng2(void);
123 static int strng3(void);
124 static int strng4(void);
125 static int strng5(void);
126 static int reindeer(void);
127 static int blinkit(void);
128 static RETSIGTYPE done(int sig) GCC_NORETURN ;
132 char **argv GCC_UNUSED)
141 signal(SIGTERM,done);
142 #if !defined DOS && !defined OS2
144 signal(SIGQUIT,done);
147 treescrn = newwin(16,27,3,53);
148 treescrn2 = newwin(16,27,3,53);
149 treescrn3 = newwin(16,27,3,53);
150 treescrn4 = newwin(16,27,3,53);
151 treescrn5 = newwin(16,27,3,53);
152 treescrn6 = newwin(16,27,3,53);
153 treescrn7 = newwin(16,27,3,53);
154 treescrn8 = newwin(16,27,3,53);
156 dotdeer0 = newwin(3,71,0,8);
158 stardeer0 = newwin(4,56,0,8);
160 lildeer0 = newwin(7,53,0,8);
161 lildeer1 = newwin(2,4,0,0);
162 lildeer2 = newwin(2,4,0,0);
163 lildeer3 = newwin(2,4,0,0);
165 middeer0 = newwin(15,42,0,8);
166 middeer1 = newwin(3,7,0,0);
167 middeer2 = newwin(3,7,0,0);
168 middeer3 = newwin(3,7,0,0);
170 bigdeer0 = newwin(10,23,0,0);
171 bigdeer1 = newwin(10,23,0,0);
172 bigdeer2 = newwin(10,23,0,0);
173 bigdeer3 = newwin(10,23,0,0);
174 bigdeer4 = newwin(10,23,0,0);
176 lookdeer0 = newwin(10,25,0,0);
177 lookdeer1 = newwin(10,25,0,0);
178 lookdeer2 = newwin(10,25,0,0);
179 lookdeer3 = newwin(10,25,0,0);
180 lookdeer4 = newwin(10,25,0,0);
182 w_holiday = newwin(1,26,3,27);
184 w_del_msg = newwin(1,19,23,60);
186 mvwaddstr(w_del_msg,0,0,"Hit any key to quit");
188 mvwaddstr(w_holiday,0,0,"H A P P Y H O L I D A Y S");
190 /* set up the windows for our various reindeer */
193 mvwaddch(lildeer1,0,0,(chtype)'V');
194 mvwaddch(lildeer1,1,0,(chtype)'@');
195 mvwaddch(lildeer1,1,1,(chtype)'<');
196 mvwaddch(lildeer1,1,2,(chtype)'>');
197 mvwaddch(lildeer1,1,3,(chtype)'~');
200 mvwaddch(lildeer2,0,0,(chtype)'V');
201 mvwaddch(lildeer2,1,0,(chtype)'@');
202 mvwaddch(lildeer2,1,1,(chtype)'|');
203 mvwaddch(lildeer2,1,2,(chtype)'|');
204 mvwaddch(lildeer2,1,3,(chtype)'~');
207 mvwaddch(lildeer3,0,0,(chtype)'V');
208 mvwaddch(lildeer3,1,0,(chtype)'@');
209 mvwaddch(lildeer3,1,1,(chtype)'>');
210 mvwaddch(lildeer3,1,2,(chtype)'<');
211 mvwaddch(lildeer2,1,3,(chtype)'~');
215 mvwaddch(middeer1,0,2,(chtype)'y');
216 mvwaddch(middeer1,0,3,(chtype)'y');
217 mvwaddch(middeer1,1,2,(chtype)'0');
218 mvwaddch(middeer1,1,3,(chtype)'(');
219 mvwaddch(middeer1,1,4,(chtype)'=');
220 mvwaddch(middeer1,1,5,(chtype)')');
221 mvwaddch(middeer1,1,6,(chtype)'~');
222 mvwaddch(middeer1,2,3,(chtype)'\\');
223 mvwaddch(middeer1,2,4,(chtype)'/');
226 mvwaddch(middeer2,0,2,(chtype)'y');
227 mvwaddch(middeer2,0,3,(chtype)'y');
228 mvwaddch(middeer2,1,2,(chtype)'0');
229 mvwaddch(middeer2,1,3,(chtype)'(');
230 mvwaddch(middeer2,1,4,(chtype)'=');
231 mvwaddch(middeer2,1,5,(chtype)')');
232 mvwaddch(middeer2,1,6,(chtype)'~');
233 mvwaddch(middeer2,2,3,(chtype)'|');
234 mvwaddch(middeer2,2,5,(chtype)'|');
237 mvwaddch(middeer3,0,2,(chtype)'y');
238 mvwaddch(middeer3,0,3,(chtype)'y');
239 mvwaddch(middeer3,1,2,(chtype)'0');
240 mvwaddch(middeer3,1,3,(chtype)'(');
241 mvwaddch(middeer3,1,4,(chtype)'=');
242 mvwaddch(middeer3,1,5,(chtype)')');
243 mvwaddch(middeer3,1,6,(chtype)'~');
244 mvwaddch(middeer3,2,2,(chtype)'/');
245 mvwaddch(middeer3,2,6,(chtype)'\\');
249 mvwaddch(bigdeer1,0,17,(chtype)'\\');
250 mvwaddch(bigdeer1,0,18,(chtype)'/');
251 mvwaddch(bigdeer1,0,20,(chtype)'\\');
252 mvwaddch(bigdeer1,0,21,(chtype)'/');
253 mvwaddch(bigdeer1,1,18,(chtype)'\\');
254 mvwaddch(bigdeer1,1,20,(chtype)'/');
255 mvwaddch(bigdeer1,2,19,(chtype)'|');
256 mvwaddch(bigdeer1,2,20,(chtype)'_');
257 mvwaddch(bigdeer1,3,18,(chtype)'/');
258 mvwaddch(bigdeer1,3,19,(chtype)'^');
259 mvwaddch(bigdeer1,3,20,(chtype)'0');
260 mvwaddch(bigdeer1,3,21,(chtype)'\\');
261 mvwaddch(bigdeer1,4,17,(chtype)'/');
262 mvwaddch(bigdeer1,4,18,(chtype)'/');
263 mvwaddch(bigdeer1,4,19,(chtype)'\\');
264 mvwaddch(bigdeer1,4,22,(chtype)'\\');
265 mvwaddstr(bigdeer1,5,7,"^~~~~~~~~// ~~U");
266 mvwaddstr(bigdeer1,6,7,"( \\_____( /");
267 mvwaddstr(bigdeer1,7,8,"( ) /");
268 mvwaddstr(bigdeer1,8,9,"\\\\ /");
269 mvwaddstr(bigdeer1,9,11,"\\>/>");
272 mvwaddch(bigdeer2,0,17,(chtype)'\\');
273 mvwaddch(bigdeer2,0,18,(chtype)'/');
274 mvwaddch(bigdeer2,0,20,(chtype)'\\');
275 mvwaddch(bigdeer2,0,21,(chtype)'/');
276 mvwaddch(bigdeer2,1,18,(chtype)'\\');
277 mvwaddch(bigdeer2,1,20,(chtype)'/');
278 mvwaddch(bigdeer2,2,19,(chtype)'|');
279 mvwaddch(bigdeer2,2,20,(chtype)'_');
280 mvwaddch(bigdeer2,3,18,(chtype)'/');
281 mvwaddch(bigdeer2,3,19,(chtype)'^');
282 mvwaddch(bigdeer2,3,20,(chtype)'0');
283 mvwaddch(bigdeer2,3,21,(chtype)'\\');
284 mvwaddch(bigdeer2,4,17,(chtype)'/');
285 mvwaddch(bigdeer2,4,18,(chtype)'/');
286 mvwaddch(bigdeer2,4,19,(chtype)'\\');
287 mvwaddch(bigdeer2,4,22,(chtype)'\\');
288 mvwaddstr(bigdeer2,5,7,"^~~~~~~~~// ~~U");
289 mvwaddstr(bigdeer2,6,7,"(( )____( /");
290 mvwaddstr(bigdeer2,7,7,"( / |");
291 mvwaddstr(bigdeer2,8,8,"\\/ |");
292 mvwaddstr(bigdeer2,9,9,"|> |>");
295 mvwaddch(bigdeer3,0,17,(chtype)'\\');
296 mvwaddch(bigdeer3,0,18,(chtype)'/');
297 mvwaddch(bigdeer3,0,20,(chtype)'\\');
298 mvwaddch(bigdeer3,0,21,(chtype)'/');
299 mvwaddch(bigdeer3,1,18,(chtype)'\\');
300 mvwaddch(bigdeer3,1,20,(chtype)'/');
301 mvwaddch(bigdeer3,2,19,(chtype)'|');
302 mvwaddch(bigdeer3,2,20,(chtype)'_');
303 mvwaddch(bigdeer3,3,18,(chtype)'/');
304 mvwaddch(bigdeer3,3,19,(chtype)'^');
305 mvwaddch(bigdeer3,3,20,(chtype)'0');
306 mvwaddch(bigdeer3,3,21,(chtype)'\\');
307 mvwaddch(bigdeer3,4,17,(chtype)'/');
308 mvwaddch(bigdeer3,4,18,(chtype)'/');
309 mvwaddch(bigdeer3,4,19,(chtype)'\\');
310 mvwaddch(bigdeer3,4,22,(chtype)'\\');
311 mvwaddstr(bigdeer3,5,7,"^~~~~~~~~// ~~U");
312 mvwaddstr(bigdeer3,6,6,"( ()_____( /");
313 mvwaddstr(bigdeer3,7,6,"/ / /");
314 mvwaddstr(bigdeer3,8,5,"|/ \\");
315 mvwaddstr(bigdeer3,9,5,"/> \\>");
318 mvwaddch(bigdeer4,0,17,(chtype)'\\');
319 mvwaddch(bigdeer4,0,18,(chtype)'/');
320 mvwaddch(bigdeer4,0,20,(chtype)'\\');
321 mvwaddch(bigdeer4,0,21,(chtype)'/');
322 mvwaddch(bigdeer4,1,18,(chtype)'\\');
323 mvwaddch(bigdeer4,1,20,(chtype)'/');
324 mvwaddch(bigdeer4,2,19,(chtype)'|');
325 mvwaddch(bigdeer4,2,20,(chtype)'_');
326 mvwaddch(bigdeer4,3,18,(chtype)'/');
327 mvwaddch(bigdeer4,3,19,(chtype)'^');
328 mvwaddch(bigdeer4,3,20,(chtype)'0');
329 mvwaddch(bigdeer4,3,21,(chtype)'\\');
330 mvwaddch(bigdeer4,4,17,(chtype)'/');
331 mvwaddch(bigdeer4,4,18,(chtype)'/');
332 mvwaddch(bigdeer4,4,19,(chtype)'\\');
333 mvwaddch(bigdeer4,4,22,(chtype)'\\');
334 mvwaddstr(bigdeer4,5,7,"^~~~~~~~~// ~~U");
335 mvwaddstr(bigdeer4,6,6,"( )______( /");
336 mvwaddstr(bigdeer4,7,5,"(/ \\");
337 mvwaddstr(bigdeer4,8,0,"v___= ----^");
341 mvwaddstr(lookdeer1,0,16,"\\/ \\/");
342 mvwaddstr(lookdeer1,1,17,"\\Y/ \\Y/");
343 mvwaddstr(lookdeer1,2,19,"\\=/");
344 mvwaddstr(lookdeer1,3,17,"^\\o o/^");
345 mvwaddstr(lookdeer1,4,17,"//( )");
346 mvwaddstr(lookdeer1,5,7,"^~~~~~~~~// \\O/");
347 mvwaddstr(lookdeer1,6,7,"( \\_____( /");
348 mvwaddstr(lookdeer1,7,8,"( ) /");
349 mvwaddstr(lookdeer1,8,9,"\\\\ /");
350 mvwaddstr(lookdeer1,9,11,"\\>/>");
353 mvwaddstr(lookdeer2,0,16,"\\/ \\/");
354 mvwaddstr(lookdeer2,1,17,"\\Y/ \\Y/");
355 mvwaddstr(lookdeer2,2,19,"\\=/");
356 mvwaddstr(lookdeer2,3,17,"^\\o o/^");
357 mvwaddstr(lookdeer2,4,17,"//( )");
358 mvwaddstr(lookdeer2,5,7,"^~~~~~~~~// \\O/");
359 mvwaddstr(lookdeer2,6,7,"(( )____( /");
360 mvwaddstr(lookdeer2,7,7,"( / |");
361 mvwaddstr(lookdeer2,8,8,"\\/ |");
362 mvwaddstr(lookdeer2,9,9,"|> |>");
365 mvwaddstr(lookdeer3,0,16,"\\/ \\/");
366 mvwaddstr(lookdeer3,1,17,"\\Y/ \\Y/");
367 mvwaddstr(lookdeer3,2,19,"\\=/");
368 mvwaddstr(lookdeer3,3,17,"^\\o o/^");
369 mvwaddstr(lookdeer3,4,17,"//( )");
370 mvwaddstr(lookdeer3,5,7,"^~~~~~~~~// \\O/");
371 mvwaddstr(lookdeer3,6,6,"( ()_____( /");
372 mvwaddstr(lookdeer3,7,6,"/ / /");
373 mvwaddstr(lookdeer3,8,5,"|/ \\");
374 mvwaddstr(lookdeer3,9,5,"/> \\>");
377 mvwaddstr(lookdeer4,0,16,"\\/ \\/");
378 mvwaddstr(lookdeer4,1,17,"\\Y/ \\Y/");
379 mvwaddstr(lookdeer4,2,19,"\\=/");
380 mvwaddstr(lookdeer4,3,17,"^\\o o/^");
381 mvwaddstr(lookdeer4,4,17,"//( )");
382 mvwaddstr(lookdeer4,5,7,"^~~~~~~~~// \\O/");
383 mvwaddstr(lookdeer4,6,6,"( )______( /");
384 mvwaddstr(lookdeer4,7,5,"(/ \\");
385 mvwaddstr(lookdeer4,8,0,"v___= ----^");
389 /***********************************************/
391 nodelay(stdscr,TRUE);
428 /* set up the windows for our blinking trees */
429 /* **************************************** */
432 overlay(treescrn, treescrn3);
435 mvwaddch(treescrn3, 4, 18, ' ');
436 mvwaddch(treescrn3, 7, 6, ' ');
437 mvwaddch(treescrn3, 8, 19, ' ');
438 mvwaddch(treescrn3, 11, 22, ' ');
441 mvwaddch(treescrn3, 0, 12, '*');
444 mvwaddch(treescrn3, 3, 11, ' ');
447 mvwaddch(treescrn3, 5, 13, ' ');
448 mvwaddch(treescrn3, 6, 10, ' ');
451 mvwaddch(treescrn3, 7, 16, ' ');
452 mvwaddch(treescrn3, 7, 14, ' ');
455 mvwaddch(treescrn3, 10, 13, ' ');
456 mvwaddch(treescrn3, 10, 10, ' ');
457 mvwaddch(treescrn3, 11, 8, ' ');
460 mvwaddch(treescrn3, 11, 18, ' ');
461 mvwaddch(treescrn3, 12, 13, ' ');
466 overlay(treescrn, treescrn4);
469 mvwaddch(treescrn4, 3, 9, ' ');
470 mvwaddch(treescrn4, 4, 16, ' ');
471 mvwaddch(treescrn4, 7, 6, ' ');
472 mvwaddch(treescrn4, 8, 19, ' ');
473 mvwaddch(treescrn4, 11, 2, ' ');
474 mvwaddch(treescrn4, 12, 23, ' ');
477 wstandout(treescrn4);
478 mvwaddch(treescrn4, 0, 12, '*');
479 wstandend(treescrn4);
482 mvwaddch(treescrn4, 3, 13, ' ');
487 mvwaddch(treescrn4, 7, 15, ' ');
488 mvwaddch(treescrn4, 8, 11, ' ');
491 mvwaddch(treescrn4, 9, 16, ' ');
492 mvwaddch(treescrn4, 10, 12, ' ');
493 mvwaddch(treescrn4, 11, 8, ' ');
496 mvwaddch(treescrn4, 11, 18, ' ');
497 mvwaddch(treescrn4, 12, 14, ' ');
502 overlay(treescrn, treescrn5);
505 mvwaddch(treescrn5, 3, 15, ' ');
506 mvwaddch(treescrn5, 10, 20, ' ');
507 mvwaddch(treescrn5, 12, 1, ' ');
510 mvwaddch(treescrn5, 0, 12, '*');
513 mvwaddch(treescrn5, 3, 11, ' ');
516 mvwaddch(treescrn5, 5, 12, ' ');
519 mvwaddch(treescrn5, 7, 14, ' ');
520 mvwaddch(treescrn5, 8, 10, ' ');
523 mvwaddch(treescrn5, 9, 15, ' ');
524 mvwaddch(treescrn5, 10, 11, ' ');
525 mvwaddch(treescrn5, 11, 7, ' ');
528 mvwaddch(treescrn5, 11, 17, ' ');
529 mvwaddch(treescrn5, 12, 13, ' ');
533 overlay(treescrn, treescrn6);
536 mvwaddch(treescrn6, 6, 7, ' ');
537 mvwaddch(treescrn6, 7, 18, ' ');
538 mvwaddch(treescrn6, 10, 4, ' ');
539 mvwaddch(treescrn6, 11, 23, ' ');
542 wstandout(treescrn6);
543 mvwaddch(treescrn6, 0, 12, '*');
544 wstandend(treescrn6);
549 mvwaddch(treescrn6, 5, 11, ' ');
552 mvwaddch(treescrn6, 7, 13, ' ');
553 mvwaddch(treescrn6, 8, 9, ' ');
556 mvwaddch(treescrn6, 9, 14, ' ');
557 mvwaddch(treescrn6, 10, 10, ' ');
558 mvwaddch(treescrn6, 11, 6, ' ');
561 mvwaddch(treescrn6, 11, 16, ' ');
562 mvwaddch(treescrn6, 12, 12, ' ');
566 overlay(treescrn, treescrn7);
569 mvwaddch(treescrn7, 3, 15, ' ');
570 mvwaddch(treescrn7, 6, 7, ' ');
571 mvwaddch(treescrn7, 7, 18, ' ');
572 mvwaddch(treescrn7, 10, 4, ' ');
573 mvwaddch(treescrn7, 11, 22, ' ');
576 mvwaddch(treescrn7, 0, 12, '*');
579 mvwaddch(treescrn7, 3, 12, ' ');
582 mvwaddch(treescrn7, 5, 13, ' ');
583 mvwaddch(treescrn7, 6, 9, ' ');
586 mvwaddch(treescrn7, 7, 15, ' ');
587 mvwaddch(treescrn7, 8, 11, ' ');
590 mvwaddch(treescrn7, 9, 16, ' ');
591 mvwaddch(treescrn7, 10, 12, ' ');
592 mvwaddch(treescrn7, 11, 8, ' ');
595 mvwaddch(treescrn7, 11, 18, ' ');
596 mvwaddch(treescrn7, 12, 14, ' ');
607 for(loopy = 0;loopy < 100;loopy++) {
616 while(getch() == (ERR));
617 /* while(!typeahead(stdin));*/
622 static int boxit(void)
648 static int seas(void)
663 static int greet(void)
679 static int fromwho(void)
681 mvaddstr(21, 13, FROMWHO);
685 static int tree(void)
687 mvwaddch(treescrn, 1, 11, (chtype)'/');
688 mvwaddch(treescrn, 2, 11, (chtype)'/');
689 mvwaddch(treescrn, 3, 10, (chtype)'/');
690 mvwaddch(treescrn, 4, 9, (chtype)'/');
691 mvwaddch(treescrn, 5, 9, (chtype)'/');
692 mvwaddch(treescrn, 6, 8, (chtype)'/');
693 mvwaddch(treescrn, 7, 7, (chtype)'/');
694 mvwaddch(treescrn, 8, 6, (chtype)'/');
695 mvwaddch(treescrn, 9, 6, (chtype)'/');
696 mvwaddch(treescrn, 10, 5, (chtype)'/');
697 mvwaddch(treescrn, 11, 3, (chtype)'/');
698 mvwaddch(treescrn, 12, 2, (chtype)'/');
700 mvwaddch(treescrn, 1, 13, (chtype)'\\');
701 mvwaddch(treescrn, 2, 13, (chtype)'\\');
702 mvwaddch(treescrn, 3, 14, (chtype)'\\');
703 mvwaddch(treescrn, 4, 15, (chtype)'\\');
704 mvwaddch(treescrn, 5, 15, (chtype)'\\');
705 mvwaddch(treescrn, 6, 16, (chtype)'\\');
706 mvwaddch(treescrn, 7, 17, (chtype)'\\');
707 mvwaddch(treescrn, 8, 18, (chtype)'\\');
708 mvwaddch(treescrn, 9, 18, (chtype)'\\');
709 mvwaddch(treescrn, 10, 19, (chtype)'\\');
710 mvwaddch(treescrn, 11, 21, (chtype)'\\');
711 mvwaddch(treescrn, 12, 22, (chtype)'\\');
713 mvwaddch(treescrn, 4, 10, (chtype)'_');
714 mvwaddch(treescrn, 4, 14, (chtype)'_');
715 mvwaddch(treescrn, 8, 7, (chtype)'_');
716 mvwaddch(treescrn, 8, 17, (chtype)'_');
718 mvwaddstr(treescrn, 13, 0, "//////////// \\\\\\\\\\\\\\\\\\\\\\\\");
720 mvwaddstr(treescrn, 14, 11, "| |");
721 mvwaddstr(treescrn, 15, 11, "|_|");
730 static int balls(void)
733 overlay(treescrn, treescrn2);
735 mvwaddch(treescrn2, 3, 9, (chtype)'@');
736 mvwaddch(treescrn2, 3, 15, (chtype)'@');
737 mvwaddch(treescrn2, 4, 8, (chtype)'@');
738 mvwaddch(treescrn2, 4, 16, (chtype)'@');
739 mvwaddch(treescrn2, 5, 7, (chtype)'@');
740 mvwaddch(treescrn2, 5, 17, (chtype)'@');
741 mvwaddch(treescrn2, 7, 6, (chtype)'@');
742 mvwaddch(treescrn2, 7, 18, (chtype)'@');
743 mvwaddch(treescrn2, 8, 5, (chtype)'@');
744 mvwaddch(treescrn2, 8, 19, (chtype)'@');
745 mvwaddch(treescrn2, 10, 4, (chtype)'@');
746 mvwaddch(treescrn2, 10, 20, (chtype)'@');
747 mvwaddch(treescrn2, 11, 2, (chtype)'@');
748 mvwaddch(treescrn2, 11, 22, (chtype)'@');
749 mvwaddch(treescrn2, 12, 1, (chtype)'@');
750 mvwaddch(treescrn2, 12, 23, (chtype)'@');
758 static int star(void)
760 wstandout(treescrn2);
761 mvwaddch(treescrn2, 0, 12, (chtype)'*');
762 wstandend(treescrn2);
770 static int strng1(void)
772 mvwaddch(treescrn2, 3, 13, (chtype)'\'');
773 mvwaddch(treescrn2, 3, 12, (chtype)':');
774 mvwaddch(treescrn2, 3, 11, (chtype)'.');
782 static int strng2(void)
784 mvwaddch(treescrn2, 5, 14, (chtype)'\'');
785 mvwaddch(treescrn2, 5, 13, (chtype)':');
786 mvwaddch(treescrn2, 5, 12, (chtype)'.');
787 mvwaddch(treescrn2, 5, 11, (chtype)',');
788 mvwaddch(treescrn2, 6, 10, (chtype)'\'');
789 mvwaddch(treescrn2, 6, 9, (chtype)':');
797 static int strng3(void)
799 mvwaddch(treescrn2, 7, 16, (chtype)'\'');
800 mvwaddch(treescrn2, 7, 15, (chtype)':');
801 mvwaddch(treescrn2, 7, 14, (chtype)'.');
802 mvwaddch(treescrn2, 7, 13, (chtype)',');
803 mvwaddch(treescrn2, 8, 12, (chtype)'\'');
804 mvwaddch(treescrn2, 8, 11, (chtype)':');
805 mvwaddch(treescrn2, 8, 10, (chtype)'.');
806 mvwaddch(treescrn2, 8, 9, (chtype)',');
814 static int strng4(void)
816 mvwaddch(treescrn2, 9, 17, (chtype)'\'');
817 mvwaddch(treescrn2, 9, 16, (chtype)':');
818 mvwaddch(treescrn2, 9, 15, (chtype)'.');
819 mvwaddch(treescrn2, 9, 14, (chtype)',');
820 mvwaddch(treescrn2, 10, 13, (chtype)'\'');
821 mvwaddch(treescrn2, 10, 12, (chtype)':');
822 mvwaddch(treescrn2, 10, 11, (chtype)'.');
823 mvwaddch(treescrn2, 10, 10, (chtype)',');
824 mvwaddch(treescrn2, 11, 9, (chtype)'\'');
825 mvwaddch(treescrn2, 11, 8, (chtype)':');
826 mvwaddch(treescrn2, 11, 7, (chtype)'.');
827 mvwaddch(treescrn2, 11, 6, (chtype)',');
828 mvwaddch(treescrn2, 12, 5, (chtype)'\'');
836 static int strng5(void)
838 mvwaddch(treescrn2, 11, 19, (chtype)'\'');
839 mvwaddch(treescrn2, 11, 18, (chtype)':');
840 mvwaddch(treescrn2, 11, 17, (chtype)'.');
841 mvwaddch(treescrn2, 11, 16, (chtype)',');
842 mvwaddch(treescrn2, 12, 15, (chtype)'\'');
843 mvwaddch(treescrn2, 12, 14, (chtype)':');
844 mvwaddch(treescrn2, 12, 13, (chtype)'.');
845 mvwaddch(treescrn2, 12, 12, (chtype)',');
847 /* save a fully lit tree */
848 overlay(treescrn2, treescrn);
857 static int blinkit(void)
870 overlay(treescrn3, treescrn8);
875 overlay(treescrn4, treescrn8);
880 overlay(treescrn5, treescrn8);
885 overlay(treescrn6, treescrn8);
890 overlay(treescrn7, treescrn8);
897 /*ALL ON***************************************************/
899 overlay(treescrn, treescrn8);
908 deer_step(WINDOW *win, int y, int x)
916 static int reindeer(void)
922 for(x_pos = 70; x_pos > 62; x_pos--) {
926 for(looper = 0; looper < 4; looper++) {
927 mvwaddch(dotdeer0, y_pos, x_pos, (chtype)'.');
939 for(; x_pos > 50; x_pos--) {
940 for(looper = 0; looper < 4; looper++) {
945 mvwaddch(stardeer0, y_pos, x_pos, (chtype)'*');
952 mvwaddch(dotdeer0, y_pos, x_pos, (chtype)'*');
964 for(y_pos = 2; y_pos < 5; y_pos++) {
970 for(looper = 0; looper < 4; looper++) {
971 deer_step(lildeer3, y_pos, x_pos);
972 deer_step(lildeer2, y_pos, x_pos);
973 deer_step(lildeer1, y_pos, x_pos);
974 deer_step(lildeer2, y_pos, x_pos);
975 deer_step(lildeer3, y_pos, x_pos);
988 for(y_pos = 5; y_pos < 10; y_pos++) {
994 for(looper = 0; looper < 2; looper++) {
995 deer_step(middeer3, y_pos, x_pos);
996 deer_step(middeer2, y_pos, x_pos);
997 deer_step(middeer1, y_pos, x_pos);
998 deer_step(middeer2, y_pos, x_pos);
999 deer_step(middeer3, y_pos, x_pos);
1003 wrefresh(w_del_msg);
1013 for(x_pos = 8; x_pos < 16; x_pos++) {
1014 deer_step(bigdeer4, y_pos, x_pos);
1015 deer_step(bigdeer3, y_pos, x_pos);
1016 deer_step(bigdeer2, y_pos, x_pos);
1017 deer_step(bigdeer1, y_pos, x_pos);
1018 deer_step(bigdeer2, y_pos, x_pos);
1019 deer_step(bigdeer3, y_pos, x_pos);
1020 deer_step(bigdeer4, y_pos, x_pos);
1021 deer_step(bigdeer0, y_pos, x_pos);
1026 for(looper = 0; looper < 6; looper++) {
1027 deer_step(lookdeer4, y_pos, x_pos);
1028 deer_step(lookdeer3, y_pos, x_pos);
1029 deer_step(lookdeer2, y_pos, x_pos);
1030 deer_step(lookdeer1, y_pos, x_pos);
1031 deer_step(lookdeer2, y_pos, x_pos);
1032 deer_step(lookdeer3, y_pos, x_pos);
1033 deer_step(lookdeer4, y_pos, x_pos);
1036 deer_step(lookdeer0, y_pos, x_pos);
1038 for(; y_pos < 10; y_pos++) {
1039 for(looper = 0; looper < 2; looper++) {
1040 deer_step(bigdeer4, y_pos, x_pos);
1041 deer_step(bigdeer3, y_pos, x_pos);
1042 deer_step(bigdeer2, y_pos, x_pos);
1043 deer_step(bigdeer1, y_pos, x_pos);
1044 deer_step(bigdeer2, y_pos, x_pos);
1045 deer_step(bigdeer3, y_pos, x_pos);
1046 deer_step(bigdeer4, y_pos, x_pos);
1048 deer_step(bigdeer0, y_pos, x_pos);
1053 deer_step(lookdeer3, y_pos, x_pos);
1057 static RETSIGTYPE done(int sig GCC_UNUSED)
1059 signal(SIGINT,done);
1060 signal(SIGTERM,done);
1061 #if !defined DOS && !defined OS2
1062 signal(SIGHUP,done);
1063 signal(SIGQUIT,done);