home *** CD-ROM | disk | FTP | other *** search
/ Collection of Hack-Phreak Scene Programs / cleanhpvac.zip / cleanhpvac / ANIVGA.ZIP / EXAMPLE4.PAS < prev    next >
Pascal/Delphi Source File  |  1992-08-16  |  2KB  |  58 lines

  1. PROGRAM Example4;
  2.  
  3. {Demonstrates use of sprite cycles & SetCycleTime() to control animation speed}
  4. {Besides that, usage of a sprite library is shown}
  5.  
  6. USES ANIVGA,CRT;
  7. CONST LoadHantel=1;
  8.       SpriteName='HANTEL.LIB'; {Path and name of the sprite to load}
  9.       flip:BOOLEAN=FALSE;      {Flag for animation speed}
  10.       ch:Char=#0;
  11. VAR PicsLoaded:BYTE;
  12.     i,n:WORD;
  13.  
  14. BEGIN
  15.  PicsLoaded:=loadSprite(SpriteName,LoadHantel); {load sprites}
  16.  IF Error<>Err_None
  17.   THEN BEGIN
  18.         CloseRoutines;
  19.         WRITELN('Couldn''t access file '+SpriteName+' : '+GetErrorMessage);
  20.         halt(1)
  21.        END;
  22.  SetSpriteCycle(LoadHantel,PicsLoaded); {cycle through all images endlessly}
  23.  
  24.  InitGraph;
  25.  
  26.  FillBackground(76);
  27.  
  28.  FOR i:=1 TO 100 DO  {choose app. 100 sprites}
  29.   BEGIN
  30.    n:=RANDOM(NMAX)+1;
  31.    SpriteN[n]:=LoadHantel+RANDOM(PicsLoaded);  {enter cycle somewhere}
  32.    SpriteX[n]:=RANDOM(XMAX+1);  {use a random coordinates}
  33.    SpriteY[n]:=RANDOM(YMAX+1)
  34.   END;
  35.  
  36.  REPEAT
  37.   IF KeyPressed
  38.    THEN BEGIN
  39.          ch:=UpCase(ReadKey);
  40.          CASE ch OF
  41.           'E':dec(StartVirtualY,10);  {change position of whole scene with}
  42.           'S':dec(StartVirtualX,10);  {E,S,D,X}
  43.           'D':inc(StartVirtualX,10);
  44.           'X':inc(StartVirtualY,10);
  45.           ' ':BEGIN   {toggle speed between maximum and 200ms per frame}
  46.                flip:=NOT flip;
  47.                IF flip
  48.                 THEN SetCycleTime(200)
  49.                 ELSE SetCycleTime(0)
  50.               END;
  51.          END;
  52.         END;
  53.   Animate;
  54.  UNTIL (ch='Q') OR (ch=#27);
  55.  
  56.  CloseRoutines;
  57. END.
  58.