{ La funcion 'Car' fue hecha gracias a .B. y chujkero miembros de la }
{pag.¡Saludos
! }
{ El programa llena la pantalla con letras al azar de 'A' a 'Z' sigiuendo una espiral}
program Espiral;
uses Crt;
const
Tiempo = 1000; {Modifica segun la velocidad de tu ordenador !
En el mio anduvo BIEN.}
var
Control : integer; { Lleva el control de las repeticiones }
X,Y : byte; { Variables de tipo contador }
Xi,Xf : byte;
Yi,Yf : byte;
procedure InitTextMode; {Inicia todas las variabes con sus valores}
begin
Randomize;
TextMode(C80); { Inicia modo CGA 80*25 ( casi indespensable en mi win XP)}
Window(1,1,80,25);
TextBackground(0);
Textcolor(10);
ClrScr;
X := 1;
Y := 1;
Xf := 79;
Yf := 24;
Xi := 1;
Yi := 1;
Control := 1;
end;
function Car : char; { Saca al azar letras de la 'A' a 'Z'}
begin
Car := Chr(Random(25)+65);
end;
begin { El begin principal}
InittextMode;
repeat
while X < Xf do { Aqui se comienza a dibujar la espiral}
begin
GotoXY(X+1,Yi);
Write(car);
X := X+1;
if KeyPressed then Break; { Por si se presiona una tecla para el Bucle}
Delay(Tiempo);{ Aqui es donde se hace mas lento el movimiento}
end;
while Y < Yf do
begin
Y := Y+1;
GotoXY(Xf,Y);
Write(car);
if KeyPressed then Break;
Delay(Tiempo);
end;
while X > Xi do
begin
GotoXY(X,Yf);
Write(car);
X := X-1;
if KeyPressed then Break;
Delay(Tiempo);
end;
while Y > Yi do
begin
GotoXY(Xi,Y);
Write(car);
Y := Y-1;
if KeyPressed then Break;
Delay(Tiempo);
end;
Xi := Xi+1; { Parte necesaria para que continue la espiral}
Yi := Yi+1;
Xf := Xf-1;
Yf := Yf-1;
Control := Control+1; {Lleva el control de las repiticiones}
until (KeyPressed) or (Control = 13); { Me parece que el
KeyPressed esta demas pero ...}
ReadLn;
end.