home *** CD-ROM | disk | FTP | other *** search
- {$R-} {Bereichsprüfung aus}
- {$B+} {vollständige Auswertung boolscher Ausdrücke}
- {$S+} {Stackprüfung an}
- {$I+} {I/O-Prüfung an}
- {$N-} {kein numerischer Coprozessor}
- {$M 65500,16384,655360} {3.0-Standardvorgaben für Stack&Heap}
-
-
-
-
- program SpriteDemo4; { Version 2.0, December 10,1985 }
- { Donald L. Pavia, Dept Chem WWU }
-
- {----------------------------------------------------------------------------}
-
- uses
- Crt,
- turbo3,
- Graph3;
-
- {$I Sprites.Lib}
- {----------------------------------------------------------------------------}
-
- var k,l : integer;
-
- {----------------------------------------------------------------------------}
- procedure Introduction;
-
- begin
- TextColor (1);
- gotoxy (5,4); write ('SPRITE DESIGNER');
- TextColor (3);
- gotoxy (10,6); write ('AND');
- TextColor (1); write (' ANIMATION PACKAGE ');
- TextColor (3); write ('DEMO');
- gotoxy (1,23); write ('Donald Pavia, December 1985');
-
- gotoxy (1,21); write ('Action Scenes Continue Until a KeyPress');
- gotoxy (29,17);
-
- TextColor (2); gotoxy (30,17); write ('Ready !!! ');
- TextColor (3); read (kbd,Wait);
- {! 4. Kbd erfordert das Un^it Turbo3 - verwenden Sie ReadKey (im Unit Crt)}
-
- end; { procedure Introduction; }
- {----------------------------------------------------------------------------}
- procedure SaveBackGroundScreen; { draw background screen }
-
- begin
- FillChar (ColorBuffer,16383,0);
- FillChar (WorkBuffer,16383,0);
- FillChar (BackGroundBuffer,16383,0);
-
- for k := 1 to 24 do Draw (0,8*k,319,8*k,1);
-
- Draw (0,0,319,0,2); Draw (319,0,319,199,2);
- Draw (319,199,0,199,2); Draw (0,199,0,0,2);
-
- TextColor (2);
- gotoxy (18,8); write ('TURBO');
- gotoxy (16,18); write ('ANIMATION');
- TextColor (3);
- gotoxy (16,23); write ('Don Pavia');
-
- WorkBuffer := ColorBuffer; { make a copy in workbuffer }
- BackGroundBuffer := ColorBuffer; { store a copy of background }
-
- end; { procedure BackGroundScreen }
- {----------------------------------------------------------------------------}
- procedure CheckRegistration;
-
- begin
- Draw (87,98,112,98,3); Draw (112,98,112,119,3); { check locating }
- Draw (112,119,87,119,3); Draw (87,119,87,98,3); { algorithms }
-
- Draw (119,97,144,97,3); Draw (144,97,144,118,3);
- Draw (144,118,119,118,3); Draw (119,118,119,97,3);
-
- Draw (50,109,200,109,2); Draw (100,60,100,140,2);
- Draw (132,60,132,140,2);
-
- gotoxy (4,5); write ('Registration Check : ');
- gotoxy (7,7); write ('Press Any Key to Continue ... ');
-
- read (Kbd,Wait);
- {! 5. Kbd e^rfordert das Unit Turbo3 - verwenden Sie ReadKey (im Unit Crt)}
-
- end; { procedure CheckRegistration }
- {----------------------------------------------------------------------------}
-
- BEGIN
- clrscr;
- GraphColorMode; GraphBackGround (1); Palette (0);
- LoadTable ('DEMO1.TAB');
- Introduction;
-
- REPEAT
- SaveBackGroundScreen;
-
- {---- Draw Diagonal Line of Whales -------------------------------------}
-
- Sprite := Table[14]; {Whale} { assign sprite for display }
- { print sprites in workbuffer }
- k := 24; l := 18;
- repeat XorSpriteW (k,l); k := k + 20; l := l + 12; until k >= 300;
-
- gotoxy (2,12); write (' Ready !!! Press Any Key ');
- read (Kbd,Wait);
- {! 6. Kbd e^rfordert das Unit Turbo3 - verwenden Sie ReadKey (im Unit Crt)}
- ColorBuffer := WorkBuffer; { display workbuffer }
-
- FillChar (WorkBuffer,16192,0); { erase workbuffer }
- { to blue background }
- Delay (3000);
-
- {---- Demonstrate XOR --------------------------------------------------}
-
- XorSpriteW (100,109); XorSpriteW (132,108); { draw two sprites }
- ColorBuffer := WorkBuffer; { and display them }
-
- gotoxy (4,5); write ('Press Any Key to Xor Second Sprite ');
- read (Kbd,Wait);
- {! 7. Kbd e^rfordert das Unit Turbo3 - verwenden Sie ReadKey (im Unit Crt)}
-
- XorSpriteW (132,108); { xor second one to erase it }
- ColorBuffer := WorkBuffer;
-
- gotoxy (4,5); write ('Press Any Key to Redisplay It ');
- read (Kbd,Wait);
- {! 8. Kbd e^rfordert das Unit Turbo3 - verwenden Sie ReadKey (im Unit Crt)}
-
- XorSpriteW (132,108); { restore it }
- ColorBuffer := WorkBuffer;
-
- {---- Check on Sprite Location Algorithms ------------------------------}
-
- Delay (1500);
- CheckRegistration;
-
- {---- Begin Animation Loop ---------------------------------------------}
-
- FillChar (WorkBuffer,16192,0); { erase workbuffer }
- gotoxy (2,20);
- WorkBuffer := BackGroundBuffer; { restore background }
-
- REPEAT
- k := 12; l := 20;
-
- repeat { ANIMATION !! }
-
- SPRITE := Table[ 5]; XorSpriteW (k,20); { Duck1 }
- SPRITE := Table[14]; XorSpriteW (12,l); { Whale }
- SPRITE := Table[21]; XorSpriteW (k,l); { Boy2 }
- SPRITE := Table[22]; XorSpriteW (312-k,20); { Boy3 }
- SPRITE := Table[15]; XorSpriteW (312-k,80); { Bird }
- SPRITE := Table[ 6]; XorSpriteW (110,l); { Duck2 }
- SPRITE := Table[ 3]; XorSpriteW (k,120); { Dog2 }
- SPRITE := Table[ 2]; XorSpriteW (210,210-l); { Dog1 }
- SPRITE := Table[20]; XorSpriteW (160,100); { Boy1 }
- SPRITE := Table[ 9]; XorSpriteW (312-k,150); { Dwarf1 }
- SPRITE := Table[17]; XorSpriteW (312-k,170); { Dwarf2 }
- SPRITE := Table[12]; XorSpriteW (k,60); { Dragon }
-
- ColorBuffer := WorkBuffer; WorkBuffer := BackGroundBuffer;
- k := k + 8; l := l + l mod 7;
-
- until k >= 300;
-
- UNTIL KEYPRESSED;
-
- {-----------------------------------------------------------------------}
-
- gotoxy (10,10); write ('Repeat Again ? Y/N ? ');
- repeat
- read (Kbd,Again);
- {! 9. Kbd erford^ert das Unit Turbo3 - verwenden Sie ReadKey (im Unit Crt)}
- until UpCase(Again) in ['Y','N'];
-
- UNTIL UpCase(Again) = 'N';
-
- gotoxy (1,23); TextMode (c80); clrscr; { exit gracefully }
-
- END.