Trocha grafiky

Naše dosavadní programování se odehrávalo v textovém režimu. Měli jsme k dispozici písmenka, řádky, sloupce a trochu těch tabulkových znaků. Teď tedy nastává chvíle, kdy si přibereme navíc čáry, čtverce, kružnice, elipsy a podobné elementy, souhrnně nazývané obchodní nebo vektorová grafika.

Pro práci s grafikou jsou potřeba následující věci:

Třetí podmínka vyplývá z toho, že v souboru EGAVGA.BGI jsou naprogramovány všechny grafické funkce a program si je odsud „bere”. Tento soubor by měl být vždy v adresáři s programem.

Příkazů pro práci s grafikou je mnoho. Proto je uvedu jen velmi stručně, spoléhaje na vrozenou inteligenci a zvídavost každého programátora.

PutPixel( X, Y, Barva );Nakreslí bod.
GetPixel( X, Y, Barva );Vrátí barvu bodu na pozici [X, Y]
SetColor( Barva );Nastaví barvu pro kreslení
Line( X1, Y1, X2, Y2 );Čára z [X1,Y1] do [X2,Y2]
MoveTo( X, Y );Přesun na pozici [X, Y]
LineTo( X, Y );Čára do bodu [X, Y]
LineRel( X, Y );Čára o [X, Y] bodů dál
MoveRel( X, Y );Posun o [X, Y] bodů dál
GetX;Vrátí polohu na ose X
GetY;Vrátí polohu na ose Y
OutText( Text );Vypíše na obrazovku text (string!)
OutTextXY( X, Y, Text );Vypíše na obrazovku text (string!)
Bar( X1, Y1, X2, Y2 );Obdélník z [X1,Y1] do [X2,Y2]
Circle( X, Y, Poloměr );Kružnice
SetFillStyle(Vzorek, Barva);Vzorek pro výplně
ClearDevice;Smaže obrazovku

Samozřejmě, že příkazů je mnohem, mnohem víc.

Příklad:

Opět jeden velmi jednoduchý příklad (a jeden úkol) — nakreslit mnoho barevných domečků [] na náhodných pozicích.

Program Domecek;
{ Nakreslí domečky v různých barvách }
 Uses
  CRT, Graph;
 Var
  gm, gd: Integer;
  i     : Integer;
 Procedure Domek( Vel, Barva: Integer );
  Begin
   SetColor( Barva );
   LineRel(      0,-10*Vel );
   LineRel( 10*Vel, 10*Vel );
   LineRel(-10*Vel,      0 );
   LineRel( 10*Vel,-10*Vel );
   LineRel(-10*Vel,      0 );
   LineRel(  5*Vel, -5*Vel );
   LineRel(  5*Vel,  5*Vel );
   LineRel(      0, 10*Vel );
   MoveRel(-10*Vel,-10*Vel ); { Návrat na začátek kreslení }
  End;
 Begin
  DetectGraph( gd, gm );          { Příprava grafiky }
  InitGraph( gd, gm, '' );        { Nastartuje grafický režim }
  SetColor( 11 );
  OutTextXY( (GetMaxX div 2)-20, 10, 'Domky' );
  Line((GetMaxX div 2)-20,20,(GetMaxX div 2)+20, 20);
  Randomize;	                { Rozházet generátor náh. čísel }
  For i:=1 to 100 do Begin
   MoveTo(Random(GetMaxX-50),100+Random(GetMaxY-100));
                                  { Přesun "kamsi doprostředka" }
   Domek( 3, Random( 15 )+1 );    { Náhodně barevný domeček }
  end;
  ReadLn;                         { Čekání na Enter }
  CloseGraph;                     { Smaže obrazovku a vypne grafiku }
 End.

A ten úkol? Nakreslit domečky s pomocí příkazu Bar.