• Domingo 22 de Diciembre de 2024, 12:55

Autor Tema:  Pequeño Ejemplo  (Leído 3123 veces)

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Pequeño Ejemplo
« en: Jueves 5 de Febrero de 2004, 00:55 »
0
Es uno de los primero programas que hice en la unidad grafica de Turbo Pascal

Código: Text
  1. program demo;
  2. uses
  3.     crt,graph,dos;
  4. const
  5.      Xmax=640;
  6.      Ymax=480;
  7.  
  8. procedure inicializacion;
  9. var
  10.    Gd, Gm: Integer;
  11. begin
  12.      Gd := Detect;
  13.      InitGraph(Gd, Gm, '');
  14.      if GraphResult <> grOk then
  15.      Halt(1);
  16.      randomize;
  17. end;
  18.  
  19. procedure esperar;
  20. var
  21. tecleado:char;
  22. const esc=#27;
  23. begin
  24.      repeat until keypressed;
  25.      tecleado:=readkey;
  26.      if tecleado = #0 then tecleado:=readkey;
  27.      if tecleado = esc then halt(0)
  28.      else cleardevice;
  29. end;
  30.  
  31. procedure recuadro;
  32. var
  33.    ViewPort : ViewPortType;
  34. begin
  35.      cleardevice;
  36.      setcolor(white);
  37.      SetLineStyle(solidln, 0, NormWidth);
  38.      GetViewSettings(ViewPort);
  39.      with ViewPort do
  40.      Rectangle(0, 0, x2-x1, y2-y1)
  41. end;
  42.  
  43. procedure stars;
  44. begin
  45.  
  46.      repeat
  47.      setbkcolor(0);
  48.      putpixel(random(getmaxX-5) , random(getmaxY-5) , (white))
  49.      until keypressed;
  50.      esperar;
  51. end;
  52.  
  53. procedure lineas;
  54. begin
  55.      repeat
  56.      setbkcolor(0);
  57.      setcolor(random(getmaxcolor));
  58.      line((getmaxX div 2) ,( getmaxY div 2) ,random(getmaxX-5) , random(getmaxY-5));
  59.      until keypressed;
  60.      delay(1);
  61.      esperar;
  62. end;
  63. procedure elipses;
  64. begin
  65.  
  66.     repeat
  67.     setcolor(random(100)); ellipse(random(getmaxX-50),random(getmaxY-50),
  68. random(360),random(360),random(50),random(50));
  69.     until keypressed;
  70.     delay(100);
  71.     esperar;
  72. end;
  73. procedure tramado;
  74. var x,y:word;
  75. begin
  76.     y:=1;
  77.     x:=1;
  78.     while y<480 do
  79.     while x<640 do
  80.      begin
  81.       y:=y+20;
  82.       x:=x+20;
  83.       setcolor(lightblue);
  84.       line(0,y,x,480);
  85.       line(x,0,640,y);
  86.     end;
  87.   esperar;
  88.   end;
  89. begin{cuerpo principal}
  90.  inicializacion;
  91.  recuadro;
  92.  stars;
  93.  recuadro;
  94.  elipses;
  95.  recuadro;
  96.  lineas;
  97.  tramado;
  98.  readln;
  99.  closegraph;
  100.  end.
  101.  
espero que a alguien le sirva como ej.
La manera en que esta escrito es muy pobre ( eran mis comienzos no es para tanto che <_< ) Ahora mejore :P
Necesitaran la Graph.tpu

TempWin

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
    • http://jab.blogia.com
Re: Pequeño Ejemplo
« Respuesta #1 en: Jueves 5 de Febrero de 2004, 23:03 »
0
Gracias EugenioEnko. Es un ejemplo muy ilustrativo  ;)

Sólo quería comentar una cosilla (para los que comienzan, como yo  :D ):
En la parte del código donde se inicia el modo gráfico [ InitGraph(Gd, Gm, ''); ] hay que decir que entre las comillas debe ir el directorio en el que tenemos los archivos *.bgi. Por ejemplo, si nuestro directorio de Turbo Pascal es TP (en la raíz del disco duro) y dentro la carpeta que contiene los archivos que buscamos es BGI:

Código: Text
  1.  
  2. InitGraph(Gd, Gm, 'C:\tp\bgi\');
  3.  
  4.  
http]

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Pequeño Ejemplo
« Respuesta #2 en: Viernes 6 de Febrero de 2004, 13:56 »
0
:P Temp Win
 Si no pones el directorio de estos archivos el Tp toma en cuenta que esta en el DIRECTORIO ACTUAL.
Si lo vas a ejecutar en otra maquina simplemente coloca en el mismo directorio que el programa el fichero que necesites .
  En mi caso es EgaVga.bgi
 Si pones el directorio ( ej C:\TP\Bgi ) y lo ejecutas en otra maquina en este directorio tendra que estar este archivo sino el modo grafico no se inicia.

 :rolleyes: Segun mi experiencia te recomiendo que no pongas nada y  ubiques en el directorio actual( donde esta El programa a ejecutar. si lo ejecutas desde el Tp
colocalo en el directorio del mismo)

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Pequeño Ejemplo
« Respuesta #3 en: Viernes 6 de Febrero de 2004, 14:52 »
0
:huh: ....me olvidaba , lo que tenes que cambiar de directorio son los ficheros *.bgi para iniciar modo grafico y *.chr para las distintas fuentes  por supuesto solo los que utilices.

En mi caso EgaVga.bgi y ningun otro mas .( lo ubique en el directorio del Turbo.exe). asi puedo hacer :
                                           InitGraph(Gd, Gm, '');

y si lo ejecuto en otra maquina , yo llevo el programa con la EgaVga.bgi en el mismo directorio.

 :comp: A programar ?

TempWin

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
    • http://jab.blogia.com
Re: Pequeño Ejemplo
« Respuesta #4 en: Sábado 7 de Febrero de 2004, 00:52 »
0
Disculpen mi ignorancia en el post...  :unsure:

Ahora ya sé un poquito más  :)
http]

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Pequeño Ejemplo
« Respuesta #5 en: Sábado 7 de Febrero de 2004, 14:21 »
0
:P  No es para tanto yo estoy desde hace un año con pascal y de este modo fui aprendiendo experiencias de otros ( me lei 7 libros ;) ... pero...  sin  experiencias de otros no es lo mismo). Asi que aquel que este leyendo este mensaje ...
Por favor comparta sus conocimientos asi otros puedan aprender un poquito mas facil y rapido.
      Yo por ejemplo estoy en secundaria tecnica en el curso de quimica y no  puedo consultar a nadie mas que no sean los que participen de estas discuciones.
No creo que sea el unico con mi posicion asi que A COMPARTIR B)

DriverOp

  • Miembro MUY activo
  • ***
  • Mensajes: 201
    • Ver Perfil
Re: Pequeño Ejemplo
« Respuesta #6 en: Lunes 9 de Febrero de 2004, 04:19 »
0
Pues yo hace 15 años que programo en Pascal  :huh:
Y con gusto ayudaré a quién me lo pregunte  ;)