Solved programming problem

Animation (Online - 02)

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();
Join the discussion

Add your comment