[Back to GRAPHICS SWAG index]  [Back to Main SWAG index]  [Original]

{ 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

[Back to GRAPHICS SWAG index]  [Back to Main SWAG index]  [Original]