Esempio n. 1
0
// Função callback para tratar eventos de teclas especiais
void TeclasEspeciais (int tecla, int x, int y)  
{
	switch (tecla)
	{
           ///define zooom
		case GLUT_KEY_PAGE_UP:	if(angle>=10)  angle -=5;
							break;
		case GLUT_KEY_PAGE_DOWN:	if(angle<=150) angle +=5;
							break;
							
		// define movimento
		// as vars obs é pra movimentar pra direita-esquerda, cima e abaixo.
		case GLUT_KEY_UP:
             obsY-=2;
             break;
        case GLUT_KEY_DOWN:
             obsY+=2;
             break;
        case GLUT_KEY_LEFT:
             obsX+=2;
             break;
        case GLUT_KEY_RIGHT:
             obsX-=2;
             break;
	}
	EspecificaParametrosVisualizacao();
	glutPostRedisplay();
}
Esempio n. 2
0
// Callback comum do teclado
void (Teclado) (unsigned char tecla, int x, int y)
  { 
   
  if(tecla == '6') // 
    { xis = xis + 1; } printf("\n X %f",xis ); // printf(" Posicao de xis eh!!\n %f",xis );
    int (xxx = xis);  // printf(" Posicao de mmm eh!!\n mmm %f",mmm );     
// função que detecta a colisão {
        if ((xxx>=33) && (zzz>=67)) {ze = ze-1; printf(" colisao c/ a calcada");}     
        if ((xxx>=33) && (zzz<=34)) {ze = ze+1; printf(" colisao c/ a calcada");}
  if(tecla == '4')
       { xis = xis - 1; }         
    int (xxx = xis);  // printf(" Posicao de mmm eh!!\n mmm %f",mmm );     
// função que detecta a colisão {
       if ((xxx>=33) && (zzz>=67)) {ze = ze-1; printf(" colisao c/ a calcada");}     
       if ((xxx>=33) && (zzz<=34)) {ze = ze+1; printf(" colisao c/ a calcada");}
//  if(tecla == 'w') // 
 //      { yps = yps + 1; }  
//  if(tecla == 's')                                             
 //      { yps = yps - 1; } 
  if(tecla == '2') // 
       { ze = ze + 1; }    printf("\n Z %f",ze ); //  printf(" Posicao de ze eh!!\n Z %f",ze );
       int (zzz = ze);  // printf(" Posicao de ttt eh!!\n ttt %f",ttt );
       if ((xxx<=24) && (zzz>=67)) {ze = ze-1; printf(" colisao c/ a calcada");}
       if ((xxx<=24) && (zzz<=34)) {ze = ze+1; printf(" colisao c/ a calcada");}                   
  if(tecla == '8')
       { ze--; }        
  if (tecla == 'c') //
       { camera = !camera; }         
        EspecificaParametrosVisualizacao();             
  }  
Esempio n. 3
0
/*void TeclasEspeciais(int tecla, int x, int y)
 	{
	
    if(tecla == GLUT_KEY_UP)
		c0.y += 0.05;

	if(tecla == GLUT_KEY_DOWN)
		c0.y -= 0.05;

	if(tecla == GLUT_KEY_LEFT)
		c0.x -= 0.05;

	if(tecla == GLUT_KEY_RIGHT)
		c0.x += 0.05;

	glutPostRedisplay();

    }
//void desenha(void)
	//{ int x,y;
	// glClear(GL_COLOR_BUFFER_BIT); */
 void TeclasEspeciais (int key, int x, int y)
{
   switch (key) {
	case GLUT_KEY_LEFT : 
        obsX -=10;
		break;
	case GLUT_KEY_RIGHT : 
		obsX +=10;
		break;
	case GLUT_KEY_UP : 
		obsY +=10;
		break;
	case GLUT_KEY_DOWN : 
		obsY -=10;
		break;
	case GLUT_KEY_HOME : 
		obsZ +=10;
		break;
	case GLUT_KEY_END : 
		obsZ -=10;
		break;
   }
   glLoadIdentity(); 
  
      glTranslatef(objX,objY,objZ); 
EspecificaParametrosVisualizacao();
  // ParametrosVis3D();
   glutPostRedisplay();
}
Esempio n. 4
0
// Callback para gerenciar eventos do teclado para teclas especiais
void TeclasEspeciais(int key, int x, int y)
{
	switch (key)
	{
		case GLUT_KEY_LEFT:rotY--;
				break;
		case GLUT_KEY_RIGHT:rotY++;
				break;
		case GLUT_KEY_UP:rotX++;
				break;
		case GLUT_KEY_DOWN:rotX--;
				break;
		case GLUT_KEY_HOME:obsZ++;
				break;
		case GLUT_KEY_END:obsZ--;
				break;
		case GLUT_KEY_F10:// "camera reset"
				rotX=30;
				rotY=0;
				obsZ=10;
				angle=50;
				EspecificaParametrosVisualizacao();
				break;
	}
	PosicionaObservador();
	glutPostRedisplay();
}
Esempio n. 5
0
void TeclasEspeciais(int key, int x, int y)
{
    if(key == GLUT_KEY_LEFT) {
    	eyeX += 5;
    	oX +=5;
    }
    if(key == GLUT_KEY_RIGHT) {
    	eyeX -= 5;
    	oX -= 5;
    }
    if (key == GLUT_KEY_UP){
    	eyeY += 5;
    	oY += 5;
    }
    if (key == GLUT_KEY_DOWN){
    	eyeY -= 5;
    	oY -= 5;
    }

	//tirar a porra do warnning -> variavel não usada
	x=y;
	y=x;

    EspecificaParametrosVisualizacao();
    glutPostRedisplay();
}
Esempio n. 6
0
// tamanho da janela alterado 
void AlteraTamanhoJanela(GLsizei w, GLsizei h)
  {
 
  if ( h == 0 ) h = 1;
       glViewport(0, 0, w, h);
      	fAspect = (GLfloat)w/(GLfloat)h;
	    EspecificaParametrosVisualizacao();
  }
Esempio n. 7
0
//funcao callback chamada quando o tamanho da janela é alterdo
void AlteraTamanhoJanela(GLsizei w, GLsizei h)
{
     //para prevenir uma divisao por zero
     if(h==0) h=1;
     
     //especifica as dimensoes do viewpoint
     glViewport(0,0,w,h);
     
     EspecificaParametrosVisualizacao();
}//fim da funcao altera tamanho
Esempio n. 8
0
void AlteraTamanhoJanela(GLsizei w, GLsizei h) { /* Função callback chamada quando o tamanho da janela é alterado. */

  if (h == 0) h = 1;   /* Para previnir uma divisão por zero. */   

  glViewport(0, 0, w, h); /* Especifica o tamanho da viewport. Recebe como parâmetro a nova largura e altura da janela. */

  fAspect = (GLfloat)w/(GLfloat)h; /* Calcula a correção de aspecto. */

  EspecificaParametrosVisualizacao();
  
  }  /* fim da função AlteraTamanhoJanela() */
Esempio n. 9
0
// Teclas Especiais
void (TeclasEspeciais) (int key, int x, int y)
  {
  switch (key)
    {
    case GLUT_KEY_LEFT :
      {
      if (obsX<=0) 
        {
        if (obsZ<=0) 
          {
          obsX +=10;obsZ -=10; break;
          }  
        else   
          {
          obsX -=10;obsZ -=10; break;
          }
        }
      else    
        {
        if (obsZ<=0) 
          {obsX +=10;obsZ +=10; break; } 
        else 
          {obsX -=10; obsZ +=10; break; }
        }
      }
    case GLUT_KEY_RIGHT : 
      {
      if (obsX<=0) 
        {
        if (obsZ<=0) 
          {obsX -=10;obsZ +=10; break;}  
        else   
          {obsX +=10;obsZ +=10; break;} 
        }
      else    
        {
        if (obsZ<=0) 
          {obsX -=10;obsZ -=10; break; } 
        else 
          {obsX +=10; obsZ -=10; break; } 
        }
      }
    case GLUT_KEY_UP : 
      obsY +=10;break;
    case GLUT_KEY_DOWN :   // seta para baixo
	  obsY -=10;break;
    case GLUT_KEY_HOME : 
      obsZ +=10;break;
    case GLUT_KEY_END : 
      obsZ -=10;break;
    }
  EspecificaParametrosVisualizacao();
 }
Esempio n. 10
0
// Função callback chamada quando o tamanho da janela eh alterado
void AlteraTamanhoJanela(GLsizei w, GLsizei h){
	// Para previnir uma divisao por zero
	if ( h == 0 ) h = 1;

	// Especifica o tamanho da viewport
    glViewport(0, 0, w, h);

	// Calcula a correcao de aspecto
	fAspect = (GLfloat)w/(GLfloat)h;

	EspecificaParametrosVisualizacao();
}
Esempio n. 11
0
void OnReshape(int w, int h)
{
	if (h==0) h = 1;

	// set the drawable region of the window
	glViewport(0,0,w,h);

	// Calcula a correção de aspecto
	fAspect = (GLfloat)w/(GLfloat)h;

	EspecificaParametrosVisualizacao();
}
Esempio n. 12
0
// Callback comum de teclado     
void Teclado ( unsigned char tecla, int x, int y )
{
     if(tecla == 'r') // reset do objeto situaçao inicial
       { 
         exit(0); 
       }
       
       if (tecla == 'q') //
       { pessoa = !pessoa; }         
         EspecificaParametrosVisualizacao();             
         
     
}
Esempio n. 13
0
// Função callback chamada para gerenciar eventos do mouse
void GerenciaMouse(int button, int state, int x, int y)
{
	if (button == GLUT_LEFT_BUTTON)
		if (state == GLUT_DOWN) {  // Zoom-in
			if (angle >= 10) angle -= 5;
		}
	if (button == GLUT_RIGHT_BUTTON)
		if (state == GLUT_DOWN) {  // Zoom-out
			if (angle <= 130) angle += 5;
		}
	EspecificaParametrosVisualizacao();
	glutPostRedisplay();
}
Esempio n. 14
0
void MoveMouse(int x, int y)
{
	double centroX=glutGet(GLUT_WINDOW_WIDTH)/2, centroY=glutGet(GLUT_WINDOW_HEIGHT)/2;
	float velMouse = 0.03;

    anguloy += (x - x_temp)*velMouse;
    x_temp=x;

    angulox += (y - y_temp)*velMouse;
    y_temp = y;

    EspecificaParametrosVisualizacao();
    glutPostRedisplay();
    //travador de mouse

    if((x>=centroX+10 || x<=centroX-10 || y>=centroY+10 || y<=centroY-10) && trava_mouse==1) //delimitar uma area de acesso ao mouse de 600x450
    {
    	x_temp = centroX;
    	y_temp = centroY;
        glutWarpPointer(centroX,centroY);
        EspecificaParametrosVisualizacao();
        glutPostRedisplay();
    }
}
Esempio n. 15
0
void OnDraw()
{
	// clear the screen & depth buffer
	glClear(GL_DEPTH_BUFFER_BIT|GL_COLOR_BUFFER_BIT);

	EspecificaParametrosVisualizacao();
	desenhaChao();

	desenhaBezier();
	desenhaBSpline();
	desenhaHermite();

	desenhaPontosDeControle();
	desenhaNomes();

	glutSwapBuffers();
}
Esempio n. 16
0
void Translacao(int x,int y){
	glutMouseFunc (CarregarMouse);
	
	dX=x-PosX;
	dY=y-PosY;

	if(dX>0) moveX+=10;
	if(dX<0) moveX-=10;
	if(dY>0) moveY-=10;
	if(dY<0) moveY+=10;
	if(dX!=0) moveX+=dX/10;
	if(dY!=0) moveY-=dY/10;
	PosX=x; PosY=y;

	EspecificaParametrosVisualizacao();
	glutPostRedisplay ();
	
	

}
Esempio n. 17
0
// Função callback chamada para gerenciar eventos do mouse
void GerenciaMouse(int button, int state, int x, int y)
{
	float velocidade = 5;
	float radiano = anguloy*180.0/PI;
	if (button == GLUT_LEFT_BUTTON)
		if(state == GLUT_DOWN) {  // Zoom-in
			eyeZ -= abs(cos(radiano)*velocidade);
			eyeX -= abs(sin(radiano)*velocidade);
		}
	if (button == GLUT_RIGHT_BUTTON)
		if (state == GLUT_DOWN) {  // Zoom-out
			eyeZ += abs(cos(radiano)*velocidade);
			eyeX += abs(sin(radiano)*velocidade);
		}

	//tirar a porra do warnning -> variavel não usada
	x=y;
	y=x;

	EspecificaParametrosVisualizacao();
	glutPostRedisplay();
}
Esempio n. 18
0
void TeclasTeclado(unsigned char key, int x, int y){

	float velocidade = 3;

	switch (key){
		case 'w':
		case 'W':
			eyeX =eyeX-(velocidade*cos((anguloy+90)/57.32));
			eyeZ = eyeZ-(velocidade*sin((anguloy+90)/57.32));
			oX = oX-(velocidade*cos((anguloy+90)/57.32));
			oZ = oZ-(velocidade*sin((anguloy+90)/57.32));
		break;
		case 's':
		case 'S':
			eyeX =eyeX+(velocidade*cos((anguloy+90)/57.32));
			eyeZ = eyeZ+(velocidade*sin((anguloy+90)/57.32));
			oX = oX+(velocidade*cos((anguloy+90)/57.32));
			oZ = oZ+(velocidade*sin((anguloy+90)/57.32));
		break;
		case 'd':
		case 'D':
			eyeX = eyeX+(velocidade*sin((anguloy+90)/57.32));
			eyeZ = eyeZ-(velocidade*cos((anguloy+90)/57.32));
			oX = oX+(velocidade*sin((anguloy+90)/57.32));
			oZ=oZ-(velocidade*cos((anguloy+90)/57.32));
		break;
		case 'a':
		case 'A':
			eyeX = eyeX-(velocidade*sin((anguloy+90)/57.32));
			eyeZ = eyeZ+(velocidade*cos((anguloy+90)/57.32));
			oX = oX-(velocidade*sin((anguloy+90)/57.32));
			oZ = oZ+(velocidade*cos((anguloy+90)/57.32));
		break;
		case 't':
		case 'T':
			if(tampaFechada)
				tampaFechada=0;
			else
				tampaFechada=1;
		break;
		case 'l':
		case 'L':
			if(luzPCLigada){
				luzPCLigada=0;
			}else{
				luzPCLigada=1;
				glutTimerFunc(200,timerFunc,1);
			}
		break;
		case 'c':
		case 'C':
			if(visibilidadeCooler)
				visibilidadeCooler=0;
			else
				visibilidadeCooler=1;
		break;
		case 'v':
		case 'V':
			if(visualizacaoOrtho)
				visualizacaoOrtho = 0;
			else
				visualizacaoOrtho = 1;
		break;
		case 'm':
		case 'M':
			if(visibilidadeMesa)
				visibilidadeMesa=0;
			else
				visibilidadeMesa=1;
		break;
		case 'f':
		case 'F':
			glutFullScreen();
		break;
		case 27:
			exit(0);
		break;
		default:
		break;
	}
	//tirar a porra do warnning -> variavel não usada
	x=y;
	y=x;

	EspecificaParametrosVisualizacao();
	glutPostRedisplay();
}
Esempio n. 19
0
// FunÁ„o callback chamada para fazer o desenho
void Desenha(void)
{
    // Limpa a janela e o depth buffer
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    
    EspecificaParametrosVisualizacao ();
    DesenhaChao();
    
    
    //jogador();
    
    
    //DefineIluminacao();
    
    glColor3f(0.0f, 0.0f, 1.0f);
    
    //adiciona forma geometricas randomicas como inimigos xD HueHue
    criaInimigos(15);
    
    for (int i = 0; i < inimigos.size(); i++) {
        inimigo a = inimigos[i];
        
        glPushMatrix();
        glTranslatef(a.posX, 0, a.posZ);
        glutSolidCube(50);
        glPopMatrix();
        
    }
    
    // uma unica bala
    
    if(bala == 1 && moveEsfera >= -1000){
            atiraEsfera();
    }
    else{
        moveEsferaX = obsX;
        moveEsferaY = 0;
        moveEsfera = obsZ;
        rotEsferaY = rotY;
        bala = 0;
    }
    
    /*
    for(int i = 0; i < numeroDeBalas; i++){
        vetBalas[i].atirou = false;
        vetBalas[i].posX = obsX;
        vetBalas[i].posY = 0;
        vetBalas[i].posZ = obsZ;
    }
    
    for(int i = numeroDeBalas; i > 0; i--)
    {
        if(vetBalas[numeroDeBalas].atirou == true && vetBalas[numeroDeBalas].posZ >= -100){
            atiraEsferas(&vetBalas[numeroDeBalas].posX, &vetBalas[numeroDeBalas].posY, &vetBalas[numeroDeBalas].posZ);
        }
    }*/
    
    desenhaFimTela();
    
    glColor3f(0, 1, 0);
    glMatrixMode(GL_PROJECTION); // change the current matrix to PROJECTION
    double matrix[16]; // 16 doubles in stack memory
    glGetDoublev(GL_PROJECTION_MATRIX, matrix); // get the values from PROJECTION matrix to local variable
    glLoadIdentity(); // reset PROJECTION matrix to identity matrix
    glOrtho(0, 800, 0, 600, -5, 5); // orthographic perspective
    glMatrixMode(GL_MODELVIEW); // change current matrix to MODELVIEW matrix again
    glLoadIdentity(); // reset it to identity matrix
    glPushMatrix(); // push current state of MODELVIEW matrix to stack
    glRasterPos2d(10, 10); // raster position in 2D
    glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_24, 'A');
    glPopMatrix();
    glMatrixMode(GL_PROJECTION);
    glLoadMatrixd(matrix);
    glMatrixMode(GL_MODELVIEW);
    
    glPushMatrix();
    glColor3f(0, 1, 0);
    checkCollisions();
    glPopMatrix();
    
    
    glutSwapBuffers();
}