program demo;
uses
crt,graph,dos;
const
Xmax=640;
Ymax=480;
procedure inicializacion;
var
Gd, Gm: Integer;
begin
Gd := Detect;
InitGraph(Gd, Gm, '');
if GraphResult <> grOk then
Halt(1);
randomize;
end;
procedure esperar;
var
tecleado:char;
const esc=#27;
begin
repeat until keypressed;
tecleado:=readkey;
if tecleado = #0 then tecleado:=readkey;
if tecleado = esc then halt(0)
else cleardevice;
end;
procedure recuadro;
var
ViewPort : ViewPortType;
begin
cleardevice;
setcolor(white);
SetLineStyle(solidln, 0, NormWidth);
GetViewSettings(ViewPort);
with ViewPort do
Rectangle(0, 0, x2-x1, y2-y1)
end;
procedure stars;
begin
repeat
setbkcolor(0);
putpixel(random(getmaxX-5) , random(getmaxY-5) , (white))
until keypressed;
esperar;
end;
procedure lineas;
begin
repeat
setbkcolor(0);
setcolor(random(getmaxcolor));
line((getmaxX div 2) ,( getmaxY div 2) ,random(getmaxX-5) , random(getmaxY-5));
until keypressed;
delay(1);
esperar;
end;
procedure elipses;
begin
repeat
setcolor(random(100)); ellipse(random(getmaxX-50),random(getmaxY-50),
random(360),random(360),random(50),random(50));
until keypressed;
delay(100);
esperar;
end;
procedure tramado;
var x,y:word;
begin
y:=1;
x:=1;
while y<480 do
while x<640 do
begin
y:=y+20;
x:=x+20;
setcolor(lightblue);
line(0,y,x,480);
line(x,0,640,y);
end;
esperar;
end;
begin{cuerpo principal}
inicializacion;
recuadro;
stars;
recuadro;
elipses;
recuadro;
lineas;
tramado;
readln;
closegraph;
end.