[net.sources] dumb little curses program

toby@gargoyle.UChicago.UUCP (Toby Harness) (12/21/84)

/*
 * plane.c  - a dumb little curses program
 *
 * cc plane.c -o plane -lcurses -lterm{cap,lib} -O -s
 *
 * The basic idea of this was stolen from someone unknown at hpfcms
 *
 * Toby Harness		12/84
 */

#include <curses.h>

#define max(a,b)	((a > b) ? a : b)

main()
{
	WINDOW      *cloud, *plane, *bomb, *newwin();
	int i, j;

	initscr();

	cloud = newwin(8, 30, 2, 3 * COLS / 5);      
	plane = newwin(8, COLS, 9, 0);
	bomb = newwin(LINES - 15, COLS, 15, 0);      

	waddstr(cloud, "\
          .\n\
        .  . .\n\
  .  .   .. .   ..\n\
 .      .  .  .   .\n\
  .  .   .. .   . .\n\
        .  .     .  .");


	waddstr(plane, "\
  ^\n\
 | \\       --------\n\
 |  \\________/ /___|\n\
 |--   S U  / /    0\n\
 <---------/ /-----|\n\
        --------");
      
	waddstr(bomb, "          rm *");
   
	wrefresh(cloud);
	wrefresh(plane);
	wrefresh(bomb);

	for(j=0; j < COLS; j++) {
		/* slowly move the cloud */
		wmove(cloud, (j + 12) % 23, 0);
		winsch(cloud, ' ');
		wrefresh(cloud);

		/* move the plane and bomb */
		for(i = 0; i < max(9, LINES - 15); i++) {
			wmove(plane, i, 0);
			winsch(plane, ' ');
			wmove(bomb, i, 0);
			winsch(bomb, ' ');
		}
		wrefresh(plane);         

		/* drop the bomb */
		if((j + 10) > (COLS / 2) && j % 2) {
			wmove(bomb, 0, 0);
			winsertln(bomb);
		}
		wrefresh(bomb);         
	}

	mvcur(0, COLS - 1, LINES - 1, 0);
	endwin();
}