예제 #1
0
파일: intro.cpp 프로젝트: nlattessi/unl-vg
// Idle callback
// Para controlar el tiempo
void Idle_cb() {
  static unsigned int lt=0;
  int dt = glutGet(GLUT_ELAPSED_TIME) - lt;
  if(dt > 60) {
    
    // Convierte AvionAng de grados a radianes
    double ang=AvionAng*PI/180.0;
    
    if ( teclado.Salir() ) {
      exit( EXIT_SUCCESS );
    }
    if ( teclado.Adelante() ) {
      AvionX-=5*sin(ang);
      AvionY+=5*cos(ang);
    }
    if ( teclado.Atras() ) {
      AvionX+=5*sin(ang);
      AvionY-=5*cos(ang);
    }
    if ( teclado.Izquierda() ) {
      AvionAng+=2;
    }
    if ( teclado.Derecha() ) {
      AvionAng-=2;
    }
    
    lt = glutGet(GLUT_ELAPSED_TIME);
    glutPostRedisplay();
  }
}
예제 #2
0
파일: intro.cpp 프로젝트: dexter1986/unli
void Idle_cb() 
{
  
  static unsigned int lt=0;  	
  
  int dt = glutGet(GLUT_ELAPSED_TIME) - lt;
  
  if(dt > 60) 
  {

	  if(isFired)
	  {
		incyMetralla+=8;
		if(incyMetralla < 0 || incyMetralla > h)
			isFired = false;
	  }

	  lightY++;
	  if(lightY > 20.0)
		  lightY = 0.0;

	// Convierte AvionAng de grados a radianes
	  double ang=AvionAng*PI/180.0;
	  
	  if(teclado.Salir())
	  {
		  exit(EXIT_SUCCESS);
	  }
	  
	  if(teclado.Adelante())
	  {
		// double sin(double ang); // Calcula el seno de ang medido en radianes
		AvionX-=5*sin(ang);
		AvionY+=5*cos(ang);		
	  }

	  if(teclado.Atras())
	  {
		AvionX+=5*sin(ang);
		AvionY-=5*cos(ang);
	  }

	  if(teclado.IzquierdaAux())
	  {
		AvionAng+=2;
	  }

	  if(teclado.DerechaAux())
	  {
		AvionAng-=2;		
	  }

	  if(!isFired && teclado.Disparar())
	  {
		  isFired = true;		
		  MetrallaX = AvionX;
		  MetrallaY = AvionY;
		  incxMetralla = -sin(AvionAng);
		  incyMetralla = cos(AvionAng);			  
		  AngMetralla = AvionAng;
	  }

	  lt = glutGet(GLUT_ELAPSED_TIME);	
	  glutPostRedisplay();
  }
}