⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cusage.h

📁 A 2D game engine for C++ and an example : Aero Blasters
💻 H
📖 第 1 页 / 共 2 页
字号:
    // 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 + -