home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The World of Computer Software
/
World_Of_Computer_Software-02-385-Vol-1of3.iso
/
w
/
wgt3_ex.zip
/
WGT22.C
< prev
next >
Wrap
C/C++ Source or Header
|
1992-09-08
|
2KB
|
86 lines
// This is a small program 'template' to help you get started
// with the sprites library.
/* WORDUP Graphics Toolkit Version 3.0
Demonstration program 22
Sprite program template.
*/
#include <stdio.h>
#include <dos.h>
#include <conio.h>
#include <stdlib.h>
#include <alloc.h>
#include <wgt.h>
#include <spr.h>
color palette[256]; // the palette
block sprites[201]; // all the sprites
int quit; // if quit !=0, program quits
void looper(void); // a routine which controls the sprites
void main(void)
{
vga256();
wloadsprites(&palette,"invader.spr",sprites); // load them
initspr(); // initialize them
spon=10; // number of sprites on
spriteon(1,160,100,1); // turn on any sprites
spriteon(2,10,100,3); // you need
// Spriteon has the following format:
// Sprite number, x coord, y coord, sprite number in array of sprites
// Therefore sprite #1 would be displayed at 160,100 with sprite 1 in the array
movex(2,"(1,300,0)(-1,300,0)R"); // set up any movement
movexon(2); // or animation needed
// This move will go left 1, for 300 times, and right 1 for 300 times,
// and repeat
animate(2,"(3,50)(4,50)(5,50)(4,50)R");
animon(2);
// This animation will animate sprite 2 through a sequence of sprites
// in the sprite array and keep repeating.
wsetscreen(spritescreen);
do {
looper();
} while (!quit);
spriteoff(1); // turn off sprites
spriteoff(2);
// To be safe, turn off all sprites before ending program.
// This will free any memory used from them.
wfreesprites(sprites); // free memory
wfreeblock(spritescreen);
wcls(0);
textmode(C80);
}
void looper(void)
{
erasespr(); // clear the sprites
mread();
s[1].x=mx; // any direct sprite movements must be placed
s[1].y=my; // between erasespr and drawspr
// notice how sprite #2 moves and animates on its own now!
// You don't need to change anything to make it move!
drawspr(); // draw them back on
if (kbhit()) quit=1;
}