• Jueves 28 de Marzo de 2024, 11:31

Autor Tema:  Letras En Espiral  (Leído 4197 veces)

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Letras En Espiral
« en: Lunes 2 de Febrero de 2004, 15:04 »
0
{ 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.

_.B._

  • Miembro activo
  • **
  • Mensajes: 88
    • Ver Perfil
Re: Letras En Espiral
« Respuesta #1 en: Miércoles 4 de Febrero de 2004, 18:19 »
0
:good: Good!.
Ahora, se me ocurre, podrias meterle por ahi un TextColor random a ver que tal.
Suerte, y a programar!.

Bernardo L. :comp:
¡Olmo, dame peras!
www.BernardoLG.net

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Letras En Espiral
« Respuesta #2 en: Miércoles 4 de Febrero de 2004, 20:15 »
0
:P  Hola de Vuelta !
Le meti desde el principio el TextColor pero.............  &lt;_&lt;
.... &lt;_&lt; 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.

_.B._

  • Miembro activo
  • **
  • Mensajes: 88
    • Ver Perfil
Re: Letras En Espiral
« Respuesta #3 en: Miércoles 4 de Febrero de 2004, 20:33 »
0
Eugenio, 'tas seguro?. Yo lo corri con el codigo COPIADO y PEGADO que tu escribistes, y me corrio bien.
¡Olmo, dame peras!
www.BernardoLG.net

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Letras En Espiral
« Respuesta #4 en: Miércoles 4 de Febrero de 2004, 22:52 »
0
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]

TempWin

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
    • http://jab.blogia.com
Re: Letras En Espiral
« Respuesta #5 en: Jueves 5 de Febrero de 2004, 23:16 »
0
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  ;)
http]

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Letras En Espiral
« Respuesta #6 en: Viernes 6 de Febrero de 2004, 13:47 »
0
TempWin
el tema tuyo supongo que la espiral sale fuera de la pantalla y no la podes ver
   
 &lt;_&lt; Ejecutalo en modo de ventana completo.( Alt+Enter)

Te recomiendo que eyecutes en la linea de comandos de DOS el siguiente  comando :
   &lt;_&lt;   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.
   
&lt;_&lt; 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

TempWin

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
    • http://jab.blogia.com
Re: Letras En Espiral
« Respuesta #7 en: Sábado 7 de Febrero de 2004, 01:10 »
0
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
http]

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Letras En Espiral
« Respuesta #8 en: Sábado 7 de Febrero de 2004, 14:05 »
0
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.
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

TempWin

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
    • http://jab.blogia.com
Re: Letras En Espiral
« Respuesta #9 en: Lunes 9 de Febrero de 2004, 20:24 »
0
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
http]

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Letras En Espiral
« Respuesta #10 en: Martes 10 de Febrero de 2004, 00:30 »
0
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.