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!