``````{ BRendEN BEAMAN }

Program starfield;
Uses
Crt, Graph;

Var
l, l2,
gd, gm,
x, y   : Integer;
rad    : Array [1..20] of Integer;
p      : Array [1..20, 1..5] of Integer;

Procedure put(p, rad : Integer; col : Word);
begin
setcolor(col);  {1 pixel arc instead of putpixel}
arc(x, y, p, p + 1, rad);
end;

Procedure putstar;
begin
For l := 1 to 20 do      {putting stars. #15 below is color of stars}
For l2 := 1 to 5 do put(p[l, l2], rad[l], 15);
end;

Procedure delstar;
begin
For l := 1 to 20 do  {erasing stars}
For l2 := 1 to 5 do put(p[l, l2], rad[l], 0);
end;

begin
randomize;
gd := detect;
initGraph(gd, gm, 'd:\bp\bgi');
x := 320;
y := 240;

For l := 1 to 20 do
rad[l] := l * 10;
For l := 1 to 20 do
For l2 := 1 to 5 do
p[l, l2] := random(360);

While not KeyPressed do
begin
delstar;
For l := 1 to 20 do
begin                {moving stars towards 'camera'}
rad[l] := rad[l] + round(rad[l] / 20 + 1); { (20)=starspeed.  }
if rad[l] > 400 then
rad[l] := l * 10;                 { starspeed must be equal }
end;                                   { to or less than 20     }
putstar;
end;
readln;
end.

The concept is fairly simple, but most people underestimate arcs...
you can set where on the circle, (0-360 degres) the arc starts, and
stops... if you set a one pixel arc at 100, and increase the radius of
the circle in a loop, it will apear to come towards you in three
dimentions... any other questions, or problems running it, contact
me... ttyl

``````