Você está na página 1de 4

Nome: Howana, Agidio Agostinho Ernesto

Trabalho: Porco

#include <windows.h>

#include <GL/gl.h>

#ifdef __APPLE__
#include <GLUT/glut.h>
#else
#include <GL/glut.h>
#endif
#include <stdlib.h>
#include<math.h>

void inicio (void);//Para desenho da tela


void display(void);//Para desenho das figuras
void keyboard(unsigned char key,int x,int y );//Para chamada do teclado

float te=1.0, el=1.0, la=1.0;


float t=0.72,r=0.45, a=0.2;
float p=1.0,ri=0.41,co=0.71;
float f=1,u=0.75,c=0.8;
float cor=0;
float xt=0.0,yt=0.0;
float x = 0.0,y = 0.0,z=0.0;
float angle =0;

void inicio(void){
glClearColor(te,el,la,0);//Cor da tela
glPointSize(0.0);
glLineWidth(0.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0.0,0.0,0.0,0.0);
}

void display(void){
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);

//TERRA
glBegin(GL_QUADS);
glColor3f(t,r,a);
glVertex2f(-1.0,-0.15);
glVertex2f(1.0,-0.15);
glVertex2f(1.0,-1.0);
glVertex2f(-1.0,-1.0);
glEnd();

glPushMatrix();
glPushMatrix();
glRotatef(angle,0.0,0.0,0.0);
glTranslatef(0.0,0.0,0.0);
glTranslatef(xt,yt,0.0);
//Perna esquerda
glBegin(GL_QUADS);
glColor3f(p,ri,co);
glVertex2f(-0.03,0.05);
glVertex2f(-0.03,-0.15);
glVertex2f(-0.08,-0.15);
glVertex2f(-0.08,0.05);
glEnd();

//Perna direita
glBegin(GL_QUADS);
glColor3f(p,ri,co);
glVertex2f(0.03,0.05);
glVertex2f(0.03,-0.15);
glVertex2f(0.08,-0.15);
glVertex2f(0.08,0.05);
glEnd();

//Cabeca
float circlo;
glColor3f(p,ri,co);

glBegin(GL_POLYGON);
for(int i =0;i<360;i++){

circlo = i*3.14/180;
glVertex2f(0.0+0.14*cos(circlo),0.1+0.16*sin(circlo));
}
glEnd();

//Fucinho
glColor3f(f,u,c);

glBegin(GL_POLYGON);
for(int i=0;i<360;i++)
{
circlo=i*3.142/180;
glVertex2f(0.0+0.05*cos(circlo),0.1+0.06*sin(circlo));
}

//Nariz esquerdo
glEnd();
glColor3f(0.0,0.0,0.0);

glBegin(GL_POLYGON);
for(int i=0;i<360;i++)
{
circlo=i*3.142/180;
glVertex2f(-0.02+0.01*cos(circlo),0.1+0.017*sin(circlo));
}

//Nariz direito
glEnd();
glColor3f(0.0,0.0,0.0);

glBegin(GL_POLYGON);
for(int i=0;i<360;i++)
{
circlo=i*3.142/180;
glVertex2f(0.02+0.01*cos(circlo),0.1+0.017*sin(circlo));
}glEnd();

//Olho esquerdo
glEnd();
glColor3f(0.0,0.0,0.0);

glBegin(GL_POLYGON);
for(int i=0;i<360;i++)
{
circlo=i*3.142/180;
glVertex2f(-0.025+0.01*cos(circlo),0.22+0.0095*sin(circlo));
}

//Olho direito
glEnd();
glColor3f(0.0,0.0,0.0);

glBegin(GL_POLYGON);
for(int i=0;i<360;i++)
{
circlo=i*3.142/180;
glVertex2f(0.025+0.01*cos(circlo),0.22+0.0095*sin(circlo));
}glEnd();

glPopMatrix();
glPopMatrix();
glutSwapBuffers();
glFlush();
}

void keyboard(unsigned char key,int x,int y){//Movimentos do teclado

switch(key){

case 27: // Para terminar o programa com ESC


exit(0);
break;

case 'd': //Desloca para a direita


xt += 0.1;
glutPostRedisplay();
break;

case 'a': //Desloca para a esquerda


xt -= 0.1;
glutPostRedisplay();
break;

case '1':
p=1.0; ri=1.0,co=0.0; //Muda a cor para Amarelo
glutPostRedisplay();
break;
case '2':
p=1.0, ri=0.41, co=0.71;//Muda a cor para rosa
glutPostRedisplay();
break;

default:
break;
}
}
void mouse(int button, int state,int x,int y){

if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN) {

if (t==0.0 && r==1.0 && a==0.0){


t=0.72, r=0.45, a=0.2;//altera a cor da terra de castanho para verde

}else{
t=0.0, r=1.0, a=0.0; //altera a cor da terra de verde para castanho
}

glutPostRedisplay();//Permite a mudanca de cor

}
if (button == GLUT_RIGHT_BUTTON && state == GLUT_DOWN) {

if(cor==0){
glClearColor(0.0,0.0,0.0,0);//altera a cor do fundo de branco para
preto
cor++;
}else{ glClearColor(1.0,1.0,1.0,0);//altera a cor da terra de preto
para branco
cor--;
}
glutPostRedisplay();//Permite a mudanca de cor

}
int main (int argc, char** argv){
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DEPTH|GLUT_SINGLE|GLUT_RGBA);
glutInitWindowSize(1600,900);
glutInitWindowPosition(10,10);
glutCreateWindow("Porco");
inicio();
glutDisplayFunc(display);
glutKeyboardFunc(keyboard);
glutMouseFunc(mouse);
glutMainLoop();
return EXIT_SUCCESS;
}

Você também pode gostar