home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The C Users' Group Library 1994 August
/
wc-cdrom-cusersgrouplibrary-1994-08.iso
/
listings
/
v_08_10
/
8n10130a
< prev
next >
Wrap
Text File
|
1990-08-29
|
4KB
|
157 lines
#include "csim.h"
#include <bios.h>
#include <conio.h>
#include <graphics.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void mover(void);
void ender(void);
int color = 1;
int maxx,maxy;
int main(void)
{
int loop;
int gr_driver,gr_mode,gr_error;
clrscr();
randomize();
for(loop = 0;loop < 4;loop++)
if(start_process(mover,0x0080))
exit_processing(loop);
if(start_kb_process(ender,0x0040))
exit_processing(3);
gr_driver = DETECT;
gr_mode = VGAHI;
initgraph(&gr_driver,&gr_mode,"");
gr_error = graphresult();
if (gr_error != 0)
{
printf("%s \n",grapherrormsg(gr_error));
exit(1);
}
maxx = getmaxx();
maxy = getmaxy();
sim_start();
return(0);
}
void mover(void)
{
int mycolor;
int x,y,oldx,oldy,dir;
if(color == 7)
color += 2;
mycolor = color++;
color %= 16;
if(color == 0)
color++;
x = oldx = (rand() % (maxx-10)) + 5;
y = oldy = (rand() % (maxy-10)) + 5;
dir = rand() % 4;
while(1)
{
switch(rand()%6)
{
case 0:
dir+=7;
dir = dir % 8;
break;
case 1:
dir++;
dir = dir % 8;
break;
case 2:
dir+=2;
dir = dir % 8;
break;
case 3:
dir+=6;
dir = dir % 8;
break;
default:
break;
}
switch(dir)
{
case 0:
x += 4;
if(x>(maxx-5))
dir = 4;
break;
case 1:
y += 3;
if(y>(maxy-5))
dir = 6;
x += 3;
if(x>(maxx-5))
dir = 5;
break;
case 2:
y += 4;
if(y>(maxy-5))
dir = 6;
break;
case 3:
x -= 3;
if(x<5)
dir = 0;
y += 3;
if(y>(maxy-5))
dir = 7;
break;
case 4:
x -= 4;
if(x<5)
dir = 0;
break;
case 5:
y -= 3;
if(y<5)
dir = 2;
x -= 3;
if(x<5)
dir = 3;
break;
case 6:
y -= 4;
if(y<5)
dir = 2;
break;
case 7:
x += 3;
if(x>maxx-5)
dir = 4;
y -= 3;
if(y<5)
dir = 3;
break;
}
setlinestyle(SOLID_LINE,0,3);
setcolor(BLACK);
line(oldx,oldy,x,y);
setlinestyle(SOLID_LINE,0,1);
setcolor(mycolor);
line(oldx,oldy,x,y);
oldx = x;
oldy = y;
wait_for_time(0);
}
}
void ender(void)
{
while(!bioskey(1))
wait_for_time(100);
closegraph();
exit_processing(0);
}