Пример #1
0
void Tree::draw(){


			
			glPushMatrix();
		  //trunk
 			glNewList(++list_number,GL_COMPILE);

      glTranslatef(center_point.x,center_point.y,center_point.z);
      trunk->set();
			 glutSolidCube(0.5);

    	glEndList();
			glPopMatrix();

			list_index = list_number;

      //cone
			glPushMatrix();
      glNewList(++list_number,GL_COMPILE);
      leaves->set();
			glTranslatef(center_point.x,center_point.y+0.05,center_point.z);
      glRotatef(-90.0, 1.0, 0.0, 0.0);
      glutSolidCone(rando.number(5,15)/10.0, rando.number(10,30)/10.0, 50, 50);
 			glEndList();
      glPopMatrix();

}
Пример #2
0
void CHealGuyObject::CruisingAi(){ //just cruising along
int x=0;

if(g_cTimer.elapsed(m_nHeightTime, m_nHeightDelayTime))
	{
	int rand = g_cRandom.number(1,3000);
	m_nHeightDelayTime=100+g_cRandom.number(0,1000);
	
		if(rand%2 == 1)
	{
		m_fXspeed = 5;
		
	}
	else 
	{
		m_fXspeed = -5;
		
	}
	
	
if(m_fDistance < CLOSE_DISTANCE){
		//g_pSoundManager->play(DEADCROW14_SOUND);
		SetState(herCHASINGS3_STATE);}
	}


	
}
Пример #3
0
void Target::ai(){

if(!timer.elapsed(last_time,delay_time)) return;
	
		if(center_point.x < -15.0)
			velocity.x = rando.number(0,50)/1000.0;
		else if(center_point.x > 15.0)
			velocity.x = rando.number(-50,0)/1000.0;
		else
			velocity.x = rando.number(-50,50)/1000.0;

		if(center_point.y < 0.0)
			velocity.y = rando.number(0,50)/1000.0;
		else if(center_point.y > 3.0)
			velocity.y = rando.number(-50,0)/1000.0;
		else
			velocity.y = rando.number(-50,50)/1000.0;

		if(center_point.z < -20.0)
			velocity.z = rando.number(0,50)/1000.0;
		else if(center_point.z > 5.0)
			velocity.z = rando.number(-50,0)/1000.0;
		else
			velocity.z = rando.number(-50,50)/1000.0;
	
	
	
	delay_time = 1500 + rando.number(0,2500);
	
	last_time = timer.time();


}
Пример #4
0
void CHealGuyObject::AvoidingAi(){ //avoiding plane
		if(xdistance > cool.x)
	{
		m_fXspeed = (float)-g_cRandom.number(7,10); 
	
	}
	if(xdistance < cool.x)
	{
		m_fXspeed = (float)-g_cRandom.number(-7,-10);

	}
	if(ydistance > cool.y)
	{
		m_fYspeed = (float)-g_cRandom.number(-7,-10); 
		
	}
	if(ydistance < cool.y)
	{
		m_fYspeed = (float)-g_cRandom.number(7,10);
	
	}
	
	if(ydistance == cool.y && xdistance == cool.x)
		SetState(herCRUISINGS3_STATE);

 
}
Пример #5
0
void CHealGuyObject::SetState(HealType state){

  m_eState=state; //change state

  switch(m_eState){ //change behavior settings

   
    case herCRUISINGS3_STATE:
      m_nAiDelayTime=400+g_cRandom.number(0,200);
      m_nHeightDelayTime=3000+g_cRandom.number(0,5000);
      break;

    case herAVOIDINGS3_STATE:
      m_nAiDelayTime=250+g_cRandom.number(0,250); 
      m_fXspeed=-3;
      break;
	case herCHASINGS3_STATE:
      //m_nAiDelayTime=400+g_cRandom.number(0,200);
      //m_nHeightDelayTime=300+g_cRandom.number(0,50);
	  break;
	case herWAITS3_STATE:
	  m_nAiDelayTime=250+g_cRandom.number(0,250); 
	  break;

    default: break;
  }
}
Пример #6
0
void CRoundManObject::SetState(States5Type state){

  m_eState=state; //change state

  switch(m_eState){ //change behavior settings

    case CRUISINGS5_STATE:
      m_nAiDelayTime=400+g_cRandom.number(0,200);
      m_nHeightDelayTime=3000+g_cRandom.number(0,5000);
      break;

    case AVOIDINGS5_STATE:
      m_nAiDelayTime=250+g_cRandom.number(0,250); 
      m_fXspeed=-3;
      break;
	case CHASINGS5_STATE:
      //m_nAiDelayTime=400+g_cRandom.number(0,200);
      m_nHeightDelayTime=300+g_cRandom.number(0,50);
	  break;
	case WAITS5_STATE:
	  m_nAiDelayTime=250+g_cRandom.number(0,250); 
	  break;

    default: break;
  }
}
Пример #7
0
void CRoundManObject::ChasingAi()
{
	
	if(g_cTimer.elapsed(m_nHeightTime, m_nHeightDelayTime))
	{
		m_nHeightDelayTime=100+g_cRandom.number(0,50);
	

	if(m_fHorizontalDistance > 0)
	{
		m_fXspeed = (float)-g_cRandom.number(7,10); 
	
	}
	 if(m_fHorizontalDistance < 0)
	{
		m_fXspeed = (float)-g_cRandom.number(-7,-10);

	}
	if(m_fVerticalDistance > 0)
	{
		m_fYspeed = (float)-g_cRandom.number(-7,-10); 
		
	}
	if(m_fVerticalDistance < 0)
	{
		m_fYspeed = (float)-g_cRandom.number(7,10);
	
	}
	if(CLOSE_DISTANCE > m_fDistance)
		SetState(CRUISINGS5_STATE);
}
}
Пример #8
0
void CHomingObject::HomingAi()
{	if(g_cTimer.elapsed(m_nHeightTime, m_nHeightDelayTime))
	{
		m_nHeightDelayTime=100+g_cRandom.number(0,2000);
	

	if(m_fHorizontalDistance > 0)
	{
		m_fXspeed = -15; 
	
	}
	 if(m_fHorizontalDistance < 0)
	{
		m_fXspeed = 15;

	}
	if(m_fVerticalDistance > 0)
	{
		m_fYspeed = 15; 
		
	}
	if(m_fVerticalDistance < 0)
	{
		m_fYspeed = -15;
	
	}
	

}}
Пример #9
0
void CRoundManObject::CruisingAi(){ //just cruising along
	
if(g_cTimer.elapsed(m_nHeightTime, m_nHeightDelayTime))
	{
	int rand = g_cRandom.number(1,1000);
	m_nHeightDelayTime=100+g_cRandom.number(0,500);
	
	if(rand % 3 == 0)
	{
		rand = g_cRandom.number(1,1000);
		if(rand%2 == 0)
		{
		m_fXspeed = 0;
		m_fXspeed = 8;
		}
		else
		{
		m_fYspeed = 0;
		m_fYspeed = 8;
		}
	}
	else if(rand%3 == 1)
	{
		rand = g_cRandom.number(1,1000);
		if(rand%2 == 0)
		{
		m_fXspeed = 0;
		m_fXspeed = -8;
		}
		else
		{
		m_fYspeed = 0;
		m_fYspeed = -8;
		}
	}
	else
	{
		m_fXspeed = m_fYspeed = 0;
	}
	if(CLOSE_DISTANCE > m_fDistance)
	SetState(CHASINGS5_STATE);
	}

}
Пример #10
0
BOOL ComposeFrame(){ //compose a frame of animation
  //draw background


  static int next_powerup = Timer.time()+Random.number(3000,12000);
  static int frame = 1;
  RECT rect; //drawing rectangle
  rect.left=0; rect.right=g_nScreenWidth; 
  rect.top=0; rect.bottom=g_nScreenHeight; 
  lpSecondary->Blt(&rect,lpBackground,&rect,DDBLT_WAIT,NULL);
  //move objects


  Viewpoint.draw_background(lpBackground,lpSecondary,8);
  
  int collision = theObjects.collisiondetection();
  
  
  theObjects.animate(lpSecondary);	//animate the current frame
  theObjects.refresh(collision);	//refresh the objects

  


if(Timer.time()>=next_powerup){
	theObjects.powerup();
    next_powerup += Random.number(10000,30000);	//next power up in 10 - 30 sec
	
}

  //frame rate
  framecount++; //count frame
  if(Timer.elapsed(framerate_timer,500)){

   theObjects.set_current(STARFIRE_INDEX);
	  theObjects.changedirection(0,0);
    last_framecount=framecount; framecount=0;
  }
 
  return PageFlip(); //flip video memory surfaces
 // return TRUE;
} //ComposeFrame
Пример #11
0
void CHealGuyObject::WaitingAi(){ //avoiding plane
	
	
	
  //height variation
  if(g_cTimer.elapsed(m_nHeightTime, m_nHeightDelayTime)){
    m_nDesiredHeight = g_cRandom.number(100,450);
    if(m_nDesiredHeight < m_structLocation.y)
      m_fYspeed= -(float)g_cRandom.number(3,7);
    if(m_nDesiredHeight > m_structLocation.y)
      m_fYspeed = (float)g_cRandom.number(3,7);
    m_nHeightDelayTime = 3000+g_cRandom.number(0,2000);
  }

  //speed variation
  if(g_cTimer.elapsed(m_nSpeedVariationTime, m_nSpeedVariationDuration)){
      m_fXspeed = (float)-g_cRandom.number(7,10); 
      m_nSpeedVariationDuration = 10000+g_cRandom.number(0,3000);
  }
  if(m_fHorizontalDistance > BEHIND_DISTANCE) //if behind
    m_fXspeed = -1; //slow down 
  
  //look for plane, maybe leave avoiding state
    if(m_fDistance < CLOSE_DISTANCE&&
      m_fHorizontalDistance+100 > BEHIND_DISTANCE);
    
}
Пример #12
0
void change_phase(GamePhaseType new_phase){

	GamePhase = new_phase;
	PhaseTime = Timer.time();
	endphase = FALSE;
	static int first = 1;

	switch(GamePhase){

	case LOGO_PHASE:
			LoadSounds(0);
			display_screen("./images/logo.bmp");
			SoundManager->play(TITLE_SOUND);
			SoundManager->play(LOGO_SOUND);
			break;

	case TITLE_PHASE:
		
			SoundManager->stop(); //silence previous phase
        	MidiPlayer.Load(song_list[INTRO_MUSIC].c_str());
			MidiPlayer.Play();
			display_screen("./images/title.bmp"); 
			break;
			
	case HELP_PHASE:
			SoundManager->stop();
			display_screen("./images/help.bmp"); break;

	case ENEMY_PHASE:
			display_screen("./images/enemies.bmp"); break;

	case MENU_PHASE:

			SoundManager->stop(); //silence previous phase
        
			if(!first){
				MidiPlayer.Stop();
				MidiPlayer.Load(song_list[INTRO_MUSIC].c_str());
				MidiPlayer.Play();
			}
			
			display_screen("./images/menu.bmp"); break;

	case PLAYING_PHASE:

			
	        SoundManager->stop(); //silence previous phase
            SoundManager->clear(); //clear out old sounds
			LoadSounds(1);

			if(first){
		    CreateObjects(); //create new objects
			first = 0;

			}
				SoundManager->play(BEGIN0_SOUND+Random.number(0,2));
			
				MidiPlayer.Stop();
				MidiPlayer.Load(song_list[THEME_MUSIC].c_str());
				MidiPlayer.Play();
			
		//	SoundManager->play(ENGINE_SOUND,LOOP_SOUND);
			break;
	case GAMEOVER_PHASE:

			MidiPlayer.Stop();
			
						
			display_screen("./images/game_over.bmp");
			Sleep(2000);
			SoundManager->stop(); //silence previous phase
			SoundManager->play(GAMEOVER1_SOUND);
			 break;

	}
}