[Back to TUTOR SWAG index] [Back to Main SWAG index] [Original]

                           Turbo Pascal for DOS Tutorial
                               by Glenn Grotzinger
                                 Part 22: Finale
                     copyright(c) 1995-96 by Glenn Grotzinger

    Here is a solution of the graphics problem from last time...

    program part21; uses graph, bgivideo, crt;
                       { must be in this order }
    var
      graphicsdriver, graphicsmode: integer;
      x1, x2, y1, y2: integer;

    procedure errormessage(driver: string);
      begin
        writeln('There was an error: ', grapherrormsg(graphresult), driver);
        halt(1);
      end;

    begin
      randomize;

      if (registerbgidriver(@attdriver) < 0) then
        errormessage('ATT');
      if (registerbgidriver(@cgadriver) < 0) then
        errormessage('CGA');
      if (registerbgidriver(@egavgadriver) < 0) then
        errormessage('EGA/VGA');
      if (registerbgidriver(@hercdriver) < 0) then
        errormessage('Herc');
      if (registerbgidriver(@pc3270driver) < 0) then
        errormessage('PC 3270');
      detectgraph(graphicsdriver, graphicsmode);
      graphicsdriver := Detect;
      initgraph(graphicsdriver, graphicsmode, '');
      if GraphResult <> grOk then
        begin
          writeln('Video error.');
          halt(1);
        end;

      repeat
        x1 := getmaxx div 2 - 15; x2 := getmaxx div 2 + 15;
        y1 := getmaxy div 2 - 15; y2 := getmaxy div 2 + 15;
        { center of screen is always (getmaxx div 2, getmaxy div 2) --
          look at geometric properties of a rectangle }
        repeat
          setcolor(random(getmaxcolor));
          rectangle(x1, y1, x2, y2);
          inc(x2, 1);inc(y2, 1);dec(x1, 1); dec(y1, 1);
          delay(50);
        until (keypressed) or (x1 <= 0);
      until keypressed;

      readln;
      closegraph;

    end.

    As you can see in this example, it's always good to have a good background
    in analytical geometry to be able to do graphics well.  It is good for you
    to find a mathematical reference and learn a few concepts of it, if you
    do not already know something about it.

    Finale
    ======
    Ultimately, it was decided that object-oriented programming will not be
    covered at this time for the tutorial.  I apologize.

    Note
    ====
    Be sure to read license.txt!

[Back to TUTOR SWAG index] [Back to Main SWAG index] [Original]