``````{
BERNIE PALLEK

> Hmm.. does anyone have an example of a starfield routine in Turbo Pascal..

OK, here's a sample (I don't know what kind of starfield you're looking for):

{EGA/VGA parallax stars}

Uses
Crt, Graph, KasUtils;

Const
starCol : Array[0..2] of Byte = (8, 7, 15);

Type
StarRec = Record
x : Integer;
y : Integer;
d : Integer;  { depth }
end;

Var
stars : Array[0..31] of StarRec;
xinc,
yinc  : Integer;
ch    : Char;

Procedure OpenGraph;
Var
gd, gm : Integer;
begin
EgaVga_Exe;
Gd := Detect;
{ this doesn't care if you don't have correct video card or not }
InitGraph(gd, gm, '');   { put the path to your BGI }
end;

Procedure InitStars;
Var
i : Integer;
begin
For i := 0 to 31 do
With stars[i] do
begin
x := Random(GetMaxX);
y := Random(GetMaxY);
d := Random(3);
end;
end;

Procedure MoveStars;
Var
i : Integer;
begin
For i := 0 to 31 do
With stars[i] do
begin
PutPixel(x, y, 0);
x := x + xinc * (d + 1);
if (x < 0) then
x := x + GetMaxX;
if (x > GetMaxX) then
x := x - GetMaxX;
y := y + yinc * (d + 1);
if (y < 0) then
y := y + GetMaxY;
if (y > GetMaxY) then
y := y - GetMaxY;
PutPixel(x, y, starCol[d]);
end;
end;

begin
OpenGraph;  (* enter Graphics mode *)
InitStars;
xinc := 1;
yinc := 0;
Repeat
MoveStars;
Delay(10);
(* Delay here For faster computers *)
Until KeyPressed;
if (ch = #0) then
ch := ReadKey;  (* get rid of extended keycodes *)
CloseGraph;
end.

{
Whew!  There you have it!  Untested, of course, so you may have to iron out a
few bugs.

**** BIG HINT: You should probably use Real numbers instead of Integer numbers
for x and y positions and increments, and Round them when PutPixel-ing!  This
will allow you to make smoother transitions, as well as bouncing effects, and
other neat stuff. ****

You'll notice (if the thing works) that the stars move horizontally only, and
the dimmer ones move slower than the bright ones (parallax/multi-layered).  You
can add extra layers, but remember to change the StarCol Constant so you have
the right number of colours For the stars.

Sorry, I was too lazy to comment it thoroughly; I'm expecting that you'll be
able to figure it out Without too much trouble.  Sorry if you can't; Write me
for an explanation.  TTYL.
}

``````