home *** CD-ROM | disk | FTP | other *** search
/ Collection of Hack-Phreak Scene Programs / cleanhpvac.zip / cleanhpvac / SPRITES.ZIP / SPRDEMO.PAS < prev    next >
Pascal/Delphi Source File  |  1991-04-15  |  2KB  |  92 lines

  1. program SpritesTest;
  2. uses
  3.   Sprites, Crt;
  4.  
  5. procedure Init;
  6. begin
  7.   SetMode ($13);
  8.   Randomize;
  9. end;
  10.  
  11. procedure LoadSpriteData;
  12. const
  13.   Sx = 30;
  14. type
  15.   SpriteDataType = record
  16.                      FileName : string [40];
  17.                      x, y,
  18.                      w, h : integer;
  19.                    end;
  20. const
  21.   SpriteData : array [1..7] of SpriteDataType =
  22.                ((FileName:'S2320R.CEL'; x:Sx; y:50; w:23; h: 20),
  23.                 (FileName:'P2320.CEL'; x:Sx+30; y:50; w:23; h: 20),
  24.                 (FileName:'R2320.CEL'; x:Sx+60; y:50; w:23; h: 20),
  25.                 (FileName:'I620.CEL'; x:Sx+90; y:50; w:6; h: 20),
  26.                 (FileName:'T2420.CEL'; x:Sx+105; y:50; w:24; h: 20),
  27.                 (FileName:'E2320.CEL'; x:Sx+135; y:50; w:23; h: 20),
  28.                 (FileName:'S2320G.CEL'; x:Sx+165; y:50; w:23; h: 20));
  29. var
  30.   L : byte;
  31. begin
  32.   for L := 1 to 7 do begin
  33.     with SpriteData [L] do begin
  34.       LoadCEL (FileName, addr (Sprite[L].SpriteData));
  35.       Sprite [L].w := w; Sprite [L].h := h;
  36.       Sprite [L].x := x; Sprite [L].y := y;
  37.       Sprite [L].Active := TRUE;
  38.     end;
  39.   end;
  40.   for L := 8 to 14 do begin
  41.     with SpriteData [L-7] do begin
  42.       LoadCEL (FileName, addr (Sprite[L].SpriteData));
  43.       Sprite [L].w := w; Sprite [L].h := h;
  44.       Sprite [L].x := x + 70; Sprite [L].y := y + 90;
  45.       Sprite [L].Active := TRUE;
  46.     end;
  47.   end;
  48.   for L := 1 to 14 do begin
  49.     with Sprite [L] do begin
  50.       ix := random (11) - 5;
  51.       iy := random (11) - 5;
  52.     end;
  53.   end;
  54. end;
  55.  
  56. procedure UpdateSpriteData;
  57. var
  58.   L : byte;
  59. begin
  60.   for L := 1 to 14 do begin
  61.     with Sprite [L] do begin
  62.       x := x + ix; y := y + iy;
  63.       if (x<=0) or (x >= 320-25) then begin
  64.         ix := -ix;
  65.         x := x + ix;
  66.       end;
  67.       if (y<=0) or (y >= 200-25) then begin
  68.         iy := -iy;
  69.         y := y + iy;
  70.       end;
  71.     end;
  72.   end;
  73. end;
  74.  
  75. var
  76.   Ch : char;
  77. begin
  78.   Init;
  79.   LoadSpriteData;
  80.   LoadCOL ('SPRDEMO.COL');
  81.   LoadCEL ('SPRDEMO.CEL', Virtual_Screen);
  82.   DrawSprites;
  83.   ShowVirtualScreen;
  84.   delay (2000);
  85.   repeat
  86.     DrawSprites;
  87.     ShowVirtualScreen;
  88.     UpdateSpriteData;
  89.   until keypressed;
  90.   Ch := ReadKey;
  91.   SetMode (3);
  92. end.