home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.barnyard.co.uk
/
2015.02.ftp.barnyard.co.uk.tar
/
ftp.barnyard.co.uk
/
cpm
/
walnut-creek-CDROM
/
CPM
/
BDSC
/
BDSC-2
/
WAVY.CQ
/
WAVY.C
Wrap
Text File
|
2000-06-30
|
2KB
|
70 lines
/*
Wavy Lines for the H19/Z19/H89/Z89
Written by Leor Zolman, 11/81
This program is configured for the H19 terminal, but may be used
on ANY cursor-addressable terminal by:
a) modifying the first four #define lines to suit your
particular terminal, and
b) modifying the cursor addressing sequence (commented)
in the program to work for your terminal.
For best effect, compile with:
A>cc1 wavy.c -e2000 -o <cr>
*/
/* The following four #define statements need customizing for your terminal: */
#define INIT "\33E\33F\33x5" /* clear screen, enter graphics mode, */
/* and turn off the cursor */
#define UNINIT "\33E\33G\33y5" /* clear screen, exit graphics mode, */
/* and turn cursor back on */
#define SLASH 'x' /* these are special characters in H19 */
#define BACKSLASH 'y' /* graphics mode. If you don't have an */
/* H19, make these simply '/' and '\\' */
#define MAXL 200 /* maximum number of lines at one time */
int direc[MAXL];
char column[MAXL];
char i;
char nlines;
main()
{
top: puts(UNINIT);
srand1("How many wavy lines (1-200, q to quit) ? ");
if (!scanf("%d",&nlines) || nlines < 1 || nlines > MAXL) exit();
puts(INIT);
for (i=0; i<nlines; i++) /* initialize lines */
{
column[i] = 40; /* start out at center */
direc[i] = rand() % 2 * 2 - 1;
}
while (1)
{
putch('\n');
if (kbhit() && getchar()) goto top; /* if key hit, stop */
for (i = 0; i < nlines; i++)
{
putch('\33'); /* position cursor at row 23, */
putch('Y'); /* column i */
putch(' '+23); /* MODIFY THIS SECTION FOR */
putch(' '+column[i]); /* NON-H19 TERMINALS! */
putch ((direc[i] == -1) ? SLASH : BACKSLASH);
if (rand() % (40 - (column[i]-39) * direc[i]))
column[i] += direc[i]; /* keep same direction */
else
direc[i] = -direc[i]; /* change direction */
}
}
}