home *** CD-ROM | disk | FTP | other *** search
- Program Demo01; { This program demonstrates one way to use pictures }
- { made by PIXED in your own programs }
- Uses
- Graph, Crt;
- Var
- Image, BackGroundPiece : Pointer;
- ImageX, ImageY,
- OldImageX, OldImageY,
- Speed : Integer;
- Ch : Char;
- RightSpeed, UpSpeed : ShortInt;
-
- Procedure GraphInit;
- Var
- GraphDriver, GraphMode : Integer;
- Begin {GraphInit}
- ClrScr;
- Write('Enter delay number: ');
- Readln(Speed);
- GraphDriver:= EGA;
- GraphMode := EGAHi;
- InitGraph(GraphDriver,GraphMode,''); { EGA 640*350*16 }
- End; {GraphInit}
-
- Procedure ImageInit;
- Var
- SaveFile : TEXT;
- XLenght, YLenght, I, J,
- PixelColor : Integer;
- Begin {ImageInit}
- Assign(SaveFile, 'Demo01.pix'); { Open picture file }
- Reset(SaveFile);
- Readln(SaveFile, XLenght); { The lenght of the horizontal side }
- Readln(SaveFile, YLenght); { The lenght of the vertical side }
- I:= 0;
- J:= 0;
- While not EOF(SaveFile) do { Paint the picture on the screen }
- Begin
- Readln(SaveFile, PixelColor); { Reads the color number }
- PutPixel(I, J, PixelColor);
- I:= I+1;
- If I= XLenght then
- Begin
- I:= 0;
- J:= J+1;
- End;
- End;
- GetMem(Image, ImageSize(0, 0, 23, 20));
- GetMem(BackGroundPiece, ImageSize(0, 0, 23, 20));
- GetImage(0, 0, 23, 20, Image^); { Reads the picture into memory }
- End; {ImageInit}
-
- Procedure MoveImage;
- Begin {MoveImage}
- ImageX:= 320;
- ImageY:= 150;
- OldImageX:= 320;
- OldImageY:= 150;
- RightSpeed:= 0;
- UpSpeed:= 0;
- SetFillStyle(1, 0);
- Bar(0, 0, 639, 349);
- SetTextStyle(1, 0, 2);
- OutTextXY(10, 10, 'Move the picture around with arrowkeys and exit with ESC');
- Repeat
- Repeat
- PutImage(OldImageX, OldImageY, BackGroundPiece^, NormalPut);
- GetImage(ImageX, ImageY, ImageX+23, ImageY+20, BackGroundPiece^); { Reads backgroundpiece into memory }
- PutImage(ImageX, ImageY, Image^, NormalPut); { Paints the picture on the screen }
- Delay(Speed);
- OldImageX:= ImageX;
- OldImageY:= ImageY;
- ImageY:= ImageY-UpSpeed;
- ImageX:= ImageX+RightSpeed;
- If ImageX< 0 then
- Begin
- ImageX:= 0;
- RightSpeed:= 0;
- End;
- If ImageX> 600 then
- Begin
- ImageX:= 600;
- RightSpeed:= 0;
- End;
- If ImageY< 0 then
- Begin
- ImageY:= 0;
- UpSpeed:= 0;
- End;
- If ImageY> 300 then
- Begin
- ImageY:= 300;
- UpSpeed:= 0;
- End;
- Until KeyPressed;
- Ch:= ReadKey;
- If Ch= Chr(72) then
- UpSpeed:= UpSpeed+1;
- If Ch= Chr(80) then
- UpSpeed:= UpSpeed-1;
- If Ch= Chr(75) then
- RightSpeed:= RightSpeed-1;
- If Ch= Chr(77) then
- RightSpeed:= RightSpeed+1;
- Until Ch= Chr(27);
- End; {MoveImage}
-
- Begin
- GraphInit; { Initalize graphic(EGA) }
- ImageInit; { Read the picture into memory }
- MoveImage; { Move the picture around on the screen }
- CloseGraph; { Close graph and restore text mode }
- End.