Procurar
Últimos assuntos
Quem está conectado?
Há 1 usuário online :: 0 registrados, 0 invisíveis e 1 visitante Nenhum
[ Ver toda a lista ]
O recorde de usuários online foi de 192 em Ter Out 26, 2021 6:07 am
Space Invader(mal feito =D)
Página 1 de 1
Space Invader(mal feito =D)
- 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;
}
}
juk- Mensagens : 262
Data de inscrição : 02/04/2012
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
Seg Jan 02, 2023 2:13 pm por juk
» Cypecad 2019
Seg Jan 02, 2023 1:41 pm por juk
» Atualizando é instalando o IExplorer 11 no windows 7
Ter Ago 30, 2022 10:54 pm por juk
» COMO HABILITAR INTERNET EXPLORER NO WINDOWS 10
Sex Abr 29, 2022 6:43 pm por juk
» Usando o Monitor de Recursos do sistema para identificar processos Associados.
Qua Abr 06, 2022 10:19 am por juk
» Fazendo backup do anydesk
Ter Abr 05, 2022 7:30 pm por juk
» Recuperando Favoritos, senhas apos formatar o navegador (Mozilla Firefox ou Chrome)
Ter Abr 05, 2022 7:28 pm por juk
» Comando para tentar recuperar o windows
Qua Out 27, 2021 5:52 pm por juk
» NGROK para divulgação de site remoto
Ter Set 29, 2020 9:40 am por juk