``````{If you have any questions please send me mail at OleRom@hotmail.com}
Uses Graph, Crt;
Var X, Y : Word;
R : ShortInt;
Xx : Array[1..10] of Word;
C : Array[1..10] of Byte;
W : Array[1..10] of Word;
B : Byte;
S : String[1];
Procedure SetGraph;
{\$F+} Function DETECTSvga : Integer; assembler; {\$F-} asm mov ax,0002h end;
Var GDr : Integer;
Begin
GDr := InstallUserDriver('SVGA256',@DETECTSvga);
GDr := DETECT;
InitGraph(GDr,GDr,'');
End;
Procedure SetPal(Color,R,G,B:Byte); assembler;
asm
mov dx,03C8h; mov al,[Color]; out dx,al
inc dx; mov al,[R]; out dx,al
mov al,[G]; out dx,al; mov al,[B]; out dx,al
end;
Begin
SetGraph;
For B := 1 to 63 do SetPal(B,B,B,B div 3);
Repeat
ClearDevice;
For B := 1 to 10 do C[B] := Random(63);
X := GetMaxX div 2;
For B := 1 to 10 do W[b] := Random(300)-150+GetMaxY div 2;
For Y := 00 to GetMaxY do
Begin
For B := 1 to 10 do
If Y = W[B] then Xx[B] := X;
If Y mod 10 = 0 then R := Random(3)-1;
X:=X+R;
X:=X+Random(3)-1;
PutPixel(X,Y,63);
PutPixel(X+1,Y,23);
PutPixel(X-1,Y,23);
End;
For B := 1 to 10 do
Begin
X := Xx[B];
For Y := w[b] to W[b] + Random(200) do
Begin
If Y mod 10 = 0 then R := Random(3)-1;
X:=X+R+Random(3)-1;
If Odd(Y) then
If Odd(B) then Inc(X) else Dec(X);
PutPixel(X,Y,C[B]);
End;
End;