SoloCodigo
Programación General => Pascal => Mensaje iniciado por: Enko en Lunes 2 de Febrero de 2004, 15:04
-
{ La funcion 'Car' fue hecha gracias a .B. y chujkero miembros de la }
{pag.¡Saludos :hola: ! }
{ 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.
-
:good: Good!.
Ahora, se me ocurre, podrias meterle por ahi un TextColor random a ver que tal.
Suerte, y a programar!.
Bernardo L. :comp:
-
:P Hola de Vuelta !
Le meti desde el principio el TextColor pero............. <_<
.... <_< para hacerlo mas censillito ........Uno nunca sabe
:comp: Tambien a quien le interesa puede agregar en la funcion de constantes la sig linea :
const
car = #176;
esto hara que escriba cuadrados.
¡ Oho al piojo , cambien le el nombre al la funcion" Car" el nombre a "Caracter"
o bien , borela completamente sino :blink: Manda un ERROR.
-
Eugenio, 'tas seguro?. Yo lo corri con el codigo COPIADO y PEGADO que tu escribistes, y me corrio bien.
-
aqui esta el mismo programa pero utilizando recursividad y TestColor.
[Cprogram Demo;
uses Crt;
const
Tiempo = 100; {Modifica segun la velocidad de tu ordenador !
En el mio anduvo BIEN.}
Car = #176;
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 Caro : char; { Saca al azar letras de la 'A' a 'Z'}
begin
Caro := Chr(Random(25)+65);
end;
procedure espiralado; { El begin principal}
begin
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 Exit; { 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 Exit;
Delay(Tiempo);
end;
while X > Xi do
begin
GotoXY(X,Yf);
Write(car);
X := X-1;
if KeyPressed then Exit;
Delay(Tiempo);
end;
while Y > Yi do
begin
GotoXY(Xi,Y);
Write(car);
Y := Y-1;
if KeyPressed then Exit;
Delay(Tiempo);
end;
Xi := Xi+1; { Parte necesaria para que continue la espiral}
Yi := Yi+1;
Xf := Xf-1;
Yf := Yf-1;
TextColor(Random(15)+1);
Control := Control+1; {Lleva el control de las repiticiones}
until Control = 13;
ClrScr;
InitTextMode;
Espiralado; { La parte recursiva}
end ;
begin
InitTextMode;
Espiralado;
end.
ODE]programa[/CODE]
-
Tengo un problemilla con la ejecución del código. Sólo me muestra caracteres al azar en una misma línea :(
Voy a investigar el código a fondo, a ver cuál puede ser el problema. Pero si me podéis ayudar, os lo agradecería ;)
-
TempWin
el tema tuyo supongo que la espiral sale fuera de la pantalla y no la podes ver
<_< Ejecutalo en modo de ventana completo.( Alt+Enter)
Te recomiendo que eyecutes en la linea de comandos de DOS el siguiente comando :
<_< Mode con Cols=80 Lines=25
Ej : C:>Mode con Cols=80 Lines=25
Cambia la resolucion de la ventna de dos a 80*40 hasta que otro programa lo cambie.
<_< Cambia el modo de texto : TextMode(C80) a alguno de los siguientes que tenga 80 columnas y 25 lineas:
BW40 0 40x25 B/W CGA
CO40 1 40x25 Color CGA
BW80 2 80x25 B/W CGA
CO80 3 80x25 Color CGA
Mono 7 80x25 B/W on MDA HGC
Font8x8 256 43-/50-line mode EGA/VGA
:comp: Probalo y decime si te sirvio de algo.
;) Suerte
-
Buenas!
EugenioEnko, he probado con todo lo que me has dicho. Lo de la pantalla completa no es, porque ya lo había probado. También cambié la resolución de la ventana desde MS-DOS. Lo del modo de texto es lo que me tiene preocupado. Porque determinados modos me apagan el monitor... :huh: Y los modos que funcionan me muestra los caracteres como te había mencionado en el otro post
-
TempWin :
Otra solucion no te puedo dar asi que le pido ¡AYUDA! a cualquiera que pueda resolver este problema.
Por si las dudas te dejo el codigo fuente para descargar.
Algunos modos de texto no son siempre compatibles.
Descargalo a ver que pasa. :whistling:
si no te llega a funcionar deja en esta discucion algunas caraqcteristicas de tu maquina,compilador , etc... asi tal vez con esto podes aydar a resolver tu problema.
-
Buenas!
Me descargué el zip con tu código, EugenioEnko.
Ahora sí me realiza la espiral :) , pero sólo me muestra el caracter 176 del código Ascii :( Me pueden ayudar?
PD: Uso el compilador Turbo Pascal 7, mi PC es un PIII a 450 MHz con Windows 98
-
Eso esta bien :rolleyes:
El programa que descargaste es otro , no saca letras al azar.
Si quieres que lo haga tendras que investigar como funciona y tratar de mezclar los el que te funciona y el otro .
Trata de hacerlo si no te sale por mi no hay problema te lo modifico pero me gustaria mas que por lo menos intentes tu hacerle alguna vuelta y contamesi no te ayudo con todo gusto.
No dudes en avisarme.
Suerte y a programar.