Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<windows.h>
- #include<GL/glut.h>
- #include<stdio.h>
- //dynamic
- float x1=0.05,x2=0.05,x3=-0.05,x4=-0.05;
- float y1=0.05,y2=-0.05,y3=-0.05,y4=0.05;
- //right
- float Xmin=0.7,Xmax=0.9,Ymin=0.5,Ymax=0.7;
- //left
- float Xmin1=0.1,Xmax1=0.4,Ymin1=0.7,Ymax1=0.9;
- //down --
- float Xmin2=-0.3,Ymin2=-0.3,Xmax2=-0.1,Ymax2=-0.1;
- float Amax,Amin,Bmax,Bmin;
- float dx=0,dy=0;
- void display()
- {
- glClear(GL_COLOR_BUFFER_BIT);
- //Static -- right
- glBegin(GL_QUADS);
- glColor3f(1,1,1);
- glVertex2d(Xmin,Ymax);
- glVertex2d(Xmax,Ymax);
- glColor3f(1,0,2);
- glVertex2d(Xmax,Ymin);
- glVertex2d(Xmin,Ymin);
- glEnd();
- glFlush();
- //left
- glBegin(GL_QUADS);
- glColor3f(1,0,1);
- glVertex2d(Xmin1,Ymax1);
- glVertex2d(Xmax1,Ymax1);
- glColor3f(1,1,0);
- glVertex2d(Xmax1,Ymin1);
- glVertex2d(Xmin1,Ymin1);
- glEnd();
- glFlush();
- //Red- below obj------
- glBegin(GL_QUADS);
- glColor3f(1,0,0);
- glVertex2d(Xmin2,Ymax2);
- glVertex2d(Xmax2,Ymax2);
- glVertex2d(Xmax2,Ymin2);
- glVertex2d(Xmin2,Ymin2);
- glEnd();
- glFlush();
- //dynamic
- glColor3f(1,1,1);
- glBegin(GL_QUADS);
- glVertex2d(x1+dx,y1+dy);
- glVertex2d(x2+dx,y2+dy);
- glVertex2d(x3+dx,y3+dy);
- glVertex2d(x4+dx,y4+dy);
- glEnd();
- glFlush();
- glutSwapBuffers();
- }
- void vanish(int x){
- if(x==1){
- Xmin=0;
- Xmax=0;
- Ymin=0;
- Ymax=0;
- }
- else if(x==2){
- Xmin1=0;
- Xmax1=0;
- Ymin1=0;
- Ymax1=0;
- }
- else if(x==3){
- Xmin2=0;
- Xmax2=0;
- Ymin2=0;
- Ymax2=0;
- }
- }
- void check()
- {
- Amax = x2+dx;
- Bmax = y1+dy;
- Amin = x3+dx; ///not x1+dx ///*************
- Bmin = y3+dy;
- /*** for object3 ***/ ///Only this obj is fixed
- if((Amin<=Xmax2) && (Amax>=Xmin2) && (Bmin<=Ymax2) && (Bmax>=Ymin2)){ ///***********
- vanish(3);
- }
- /*** for object1 ***/
- if((Amax>=Xmin)&&(Amax<=Xmax)&&(Bmax>=Ymin)&&(Bmax<=Ymax))
- {
- vanish(1);
- }
- else if((Amax>=Xmin)&&(Amax<=Xmax)&&(Bmin<=Ymax)&&(Bmin>=Ymin))
- {
- vanish(1);
- }
- /*** for object2 ***/
- if((Amax>=Xmin1)&&(Amax<=Xmax1)&&(Bmax>=Ymin1)&&(Bmax<=Ymax1))
- {
- vanish(2);
- }
- else if((Amax>=Xmin1)&&(Amax<=Xmax1)&&(Bmin<=Ymax1)&&(Bmin>=Ymin1))
- {
- vanish(2);
- }
- }
- void keyboard(unsigned char key,int x, int y)
- {
- switch(key)
- {
- case 'w':
- {
- dy=dy+0.01;
- check();
- glutPostRedisplay();
- break;
- }
- case 's':
- {
- dy=dy-0.01;
- check();
- glutPostRedisplay();
- break;
- }
- case 'a':
- {
- dx=dx-0.01;
- check();
- glutPostRedisplay();
- break;
- }
- case 'd':
- {
- dx=dx+0.01;
- check();
- glutPostRedisplay();
- break;
- }
- }
- }
- int main(int argc, char **argv)
- {
- glutInit(&argc,argv);
- glutInitWindowSize(600,600);
- glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
- glutInitWindowPosition(100,100);
- glutCreateWindow("Cse lab");
- glutDisplayFunc(display);
- glutKeyboardFunc(keyboard);
- glutMainLoop();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement