program DemoGrafico2;
{ -------------------------------------- }
{ KPDEMO2.p                              }
{                                        }
{ demo grafico                           }
{ PutPixel,LineRel,GetX,GetY,MoveTo      }
{ -------------------------------------- }
{ by Filippo Bosi                        }
{ Settembre 91 - VERSIONE KICKPASCAL     }
{ -------------------------------------- }

uses TPGrafica;

var
  i,Mx,My,Color: Word;

begin
  { * apri le librerie grafiche * }
  Gr_OpenLibs;

  { * schermo a bassa risoluzione * }
  { * con 6 piani di bit, cioe'   * }
  { * 2^6=64 colori --> Extra     * }
  { *                   HalfBrite * }
  InitGraph(GR_LORES,4);
  if GraphResult <> grOk then Halt(1);

  Mx :=GetMaxX;
  My :=GetMaxY;
  Color := GetMaxColor;
  Randomize;

  { * NOTA: nel ciclo della versione * }
  { * KickPascal del programma demo  * }
  { * viene utilizzato un for da 1 a * }
  { * 400 piuttosto che un repeat    * }
  { * until KeyPressed: tutto cio'   * }
  { * perche' la funzione KeyPressed * }
  { * di KickPascal e' messa a       * }
  { * disposizione dalla unit Crt su * }
  { * di una finestra sullo schermo  * }
  { * WorkBench. Vedremo in uno dei  * }
  { * prossimi articoli come poterla * }
  { * utilizzare                     * }

  for i:=1 to 400 do
    begin

    { * disegna un pixel colorato * }
    { * usando PutPixel           * }

    PutPixel(Random(GetMaxX),Random(GetMaxY),
             Random(Color));

    SetColor(Random(Color));

    { * traccia una linea con LineRel * }
    LineRel(Random(11)-3,Random(11)-3);

    { * ...un po' di ritardo * }
    Delay(2);

    { * se abbiamo passato il bordo * }
    { * dello schermo, ritorniamo   * }
    { * all'inizio                  * }
    if (GetX>Mx) then MoveTo(0,GetY);
    if (GetY>My) then MoveTo(GetX,0);

    end;


    { * attendi che venga premuto un * }
    { * tasto oppure un bottone del  * }
    { * mouse sullo schermo grafico  * }
    Gr_AttendiUnTasto;

    { * chiudi lo schermo grafico * }
    CloseGraph;

  { * chiudi le librerie * }
  Gr_CloseLibs;
end.



