home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / pascal / library / dos / grafik / sprite / demo4.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1989-07-18  |  6.6 KB  |  184 lines

  1. {$R-}    {Bereichsprüfung aus}
  2. {$B+}    {vollständige Auswertung boolscher Ausdrücke}
  3. {$S+}    {Stackprüfung an}
  4. {$I+}    {I/O-Prüfung an}
  5. {$N-}    {kein numerischer Coprozessor}
  6. {$M 65500,16384,655360} {3.0-Standardvorgaben für Stack&Heap}
  7.  
  8.  
  9.  
  10.  
  11. program SpriteDemo4;                { Version 2.0,  December 10,1985 }
  12.                                     { Donald L. Pavia, Dept Chem WWU }
  13.  
  14. {----------------------------------------------------------------------------}
  15.  
  16. uses
  17.   Crt,
  18.   turbo3,
  19.   Graph3;
  20.  
  21. {$I Sprites.Lib}
  22. {----------------------------------------------------------------------------}
  23.  
  24. var   k,l : integer;
  25.  
  26. {----------------------------------------------------------------------------}
  27. procedure Introduction;
  28.  
  29. begin
  30.      TextColor (1);
  31.      gotoxy (5,4); write ('SPRITE DESIGNER');
  32.      TextColor (3);
  33.      gotoxy (10,6); write ('AND');
  34.      TextColor (1); write (' ANIMATION PACKAGE ');
  35.      TextColor (3); write ('DEMO');
  36.      gotoxy (1,23); write ('Donald Pavia, December 1985');
  37.  
  38.      gotoxy (1,21); write ('Action Scenes Continue Until a KeyPress');
  39.      gotoxy (29,17);
  40.  
  41.      TextColor (2); gotoxy (30,17); write ('Ready !!! ');
  42.      TextColor (3); read (kbd,Wait);
  43. {! 4. Kbd erfordert das Un^it Turbo3 - verwenden Sie ReadKey (im Unit Crt)}
  44.  
  45. end; { procedure Introduction; }
  46. {----------------------------------------------------------------------------}
  47. procedure SaveBackGroundScreen;              { draw background screen }
  48.  
  49. begin
  50.      FillChar (ColorBuffer,16383,0);
  51.      FillChar (WorkBuffer,16383,0);
  52.      FillChar (BackGroundBuffer,16383,0);
  53.  
  54.      for k := 1 to 24 do Draw (0,8*k,319,8*k,1);
  55.  
  56.      Draw (0,0,319,0,2); Draw (319,0,319,199,2);
  57.      Draw (319,199,0,199,2); Draw (0,199,0,0,2);
  58.  
  59.      TextColor (2);
  60.      gotoxy  (18,8); write ('TURBO');
  61.      gotoxy (16,18); write ('ANIMATION');
  62.      TextColor (3);
  63.      gotoxy (16,23); write ('Don Pavia');
  64.  
  65.      WorkBuffer := ColorBuffer;               { make a copy in workbuffer  }
  66.      BackGroundBuffer := ColorBuffer;         { store a copy of background }
  67.  
  68. end; { procedure BackGroundScreen }
  69. {----------------------------------------------------------------------------}
  70. procedure CheckRegistration;
  71.  
  72. begin
  73.      Draw (87,98,112,98,3);   Draw (112,98,112,119,3);     { check locating }
  74.      Draw (112,119,87,119,3); Draw (87,119,87,98,3);       { algorithms     }
  75.  
  76.      Draw (119,97,144,97,3);   Draw (144,97,144,118,3);
  77.      Draw (144,118,119,118,3); Draw (119,118,119,97,3);
  78.  
  79.      Draw (50,109,200,109,2);  Draw (100,60,100,140,2);
  80.      Draw (132,60,132,140,2);
  81.  
  82.      gotoxy (4,5); write ('Registration Check : ');
  83.      gotoxy (7,7); write ('Press Any Key to Continue ... ');
  84.  
  85.      read (Kbd,Wait);
  86. {! 5. Kbd e^rfordert das Unit Turbo3 - verwenden Sie ReadKey (im Unit Crt)}
  87.  
  88. end; { procedure CheckRegistration }
  89. {----------------------------------------------------------------------------}
  90.  
  91. BEGIN
  92.      clrscr;
  93.      GraphColorMode; GraphBackGround (1); Palette (0);
  94.      LoadTable ('DEMO1.TAB');
  95.      Introduction;
  96.  
  97. REPEAT
  98.      SaveBackGroundScreen;
  99.  
  100.     {---- Draw Diagonal Line of Whales -------------------------------------}
  101.  
  102.      Sprite := Table[14];    {Whale}          { assign sprite for display   }
  103.                                               { print sprites in workbuffer }
  104.      k := 24; l := 18;
  105.      repeat XorSpriteW (k,l); k := k + 20; l := l + 12; until k >= 300;
  106.  
  107.      gotoxy (2,12); write ('  Ready !!!            Press Any Key  ');
  108.      read (Kbd,Wait);
  109. {! 6. Kbd e^rfordert das Unit Turbo3 - verwenden Sie ReadKey (im Unit Crt)}
  110.      ColorBuffer := WorkBuffer;                        { display workbuffer }
  111.  
  112.      FillChar (WorkBuffer,16192,0);                    { erase workbuffer   }
  113.                                                        { to blue background }
  114.      Delay (3000);
  115.  
  116.     {---- Demonstrate XOR --------------------------------------------------}
  117.  
  118.      XorSpriteW (100,109);   XorSpriteW (132,108);       { draw two sprites }
  119.      ColorBuffer := WorkBuffer;                          { and display them }
  120.  
  121.      gotoxy (4,5); write ('Press Any Key to Xor Second Sprite ');
  122.      read (Kbd,Wait);
  123. {! 7. Kbd e^rfordert das Unit Turbo3 - verwenden Sie ReadKey (im Unit Crt)}
  124.  
  125.      XorSpriteW (132,108);                     { xor second one to erase it }
  126.      ColorBuffer := WorkBuffer;
  127.  
  128.      gotoxy (4,5); write ('Press Any Key to Redisplay It ');
  129.      read (Kbd,Wait);
  130. {! 8. Kbd e^rfordert das Unit Turbo3 - verwenden Sie ReadKey (im Unit Crt)}
  131.  
  132.      XorSpriteW (132,108);                                     { restore it }
  133.      ColorBuffer := WorkBuffer;
  134.  
  135.     {---- Check on Sprite Location Algorithms ------------------------------}
  136.  
  137.      Delay (1500);
  138.      CheckRegistration;
  139.  
  140.     {---- Begin Animation Loop ---------------------------------------------}
  141.  
  142.      FillChar (WorkBuffer,16192,0);                      { erase workbuffer }
  143.      gotoxy (2,20);
  144.      WorkBuffer := BackGroundBuffer;                   { restore background }
  145.  
  146.      REPEAT
  147.        k := 12; l := 20;
  148.  
  149.        repeat                                            { ANIMATION !! }
  150.  
  151.             SPRITE := Table[ 5];    XorSpriteW (k,20);         {  Duck1 }
  152.             SPRITE := Table[14];    XorSpriteW (12,l);         {  Whale }
  153.             SPRITE := Table[21];    XorSpriteW (k,l);          {   Boy2 }
  154.             SPRITE := Table[22];    XorSpriteW (312-k,20);     {   Boy3 }
  155.             SPRITE := Table[15];    XorSpriteW (312-k,80);     {   Bird }
  156.             SPRITE := Table[ 6];    XorSpriteW (110,l);        {  Duck2 }
  157.             SPRITE := Table[ 3];    XorSpriteW (k,120);        {   Dog2 }
  158.             SPRITE := Table[ 2];    XorSpriteW (210,210-l);    {   Dog1 }
  159.             SPRITE := Table[20];    XorSpriteW (160,100);      {   Boy1 }
  160.             SPRITE := Table[ 9];    XorSpriteW (312-k,150);    { Dwarf1 }
  161.             SPRITE := Table[17];    XorSpriteW (312-k,170);    { Dwarf2 }
  162.             SPRITE := Table[12];    XorSpriteW (k,60);         { Dragon }
  163.  
  164.             ColorBuffer := WorkBuffer; WorkBuffer := BackGroundBuffer;
  165.             k := k + 8;                l := l + l mod 7;
  166.  
  167.        until k >= 300;
  168.  
  169.      UNTIL KEYPRESSED;
  170.  
  171.     {-----------------------------------------------------------------------}
  172.  
  173.      gotoxy (10,10); write ('Repeat Again ? Y/N ?  ');
  174.      repeat
  175.           read (Kbd,Again);
  176. {! 9. Kbd erford^ert das Unit Turbo3 - verwenden Sie ReadKey (im Unit Crt)}
  177.      until UpCase(Again) in ['Y','N'];
  178.  
  179. UNTIL UpCase(Again) = 'N';
  180.  
  181.      gotoxy (1,23); TextMode (c80); clrscr;              { exit gracefully }
  182.  
  183. END.
  184.