// 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(); }
// 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(); }
/*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(); }
// 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(); }
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(); }
// 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(); }
//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
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() */
// 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(); }
// 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(); }
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(); }
// 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(); }
// 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(); }
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(); } }
void OnDraw() { // clear the screen & depth buffer glClear(GL_DEPTH_BUFFER_BIT|GL_COLOR_BUFFER_BIT); EspecificaParametrosVisualizacao(); desenhaChao(); desenhaBezier(); desenhaBSpline(); desenhaHermite(); desenhaPontosDeControle(); desenhaNomes(); glutSwapBuffers(); }
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 (); }
// 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(); }
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(); }
// 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(); }