home *** CD-ROM | disk | FTP | other *** search
/ PC Interdit / pc-interdit.iso / graph / scrl_spt.pas < prev    next >
Pascal/Delphi Source File  |  1994-10-07  |  2KB  |  41 lines

  1. uses crt,Gif,ModeXLib;
  2. Var x,                   {offset courant dans la direction horizontale }
  3.     x_dir,               {direction de défilement dans le sens horizontal }
  4.     y,                   {offset courant dans la direction verticale }
  5.     y_dir:word;          {direction de défilement dans le sens vertical }
  6.     split_line:word;     {position courante de la ligne de fractionnement }
  7.     split_dir:word;  {direction de déplacement de la ligne de fractionnement }
  8. Begin
  9.   Init_ModeX;            {active le mode X }
  10.   double;                {sélectionne le mode 160 octets }
  11.   Screen_Off;            {éteint l'écran }
  12.   LoadGif_Pos('640400',160*50); {charge une grande image en position (0, 50) }
  13.   p13_2_ModeX(vram_pos,rest div 4);  {copie le reste en mémoire VGA }
  14.   LoadGif('boule');      {charge une petite image en position (0,0) }
  15.   p13_2_ModeX(0,160*50); {et la copie sur l'écran }
  16.   Screen_On;             {réactive l'écran }
  17.  
  18.   split_line:=150;       {met la séparation en ligne 150 }
  19.   split_dir:=1;          {déplace d'abord la ligne de fractionnement vers le bas }
  20.   x:=1;                  {x commence en colonne 1}
  21.   x_dir:=1;              {direction horizontale = 1 octet par itération }
  22.   y:=160;                {y commence en ligne 1}
  23.   y_dir:=160;            {direction verticale = 160 octets par itération }
  24.   Repeat
  25.     Inc(x,x_dir);        {défilement horizontal }
  26.     Inc(y,y_dir);        {défilement vertical }
  27.     Inc(Split_line,Split_dir);  {déplace la ligne de fractionnement }
  28.     WaitRetrace;         {attend le retour de balayage }
  29.     SetStart(50*160+y+x);{écrit le nouveau début d'écran dans le registre }
  30.                          {en sautant les 50 premières lignes }
  31.     Split(Split_line);   {fractionne l'écran }
  32.     if (x >= 80)         {bord vertical atteint -> changer de direction }
  33.     or (x <= 1) Then x_dir:=-x_dir;
  34.     if (y >= 200*160)    {bord horizontal atteint -> changer de direction }
  35.     or (y <= 160) Then y_dir:=-y_dir;
  36.     if (split_line >= 200)  {ligne de fractionnement touche le bord -> changer de direction }
  37.     or (split_line <= 150) then split_dir:=-split_dir
  38.   Until KeyPressed;      {tourne jusqu'à ce qu'on frappe une touche }
  39.   TextMode(3);
  40. End.
  41.