[net.sources] holiday cheer again -- jew.c

smk@linus.UUCP (Steven M. Kramer) (12/04/83)

Oh, the holidays are here again.  It is snowing out (here in NE).
So it's time again to post holiday source code.  Here is my
contribution again ... I call it jew.
You need the /dev/ft device (or the nap system call -- but then
delete the nap routine here) for this to be effective.
--------------------------

#include <curses.h>

#define FLICKER 40

main()
{
	int x, y;

	srand ((int) time (0));

	/*
	 * If you don't have the Berkeley "curses" library, delete
	 * this routine call.
	 */
	initscr();

	clear();
	refresh();
	sleep(1);

	output2(4, 39, '*'); output2(4, 41, '*');
	output2(5, 39, '*'); output2(5, 41, '*');
	output2(6, 39, '*'); output2(6, 41, '*');
	output2(7, 39, '*'); output2(7, 41, '*');
	output2(8, 39, '*'); output2(8, 41, '*');
	output2(9, 39, '*'); output2(9, 41, '*');
	output2(10, 39, '*'); output2(10, 41, '*');
	output2(11, 39, '*'); output2(11, 41, '*');
	output2(12, 39, '*'); output2(12, 41, '*');
	output2(13, 39, '*'); output2(13, 41, '*');
	output2(14, 39, '*'); output2(14, 41, '*');
	output2(15, 39, '*'); output2(15, 41, '*');
	output2(16, 39, '*'); output2(16, 41, '*');
	output2(17, 39, '*'); output2(17, 41, '*');
	output2(18, 39, '*'); output2(18, 41, '*');
	output2(19, 36, '*'); output2(19, 44, '*');
	output2(20, 34, '*'); output2(20, 46, '*');

	for (x = 35; x <= 45; x++)
		output2 (21, x, '_');

	move(0,0);
	refresh();
	sleep(3);

	output2 (5, 14, '*'); output2 (5, 16, '*');
	output2 (5, 64, '*'); output2 (5, 66, '*');
	for (x=6; x<= 9; x++)
	{
		output2 (x, 8+x, '*'); output2 (x, 10+x, '*');
		output2 (x, 70-x, '*'); output2 (x, 72-x, '*');
	}

	output2(10, 19, '*'); output2(10, 21, '*');
	output2(10, 59, '*'); output2(10, 61, '*');
	output2(11, 21, '*'); output2(11, 23, '*');
	output2(11, 57, '*'); output2(11, 59, '*');
	output2(12, 23, '*'); output2(12, 25, '*');
	output2(12, 55, '*'); output2(12, 57, '*');
	output2(13, 25, '*'); output2(13, 27, '*');
	output2(13, 53, '*'); output2(13, 55, '*');
	output2(14, 27, '*'); output2(14, 29, '*');
	output2(14, 51, '*'); output2(14, 53, '*');
	output2(15, 30, '*'); output2(15, 32, '*');
	output2(15, 48, '*'); output2(15, 50, '*');
	output2(16, 33, '*'); output2(16, 35, '*');
	output2(16, 45, '*'); output2(16, 47, '*');
	output2(17, 36, '*'); output2(17, 38, '*');
	output2(17, 42, '*'); output2(17, 44, '*');

	move(0,0);
	refresh();
	sleep(3);

	output2 (5, 20, '*'); output2 (5, 22, '*');
	output2 (5, 58, '*'); output2 (5, 60, '*');
	for (x=6; x<= 9; x++)
	{
		output2 (x, 14+x, '*'); output2 (x, 16+x, '*');
		output2 (x, 64-x, '*'); output2 (x, 66-x, '*');
	}
	output2(10, 25, '*'); output2(10, 27, '*');
	output2(10, 53, '*'); output2(10, 55, '*');
	output2(11, 27, '*'); output2(11, 29, '*');
	output2(11, 51, '*'); output2(11, 53, '*');
	output2(12, 29, '*'); output2(12, 31, '*');
	output2(12, 49, '*'); output2(12, 51, '*');
	output2(13, 31, '*'); output2(13, 33, '*');
	output2(13, 47, '*'); output2(13, 49, '*');
	output2(14, 33, '*'); output2(14, 35, '*');
	output2(14, 45, '*'); output2(14, 47, '*');
	output2(15, 36, '*'); output2(15, 38, '*');
	output2(15, 42, '*'); output2(15, 44, '*');

	move(0,0);
	refresh();
	sleep(2);

	output2 (5, 26, '*'); output2 (5, 28, '*');
	output2 (5, 52, '*'); output2 (5, 54, '*');
	for (x=6; x<= 9; x++)
	{
		output2 (x, 20+x, '*'); output2 (x, 22+x, '*');
		output2 (x, 58-x, '*'); output2 (x, 60-x, '*');
	}
	output2(10, 31, '*'); output2(10, 33, '*');
	output2(10, 47, '*'); output2(10, 49, '*');
	output2(11, 33, '*'); output2(11, 35, '*');
	output2(11, 45, '*'); output2(11, 47, '*');
	output2(12, 35, '*'); output2(12, 37, '*');
	output2(12, 43, '*'); output2(12, 45, '*');

	move(0,0);
	refresh();
	sleep(2);

	output2 (5, 32, '*'); output2 (5, 34, '*');
	output2 (5, 46, '*'); output2 (5, 48, '*');
	for (x=6; x<= 9; x++)
	{
		output2 (x, 26+x, '*'); output2 (x, 28+x, '*');
		output2 (x, 52-x, '*'); output2 (x, 54-x, '*');
	}
	output2(10, 37, '*'); output2(10, 43, '*');

	move(0,0);
	refresh();
	sleep(3);

	output2(3, 39, '|'); output2(3, 41, '|');
	output2(4, 14, '|'); output2(4, 16, '|');
	output2(4, 66, '|'); output2(4, 64, '|');
	output2(4, 60, '|'); output2(4, 58, '|');
	output2(4, 20, '|'); output2(4, 22, '|');
	output2(4, 26, '|'); output2(4, 28, '|');
	output2(4, 54, '|'); output2(4, 52, '|');
	output2(4, 48, '|'); output2(4, 46, '|');
	output2(4, 32, '|'); output2(4, 34, '|');

	move(0,0);
	refresh();
	sleep(3);

	random (0);

	output2(23, 10, 'D'); output2(23, 12, 'A'); output2(23, 14, 'Y');
	output2(23, 16, ':');

	output2(23, 20, '1');
	output2(3, 64, '/'); output2(3, 66, '\\');
	random(1);
	output2(23, 20, '2');
	output2(3, 58, '/'); output2(3, 60, '\\');
	random(2);
	output2(23, 20, '3');
	output2(3, 52, '/'); output2(3, 54, '\\');
	random(3);
	output2(23, 20, '4');
	output2(3, 46, '/'); output2(3, 48, '\\');
	random(4);
	output2(23, 20, '5');
	output2(3, 32, '/'); output2(3, 34, '\\');
	random(5);
	output2(23, 20, '6');
	output2(3, 26, '/'); output2(3, 28, '\\');
	random(6);
	output2(23, 20, '7');
	output2(3, 20, '/'); output2(3, 22, '\\');
	random(7);
	output2(23, 20, '8');
	output2(3, 14, '/'); output2(3, 16, '\\');
	random(8);

	output2(2, 39, '/'); output2(2, 41, '\\');
	output2(3, 14, '/'); output2(3, 16, '\\');
	output2(3, 20, '/'); output2(3, 22, '\\');
	output2(3, 26, '/'); output2(3, 28, '\\');
	output2(3, 32, '/'); output2(3, 34, '\\');
	output2(3, 46, '/'); output2(3, 48, '\\');
	output2(3, 52, '/'); output2(3, 54, '\\');
	output2(3, 58, '/'); output2(3, 60, '\\');
	output2(3, 64, '/'); output2(3, 66, '\\');

	output2(23, 10, ' '); output2(23, 12, ' '); output2(23, 14, ' ');
	output2(23, 16, ' '); output2(23, 20, ' ');
	output2(23, 24, 'H'); output2(23, 26, 'A'); output2(23, 28, 'P');
	output2(23, 30, 'P'); output2(23, 32, 'Y');
	output2(23, 34, ' '); output2(23, 36, 'C');
	output2(23, 38, 'H'); output2(23, 40, 'A'); output2(23, 42, 'N');
	output2(23, 44, 'U'); output2(23, 46, 'K'); output2(23, 48, 'A');
	output2(23, 50, 'H'); output2(23, 52, '!'); output2(23, 54, '!');
	output2(23, 56, '!');

	move(23,0);
	refresh();

	/*
	 * If you don't have the Berkeley "curses" library, delete
	 * this routine call.
	 */
	endwin();
}
output(y, x, c)
int y, x;
char c;
{
	mvaddch(y-1, x, c);
	refresh();

	/*
	 * If your system doesn't have the "nap()" system call,
	 * delete this line.
	 */
	nap(6);
}
output2(y, x, c)
int y, x;
char c;
{
	mvaddch(y-1, x, c);
	refresh();
}


random (day)
	register int day;
{
	register int repeat;

	for (repeat = 0; repeat < FLICKER; repeat++)
		switch (rand() % (3*(day+1)))
		{
			case 0:
				output(2, 39, '/'); output(2, 41, '\\');
				break;
			case 1:
				output(2, 39, '\\'); output(2, 41, '\\');
				break;
			case 2:
				output(2, 39, '/'); output(2, 41, '/');
				break;
			case 3:
				output(3, 64, '/'); output(3, 66, '\\');
				break;
			case 4:
				output(3, 64, '\\'); output(3, 66, '\\');
				break;
			case 5:
				output(3, 64, '/'); output(3, 66, '/');
				break;
			case 6:
				output(3, 58, '/'); output(3, 60, '\\');
				break;
			case 7:
				output(3, 58, '\\'); output(3, 60, '\\');
				break;
			case 8:
				output(3, 58, '/'); output(3, 60, '/');
				break;
			case 9:
				output(3, 52, '/'); output(3, 54, '\\');
				break;
			case 10:
				output(3, 52, '\\'); output(3, 54, '\\');
				break;
			case 11:
				output(3, 52, '/'); output(3, 54, '/');
				break;
			case 12:
				output(3, 46, '/'); output(3, 48, '\\');
				break;
			case 13:
				output(3, 46, '\\'); output(3, 48, '\\');
				break;
			case 14:
				output(3, 46, '/'); output(3, 48, '/');
				break;
			case 15:
				output(3, 32, '/'); output(3, 34, '\\');
				break;
			case 16:
				output(3, 32, '\\'); output(3, 34, '\\');
				break;
			case 17:
				output(3, 32, '/'); output(3, 34, '/');
				break;
			case 18:
				output(3, 26, '/'); output(3, 28, '\\');
				break;
			case 19:
				output(3, 26, '\\'); output(3, 28, '\\');
				break;
			case 20:
				output(3, 26, '/'); output(3, 28, '/');
				break;
			case 21:
				output(3, 20, '/'); output(3, 22, '\\');
				break;
			case 22:
				output(3, 20, '\\'); output(3, 22, '\\');
				break;
			case 23:
				output(3, 20, '/'); output(3, 22, '/');
				break;
			case 24:
				output(3, 14, '/'); output(3, 16, '\\');
				break;
			case 25:
				output(3, 14, '\\'); output(3, 16, '\\');
				break;
			case 26:
				output(3, 14, '/'); output(3, 16, '/');
				break;
		}
}

nap(delay)
	int delay;
{
	static int fd;

	if (fd == 0)
		fd = open ("/dev/ft", 0);
	read (fd, 0, delay);
}
-- 
	--steve kramer
	{allegra,genrad,ihnp4,utzoo,philabs,uw-beaver}!linus!smk	(UUCP)
	linus!smk@mitre-bedford						(MIL)