**[**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**]**