Buscar
 
 

Resultados por:
 


Rechercher Busca avançada

Relogio

Space Invader(mal feito =D)

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Space Invader(mal feito =D)

Mensagem  juk em Dom Jan 20, 2013 4:47 pm

Código:

#include <GL/gl.h>
#include <GL/glut.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>


//prototipos--funçoes-----
void printstring(void *font, char *string);
void redimensionartela(int w, int h);
void nave(void);
void tiro(void);
void asteroid(void);
void osd();
void teclas (unsigned char key, int x, int y);
//-------fim-prototipos-----------
///-----asteroids
int a1=1;
int a2=1;
int a3=1;
int a4=1;
int acerto=0;

//--------------rotação----------

float px=0, py=-5, pz=0; //dislocamento


/*// Programa Principal */
int main(int argc, char** argv){
   glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
    glutInitWindowSize(800,600);//tamanho da janela
    glutInitWindowPosition(1,1);//posicão da janela
    glutCreateWindow("spaceinvader");//titulo da janela
    glClearColor(0.0f, 0.0f, 0.0f, 0.0f);//cor do fundo rgb
    glColor4f (1.0, 0.0, 0.0, 0.0);//cor inicial do cubo e letras rgb
    glutDisplayFunc(nave);//função onde esta os desenhos do cubo
    glutReshapeFunc(redimensionartela);//redimensiona a janela
    glutKeyboardFunc(teclas);//leitura das teclas
   
    glutMainLoop();


  return 0;
}


void redimensionartela(int w, int h)//função 'padrao' para redimensionamento
{
  glViewport (0, 0, (GLsizei) w, (GLsizei) h);
  glMatrixMode (GL_PROJECTION);
  glLoadIdentity ();
  gluPerspective(65.0, (GLfloat) w/(GLfloat) h, 1.0, 20.0);
  glMatrixMode(GL_MODELVIEW);
  glLoadIdentity();
 glTranslatef (0.0, 0.0, -10.0);

}
/*// Função callback chamada para fazer o desenho*/
void nave(void)
{  glClear(GL_COLOR_BUFFER_BIT);
  glColor4f (1.0, 0.0, 0.0, 0.0);//cor inicial do cubo e letras rgb
  glPushMatrix();
  glTranslatef (px,py,0.0);//direção do triangulo
 
    glBegin(GL_POLYGON); // Primitiva para desenhar um polígono
        glVertex2f( 0.0f, 0.0f);  // define o primeiro vértice do polígono
        glVertex2f( 0.25f, 0.50f); // define o segundo vértice do polígono
        glVertex2f( 0.50f, 0.0f); // define o terceiro vértice do polígono
       
    glEnd();
 
  glPopMatrix();
  osd();
 
  glFlush();
  asteroid();
  //glutSwapBuffers();
     
}
void tiro()
{
 
 
  glPushMatrix();

  glTranslatef (px,py,0.0);//direção do triangulo
    glBegin( GL_POINTS );
    glColor3f(0.0f, 1.0f, 0.0f);
    glVertex2f( 0.2f, 0.0f);
    glEnd();
  glPopMatrix();
  glFlush();
 
}
void asteroid()
{
   if(a1==1)
   {
   glPushMatrix();
   glTranslatef (0.0,5.0,0.0);
     glBegin(GL_POLYGON); // Primitiva para desenhar um polígono
        glVertex2f( 0.0f, 0.0f);  // define o primeiro vértice do polígono
        glVertex2f( 0.25f, 0.50f); // define o segundo vértice do polígono
        glVertex2f( 0.50f, 0.0f); // define o terceiro vértice do polígono
    glEnd();
      glPopMatrix();
  }
  if(a2==1)
  {
      glPushMatrix();
  glTranslatef (0.60,5.0,0.0);
     glBegin(GL_POLYGON); // Primitiva para desenhar um polígono
        glVertex2f( 0.0f, 0.0f);  // define o primeiro vértice do polígono
        glVertex2f( 0.25f, 0.50f); // define o segundo vértice do polígono
        glVertex2f( 0.50f, 0.0f); // define o terceiro vértice do polígono
    glEnd();
        glPopMatrix();
   }
           
  if(a3==1)
  {
            glPushMatrix();
  glTranslatef (1.20,5.0,0.0);
     glBegin(GL_POLYGON); // Primitiva para desenhar um polígono
        glVertex2f( 0.0f, 0.0f);  // define o primeiro vértice do polígono
        glVertex2f( 0.25f, 0.50f); // define o segundo vértice do polígono
        glVertex2f( 0.50f, 0.0f); // define o terceiro vértice do polígono
    glEnd();
        glPopMatrix();
   }
   if(a4==1)
   {
        glPushMatrix();
      glTranslatef (1.80,5.0,0.0);
     glBegin(GL_POLYGON); // Primitiva para desenhar um polígono
        glVertex2f( 0.0f, 0.0f);  // define o primeiro vértice do polígono
        glVertex2f( 0.25f, 0.50f); // define o segundo vértice do polígono
        glVertex2f( 0.50f, 0.0f); // define o terceiro vértice do polígono
    glEnd();
 
    glPopMatrix();
 }

    glFlush();
 }
int colisao()
{
   if(px >-0.30 && px <0.30)//asteroid a1
    {
    if(a1!=0)
     {
     acerto=acerto+1;
      }
      a1=0;
    }
   else if(px >0.30 && px <0.90)//asteroid a2
    {
    if(a2!=0)
     {
     acerto=acerto+1;
      }
      a2=0;
    }
   else if(px >0.90 && px <1.80)//asteroid a3
   {
   if(a3!=0)
    {
    acerto=acerto+1;
    }
    a3=0;
    }
   else if(px >1.80 && px <2.70)//asteroid a4
   {
    if(a4!=0)
     {
     acerto=acerto+1;
      }
    a4=0;
    }
   return 0;
}   
void osd()
{
     //-----inicio--escrita----------------
 
        char x[40],y[40],pontos[40];
        sprintf(x, "x=%.2f ", px);
        glRasterPos2f(-6,6);
        glutBitmapString(GLUT_BITMAP_9_BY_15, x);
        sprintf(y, "y=%.2f ", py);
        glutBitmapString(GLUT_BITMAP_9_BY_15, y);
        sprintf(pontos, "Acertou %d ", acerto);
        glutBitmapString(GLUT_BITMAP_9_BY_15, pontos);

}
//--------leitura-de-teclado---------------
void teclas(unsigned char key, int x, int y){ //leitura da entrada de teclado
int cont;
  switch (key) {
   
  case 32 :///spacebar
  {
     colisao();
  for(cont=0;cont <120;cont++)
  {
     py=py+0.1;
     printf("%f\n",py);
    tiro();
    glutPostRedisplay();
    if(py > 6.00)
    {
      py=-5;
    break;
  }
usleep(100);
}
    break;
}
 case 'a' ://-----teclas de movimentacao
    px =px-0.1;
    glutPostRedisplay();
    break;
 case 'd' :
    px =px+0.1;
    glutPostRedisplay();
    break;
  case 'w':
    py =py+0.1;
    glutPostRedisplay();
    break;
  case 's':
    py =py-0.1;
    glutPostRedisplay();
    break;
  case '0': //reseta tudo
    ///-----restaura os asteroids
 a1=1;
 a2=1;
 a3=1;
 a4=1;
 acerto=0;
 glutPostRedisplay();
    break;
    //----------fim
  case 27:
    exit(0);
    break;
  default:
    break;
  }
}
gcc -lGL -lGLU -lglut spaceinvader.c
avatar
juk

Mensagens : 224
Data de inscrição : 02/04/2012

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum