Source code
//global variable
double mainangle=0;
double triAngl = 0;
double xBox=0, yBox =0;
float r=0,g=0,b=1;
// key press
void specialKeyListener(int key, int x,int y)
{
switch(key)
{
case GLUT_KEY_DOWN:
//yBox-=0.5;
if(yBox >= -78){
yBox-=0.5;
}
triAngl = 180;
if( (xBox >= 30 && xBox<= 40 ) && (yBox >= 5 && yBox <=10) ){
r = 1;
g = 0;
b =0;
}
else if((xBox >= -40 && xBox<= -30 ) && (yBox >= 5 && yBox <=10)) {
r = 0;
g = 1;
b =0;
} //down arrow key
break;
case GLUT_KEY_UP:
if(yBox <= 50){
yBox+=0.5;
}
triAngl = 0;
if( (xBox >= 30 && xBox<= 40 ) && (yBox >= 5 && yBox <=10) ){
r = 1;
g = 0;
b =0;
}
else if((xBox >= -40 && xBox<= -30 ) && (yBox >= 5 && yBox <=10)) {
r = 0;
g = 1;
b =0;
} // up arrow key
break;
case GLUT_KEY_RIGHT:
if(xBox<=78){
xBox += 0.5;
}
triAngl = -90;
if( (xBox >= 30 && xBox<= 40 ) && (yBox >= 5 && yBox <=10) ){
r = 1;
g = 0;
b =0;
}else if((xBox >= -40 && xBox<= -30 ) && (yBox >= 5 && yBox <=10)) {
r = 0;
g = 1;
b =0;
}
break;
case GLUT_KEY_LEFT:
if(xBox >= -78){
xBox -= 0.5;
}
triAngl = 90;
if( (xBox >= 30 && xBox<= 40 ) && (yBox >= 5 && yBox <=10) ){
r = 1;
g = 0;
b =0;
}else if((xBox >= -40 && xBox<= -30 ) && (yBox >= 5 && yBox <=10)) {
r = 0;
g = 1;
b =0;
}
break;
case GLUT_KEY_PAGE_UP:
break;
case GLUT_KEY_PAGE_DOWN:
//code
break;
case GLUT_KEY_INSERT:
break;
case GLUT_KEY_HOME:
break;
case GLUT_KEY_END:
break;
default:
break;
}
}
//All Draw Function Start
void drawCharBox()
{
glTranslatef(xBox,yBox,0);
glColor3f(r, g, b);
glBegin(GL_QUADS);
{
glVertex3f( -5, 5,0);
glVertex3f( 5,5,0);
glVertex3f( 5,-5,0);
glVertex3f(-5, -5,0);
}
glEnd();
}
void drawCharTri()
{
glTranslatef(xBox,yBox,0);
glRotatef(triAngl,0,0,1);
glBegin(GL_TRIANGLES);
{
glColor3f(1.0, 0.0, 0.0);
glVertex3f( -6, 5,0);
glVertex3f( 0,9,0);
glVertex3f( 6,5,0);
}
glEnd();
}
void drawRightBox()
{
glColor3f(1.0, 0.0, 0.0);
glBegin(GL_QUADS);
{
glVertex3f( 30, 10,0);
glVertex3f( 40, 10,0);
glVertex3f( 40, 5,0);
glVertex3f( 30, 5,0);
}
glEnd();
}
void drawLeftBox()
{
glColor3f(0.0, 1.0, 0.0);
glBegin(GL_QUADS);
{
glVertex3f( -30, 10,0);
glVertex3f( -40, 10,0);
glVertex3f( -40, 5,0);
glVertex3f( -30, 5,0);
}
glEnd();
}
void drawBigRectangle(){
glColor3f(1.0, 1.0, 1.0);
glBegin(GL_QUADS);
{
glVertex3f( -90, 60,0);
glVertex3f( 90, 60,0);
glVertex3f( 90, 65,0);
glVertex3f( -90, 65,0);
}
glEnd();
}
//All Draw Function End
// call those function from display function
glPushMatrix();
drawCharBox();
glPopMatrix();
glPushMatrix();
drawCharTri();
glPopMatrix();
drawRightBox();
drawLeftBox();
drawBigRectangle();
Add your comment