{--------------------------}
{ Ejemplo en Pascal: }
{ }
{ Funciones gráficas }
{ más frecuentes }
{ DEMOGRAF.PAS }
{ }
{ Este fuente procede de }
{ CUPAS, curso de Pascal }
{ por Nacho Cabanes }
{ }
{ Comprobado con: }
{ - Turbo Pascal 7.0 }
{--------------------------}
program DemoGraf;
uses graph;
var
driver, modo: integer;
x, y: integer;
i: integer;
begin
driver := detect;
initgraph(driver, modo, '');
randomize; { Comienzo a generar números al azar }
line(0,0,639,479); { Línea fija }
for i := 1 to 200 do { 200 puntos }
putpixel(random(640), random(480), random(15)+1);
for i := 1 to 50 do { 50 círculos }
begin
setcolor(random(15)+1);
circle(random(640), random(480), random(50));
end;
for i := 1 to 30 do { 30 rectángulos }
begin
x := random(500);
y := random(400);
setcolor(random(15)+1);
rectangle(x, y, x+random(140), y+random(80));
end;
for i := 1 to 15 do { 15 rectángulos }
begin
x := random(500);
y := random(400);
setcolor(random(15)+1);
setfillstyle(random(11), random(15)+1);
bar(x, y, x+random(140), y+random(80));
end;
{ Recuadro con texto en su interior }
setfillstyle(SolidFill, LightBlue);
SetColor(Yellow);
Bar3D(93,93,440,112, 5, true);
setcolor(Red);
OutTextXY(99,99,'Prueba del modo gráfico desde Turbo Pascal');
setcolor(White);
OutTextXY(100,100,'Prueba del modo gráfico desde Turbo Pascal');
readln;
closegraph;
end.
Espero que todo se entienda por si solo. Los principales cambios (además del hecho de emplear algunas órdenes nuevas para nosotros) son los siguientes:
Un comentario obligado: Nuevamente, este programa funciona sin cambios en TMT y FPK/Free Pascal, pero hay un posible peligro: estamos detectando la tarjeta gráfica que existe en nuestro ordenador y dejando que el propio compilador elija el modo gráfico dentro de ese tipo de tarjeta. Esto es peligroso con estos compiladores, que reconocen tarjetas más modernas y permiten acceder a los modos VESA, con más puntos y/o más colores. Así, este programa probado con mi ordenador y con TMT cambia a un modo que no es el de 640x480 puntos con 16 colores que usaría Turbo Pascal, sino a otro con mayor número de colores, mientras que FPK deja mi pantalla “en negro”, posiblemente porque esté cambiando a un modo de pantalla de mi alta resolución, que sí permita mi tarjeta gráfica pero no mi pantalla. Con Free Pascal sí funciona correctamente, aunque reserva un tamaño de pantalla mayor de 640x480. Su apariencia es ésta:
Podemos evitar este tipo de posibles problemas no dejando que el compilador detecte cual es nuestra tarjeta gráfica, sino obligando nosotros, como hicimos en el ejemplo anterior, cambiando esta línea
driver := detect;
por estas dos
Driver := Vga; { Para pantalla VGA }
Modo := VgaHi; { Modo 640x480, 16 colores }