scatter away those rainy days

utzoo!decvax!harpo!floyd!vax135!lime!martin utzoo!decvax!harpo!floyd!vax135!lime!martin
Thu Apr 15 18:33:39 AEST 1982


#include	<stdio.h>

/*
 *	SCATTER. This program takes the first 23 lines from the standard
 *	input and displays them on the VDU screen, in a random manner.
 *	The program is set up to work on HP262X terminals. Each run of the
 *	program is different.
 *	i do not use /etc/termcap et all, because this was a small program
 *	written on a rainy day.
 *	The program has no worth while use except for "who|scatter" and
 *	"ls - l | scatter" when you are boared.
 *
 *				martin levy. HO-2787. houxg!lime!martin.
 */

char s[23][80];					/* Screen Array */

main()
{
	register int i=0,j=0;
	register char c;
	int char_count=0;
	long t;
	char buf[BUFSIZ];

	setbuf(stdout,buf);
	init();
	while( (c=getchar()) != EOF && i < 23 )
	{
		if(c != '\n')
		{
			if(c == '\t')
				j = (j|07)+1;	/* Adjust for tab char */
			else
			{
				s[i][j++] = c;	/* Place char in screen array */
				if(c != ' ')
					char_count++;
			}
		}
		else
		{
			j=0;
			i++;			/* Newline in array */
		}
	}
	/* screen read in */

	time(t);
	srand((int)(t&0177777L));		/* Seed the random number gen */
	clear();				/* clear screen */

	while(char_count)
	{
		i=rand()%23;
		j=rand()%80;
		if(s[i][j] != EOF && s[i][j] != ' ')
		{
			printf("%s%c",cursor(i,j),s[i][j]);
			s[i][j]=EOF;
			char_count--;
		}
	}
	printf("%s",cursor(23,0));
}


init()
{
	register int i,j;

	for(i=0;i<23;i++)
		for(j=0;j<80;j++) s[i][j]=EOF;
}

/*
 *	Terminal dependant stuff (this is for a HP)
 */

clear()
{
	printf("\033H\033J");			/* Clear screen HP262X */
/*	printf("\033[H\033[J");			/* Clear screen VT100 */
}

char *cursor(i,j)
int i,j;
{
	static char cs[12];

	sprintf(cs,"\033&a%dy%dC",i,j);		/* cursor HP262X */
/*	sprintf(cs,"\033[%d;%dH",i,j);		/* cursor VT100 */
	return(cs);
}



More information about the Comp.sources.unix mailing list