home *** CD-ROM | disk | FTP | other *** search
/ SMPD PC.1517: A86 Macro Assembler 3.22 / smpd_pc1517_a86_macro_asm.img / PIX.ZIP / DEMO01.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1994-03-08  |  3.3 KB  |  113 lines

  1. Program Demo01; { This program demonstrates one way to use pictures }
  2.                 { made by PIXED in your own programs                }
  3.   Uses
  4.     Graph, Crt;
  5.   Var
  6.     Image, BackGroundPiece      : Pointer;
  7.     ImageX, ImageY,
  8.     OldImageX, OldImageY,
  9.     Speed                       : Integer;
  10.     Ch                          : Char;
  11.     RightSpeed, UpSpeed         : ShortInt;
  12.  
  13.   Procedure GraphInit;
  14.     Var
  15.       GraphDriver, GraphMode : Integer;
  16.     Begin {GraphInit}
  17.       ClrScr;
  18.       Write('Enter delay number: ');
  19.       Readln(Speed);
  20.       GraphDriver:= EGA;
  21.       GraphMode  := EGAHi;
  22.       InitGraph(GraphDriver,GraphMode,''); { EGA 640*350*16 }
  23.     End; {GraphInit}
  24.  
  25.   Procedure ImageInit;
  26.   Var
  27.     SaveFile                    : TEXT;
  28.     XLenght, YLenght, I, J,
  29.     PixelColor                  : Integer;
  30.   Begin {ImageInit}
  31.     Assign(SaveFile, 'Demo01.pix');    { Open picture file }
  32.     Reset(SaveFile);
  33.     Readln(SaveFile, XLenght);        { The lenght of the horizontal side }
  34.     Readln(SaveFile, YLenght);        { The lenght of the vertical side }
  35.     I:= 0;
  36.     J:= 0;
  37.     While not EOF(SaveFile) do         { Paint the picture on the screen }
  38.     Begin
  39.       Readln(SaveFile, PixelColor);    { Reads the color number }
  40.       PutPixel(I, J, PixelColor);
  41.       I:= I+1;
  42.       If I= XLenght then
  43.       Begin
  44.         I:= 0;
  45.         J:= J+1;
  46.       End;
  47.     End;
  48.     GetMem(Image, ImageSize(0, 0, 23, 20));
  49.     GetMem(BackGroundPiece, ImageSize(0, 0, 23, 20));
  50.     GetImage(0, 0, 23, 20, Image^);     { Reads the picture into memory }
  51.   End; {ImageInit}
  52.  
  53.   Procedure MoveImage;
  54.   Begin {MoveImage}
  55.     ImageX:= 320;
  56.     ImageY:= 150;
  57.     OldImageX:= 320;
  58.     OldImageY:= 150;
  59.     RightSpeed:= 0;
  60.     UpSpeed:= 0;
  61.     SetFillStyle(1, 0);
  62.     Bar(0, 0, 639, 349);
  63.     SetTextStyle(1, 0, 2);
  64.     OutTextXY(10, 10, 'Move the picture around with arrowkeys and exit with ESC');
  65.     Repeat
  66.       Repeat
  67.         PutImage(OldImageX, OldImageY, BackGroundPiece^, NormalPut);
  68.         GetImage(ImageX, ImageY, ImageX+23, ImageY+20, BackGroundPiece^); { Reads backgroundpiece into memory }
  69.         PutImage(ImageX, ImageY, Image^, NormalPut); { Paints the picture on the screen }
  70.         Delay(Speed);
  71.         OldImageX:= ImageX;
  72.         OldImageY:= ImageY;
  73.         ImageY:= ImageY-UpSpeed;
  74.         ImageX:= ImageX+RightSpeed;
  75.         If ImageX< 0 then
  76.         Begin
  77.           ImageX:= 0;
  78.           RightSpeed:= 0;
  79.         End;
  80.         If ImageX> 600 then
  81.         Begin
  82.           ImageX:= 600;
  83.           RightSpeed:= 0;
  84.         End;
  85.         If ImageY< 0 then
  86.         Begin
  87.           ImageY:= 0;
  88.           UpSpeed:= 0;
  89.         End;
  90.         If ImageY> 300 then
  91.         Begin
  92.           ImageY:= 300;
  93.           UpSpeed:= 0;
  94.         End;
  95.       Until KeyPressed;
  96.       Ch:= ReadKey;
  97.       If Ch= Chr(72) then
  98.         UpSpeed:= UpSpeed+1;
  99.       If Ch= Chr(80) then
  100.         UpSpeed:= UpSpeed-1;
  101.       If Ch= Chr(75) then
  102.         RightSpeed:= RightSpeed-1;
  103.       If Ch= Chr(77) then
  104.         RightSpeed:= RightSpeed+1;
  105.     Until Ch= Chr(27);
  106.   End; {MoveImage}
  107.  
  108.   Begin
  109.     GraphInit;  { Initalize graphic(EGA)                }
  110.     ImageInit;  { Read the picture into memory          }
  111.     MoveImage;  { Move the picture around on the screen }
  112.     CloseGraph; { Close graph and restore text mode     }
  113.   End.