📄 cusage.h
字号:
// include implementation file
#define snd sound(2500)
csprite_object object[2];
csprite_object EnemyWave[4];
char PlayerInvinsible = 0;
char PlayerBlink = 0;
int Countdown=0;
int PalChanged=0;
/////////////////////////////////////////////////////////////////////////
//jet statistics
int StartingJetEnergy = 5;
/////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////
//control statistics
int Continue=10;
/////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////
//game statistics
int WavesPassed = 0;
int WaveType = 0;
int WaveStatus = 0;
int ShipStatus = 0;
/////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////
int y_stack[100];
int x_stack[100];
char ControlMechanism= 1;
/////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////
// wave implementation
void LoadWaveSprites (void)
{
//grab the wave a sprites
for (int k=0;k<4 ;k++)
{
EnemyWave[k].initialize(100,100);
bmp_grab("bitmaps\\rocketb.bmp", &EnemyWave[k].sprite,0);
bmp_grab("bitmaps\\enemya.bmp", &EnemyWave[k].sprite,0);
bmp_grab("bitmaps\\enemyc.bmp", &EnemyWave[k].sprite,0);
}
}
void Wave (void)
{
//wave control
if (WaveStatus==SPRITE_DEAD)
{
WaveStatus = 1;
for (int k=0; k<=4 ;k++)
{
EnemyWave[k].sprite.x = 320+(30)*random(10);
EnemyWave[k].sprite.y = 30*(k+1);
EnemyWave[k].sprite.state = 5;//SPRITE_ALIVE;
}
}
}
int k;
int WaveCall (void)
{
int AllKilled=0;
//
//WaveType=WavesPassed;
if (WaveStatus == SPRITE_DEAD)return(0);
for( k=0;k<4;k++)
{
////////////////////////////////////////////////////////////////////////////
// for the first kind of wave
if (WaveType==0)
{
EnemyWave[k].sprite.curr_frame=0;
EnemyWave[k].Homer.speed = 1;
EnemyWave[k].sprite.speed = 1;
EnemyWave[k].sprite.x-=1;
if (random(200) == 1 && EnemyWave[k].sprite.state)
EnemyWave[k].Home(&object[0]);
if (random(20) == 1)
{
if (EnemyWave[k].sprite.y > y_stack[0])
{EnemyWave[k].sprite.y--;}
else {EnemyWave[k].sprite.y++;}
}
}
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
// for the second kind of wave
if (WaveType==1)
{
EnemyWave[k].sprite.curr_frame=1;
EnemyWave[k].Homer.speed = 6;
EnemyWave[k].sprite.speed = 1;
if (EnemyWave[k].sprite.x < x_stack[k<<4] )
{EnemyWave[k].sprite.x++;}
else{EnemyWave[k].sprite.x--;}
if (EnemyWave[k].sprite.y < y_stack[k<<4] )
{EnemyWave[k].sprite.y++;}
else{EnemyWave[k].sprite.y--;}
if (random(200) == 1 && EnemyWave[k].sprite.state)
EnemyWave[k].Home(&object[0]);
}
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
// for the third kind of wave
if (WaveType==2)
{
EnemyWave[k].sprite.curr_frame=2;
EnemyWave[k].sprite.speed = 6;
EnemyWave[k].Homer.speed = 1;
EnemyWave[k].sprite.x-=(6);
if (random(20) == 1)
{
if (EnemyWave[k].sprite.y > y_stack[0])
{EnemyWave[k].sprite.y--;}
else {EnemyWave[k].sprite.y++;}
}
}
////////////////////////////////////////////////////////////////////////////
// for the fourth kind of wave
if (WaveType==3)
{
EnemyWave[k].sprite.curr_frame=0;
EnemyWave[k].sprite.speed = 6;
EnemyWave[k].Homer.speed = 1;
EnemyWave[k].sprite.x-=(1);
EnemyWave[k].VerticalVibration(10);
EnemyWave[k].HorizontalVibration(10);
}
////////////////////////////////////////////////////////////////////////////
//check collision
if (PlayerInvinsible == 0)
{
if(EnemyWave[k].sprite.collision(&object[0].sprite))
{
snd;// sound protocol
EnemyWave[k].Explode();
EnemyWave[k].sprite.state-=5;
object[0].sprite.state-=1;
PlayerInvinsible=1;
PlayerBlink=1;
Countdown=300;
}
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
//check collision
if(EnemyWave[k].sprite.collision(&object[0].fire))
{
snd;// sound protocol
EnemyWave[k].Explode();
EnemyWave[k].sprite.state-=1;
object[0].fire.state-=1;
}
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
//check collision
if(EnemyWave[k].sprite.collision(&object[0].HomingFire))
{
snd;// sound protocol
EnemyWave[k].Explode();
EnemyWave[k].sprite.state-=1;
object[0].HomingFire.state-=1;
}
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
//check collision
if(EnemyWave[k].HomingFire.collision(&object[0].sprite))
{
snd;// sound protocol
object[0].Explode();
EnemyWave[k].HomingFire.state=0;
object[0].sprite.state-=1;
PlayerInvinsible=1;
PlayerBlink=1;
Countdown=300;
}
}
// invisibility
if (PlayerInvinsible)
{
object[0].Smoulder();
object[0].Explode();
if (Countdown-- < 0)
PlayerInvinsible = NULL;
PlayerBlink=NULL;
}
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
EnemyWave[k].sprite.paste_x_db ();
EnemyWave[k].HomeCall ();
EnemyWave[k].ExplodeCall ();
if (EnemyWave[k].sprite.LeftBehindScreen())
{
EnemyWave[k].sprite.state=SPRITE_DEAD;
//snd;
}
if(EnemyWave[k].sprite.state == 0)
AllKilled++;
} //end second if
if (AllKilled == 4)
{
WavesPassed++;
WaveStatus=SPRITE_DEAD;
return(1);
}
return(0);
} //end wave
/////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////
// mother implementation
void LoadMotherSprites (void)
{
// initialize
object[1].initialize(350,100);
// fuel up
object[1].sprite.state=StartingJetEnergy*3;
//set homing fire speed
object[1].Homer.speed = 1;
// sprite speed
object[1].SpriteSpeed = 1;
bmp_grab("bitmaps\\mother_1.bmp",&object[1].sprite,0);
}
void Mother (void)
{
//wave control
if (object[1].sprite.state==SPRITE_DEAD)
{
object[1].sprite.state = 1;
object[1].sprite.x = 320;
object[1].sprite.y = 30;
object[1].sprite.state = SPRITE_ALIVE;
}
}
int MotherCall (void)
{
char StringBuffer[50];
if (object[0].sprite.state==SPRITE_DEAD)return(0);
//PrintRomString something to screen
sprintf(StringBuffer,"Boss-Energy:> %d ",object[1].sprite.state);
PrintRomString(1,20,248,StringBuffer,1);
//check collision
if (PlayerInvinsible == 0)
{
if(object[0].sprite.collision(&object[1].HomingFire))
{
snd;// sound protocol
object[0].Explode();
object[0].Smoulder();
object[1].HomingFire.state=SPRITE_DEAD;
object[0].sprite.state-=1;
PlayerInvinsible=1;
PlayerBlink=1;
Countdown=300;
}
if(object[0].HomingFire.collision(&object[1].sprite))
{
snd;// sound protocol
object[0].HomingFire.state=0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -