[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]