martes, 2 de octubre de 2007

PRACTICA 5

1. ¿Qué es el diseño orientado a eventos?

Es cuando debido a una acción o evento que suceda dentro del programa en tiempo real otras acciones o eventos responden, es decir, es una reacción del programa a sucesos dentro de él, ya sea debido al usuario o a sí mismo.

2. ¿Qué utilidad tiene el manejo de eventos en el desarrollo de aplicaciones gráficas?

Es la base de estas aplicaciones porque en su mayoría lo que hacen estos programas es responder a acciones del usuario como por ejemplo cuando hace un clic o cuando teclea algo o cuando usa un pad. Es la forma en la que un sistema puede "interactuar" con el usuario.

3. Programa que
- Al hacer un clic dibuje un punto en las coordenadas donde se hizo clic
- Cada 2 puntos dibujar una linea
- Cada 3 puntos dibujar un triángulo
- Cada 4 puntos dibujar un cuadrilatero
- Cada 5 puntos dibujar un poligono
- Con el boton derecho la cuenta de puntos vuelve a 0
- Con el boton de en medio limpiar la pantalla

#include "GL/glut.h"

int mousex[100],mousey[100],contador=0,puntos=0;

void Primitivas(void)
{
if(puntos==1)
{
glPointSize(2);
glColor3f(0.5,0.5,0.5);
glBegin(GL_POINTS);
glVertex2i(mousex[contador-1],mousey[contador-1]);
glEnd();
glFlush();
}
if(puntos==2)
{
glColor3f(0.5,0.5,0.5);
glBegin(GL_LINES);
glVertex2i(mousex[contador-2],mousey[contador-2]);
glVertex2i(mousex[contador-1],mousey[contador-1]);
glEnd();
glFlush();
}
if(puntos==3)
{
glColor3f(0.5,0.5,0.5);
glBegin(GL_TRIANGLES);
glVertex2i(mousex[contador-3],mousey[contador-3]);
glVertex2i(mousex[contador-2],mousey[contador-2]);
glVertex2i(mousex[contador-1],mousey[contador-1]);
glEnd();
glFlush();
}
if(puntos==4)
{
glColor3f(0.5,0.5,0.5);
glBegin(GL_QUADS);
glVertex2i(mousex[contador-4],mousey[contador-4]);
glVertex2i(mousex[contador-3],mousey[contador-3]);
glVertex2i(mousex[contador-2],mousey[contador-2]);
glVertex2i(mousex[contador-1],mousey[contador-1]);
glEnd();
glFlush();
}
if(puntos==5)
{
glColor3f(0.5,0.5,0.5);
glBegin(GL_POLYGON);
glVertex2i(mousex[contador-5],mousey[contador-5]);
glVertex2i(mousex[contador-4],mousey[contador-4]);
glVertex2i(mousex[contador-3],mousey[contador-3]);
glVertex2i(mousex[contador-2],mousey[contador-2]);
glVertex2i(mousex[contador-1],mousey[contador-1]);
glEnd();
glFlush();
}
}

void Escena(void)
{
glClearColor(1.0,1.0,1.0,0.0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0,600,620,0);
glFlush();
}

void BotonApretado(int boton,int estado,int x,int y)
{
if(estado == GLUT_DOWN)
{
switch(boton)
{
case GLUT_LEFT_BUTTON:
mousex[contador]=x;
mousey[contador]=y;
contador++;
puntos++;
Primitivas();
break;

case GLUT_RIGHT_BUTTON:
puntos=0;
break;

case GLUT_MIDDLE_BUTTON:
Escena();
puntos=0;
contador=0;
break;

default:
break;
}
}
}

int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA);
glutInitWindowSize(600,620);
glutInitWindowPosition(0, 0);
glutCreateWindow("Cadenas Dibujadas");
glutDisplayFunc(Escena);
glutMouseFunc (BotonApretado);
glutMainLoop();
return 0;
}

No hay comentarios: