// 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(); } }
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(); } }