void Display() { glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(-640,640,-500,500,-2000,2000); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt(cameraCenterx,cameraCentery,cameraCenterz,640,350,200,0,1,0); glClear(GL_COLOR_BUFFER_BIT); glPushMatrix(); glTranslated(0,0,cannonStep); DrawCannon(); glPopMatrix(); glFlush(); }
int main (void) { const double YS_PI=3.1415927; FsOpenWindow(16, 16, 800, 600, 1); int ObstaclesState[5]; int x1[5], y1[5], x2[5], y2[5]; int Point[10000];//trajectory int p[10000],q[10000];//trajectory srand((unsigned)time(NULL)); // for(int i=0;i<10000;i++) // { // Point[i]=1; // }//draw points for(int i=0;i<5;++i) { x1[i]=rand()%720; y1[i]=rand()%520; x2[i]=x1[i]+80+rand()%70; y2[i]=y1[i]+80+rand()%70; ObstaclesState[i]=1; } int terminate=0; int y=0; int x=30; int a=55; int b=545; double m=1.0; double dt=0.025; int CannonballState=0; int angle=30; double vx; double vy; int Hit=0; int TargetState=1; while(0==terminate) { FsPollDevice(); angle++; if(angle>=90) angle=0; int key=FsInkey(); if(FSKEY_ESC==key) { terminate=1; } else if(FSKEY_SPACE==key) { if(0==CannonballState) { CannonballState=1; vx=cos(angle*YS_PI/180)*400; vy=-sin(angle*YS_PI/180)*400; } } //draw screen glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); if(0!=ObstaclesState) { for(int i=0; i<5; ++i) { if(0!=ObstaclesState[i]) { DrawObstacles(x1[i],y1[i],x2[i],y2[i]); if(0!=CannonballState && 0!=CheckCollision(a, b, x1[i], y1[i], x2[i], y2[i])) { printf("Hit An Obstacle!\n"); ObstaclesState[i]=0; CannonballState=0; Hit=1; a=55; b=545; } } if(0!=Hit) { DrawObstacles2(x1[i],y1[i],x2[i],y2[i]); } } } if(0!=TargetState) { if(0!=CannonballState && 0!=CheckHit(a, b, y)) { printf("HitTarget!\n"); TargetState=0; CannonballState=0; break; } } DrawCannonLine(x); RotateCannonline(x, 90); DrawCannon(); DrawTarget(y); MoveTarget(y, 600); if(0!=CannonballState) { DrawCannonball(a, b); MoveCannonball(a, b, vx, vy, m, dt); // for(int i=0;i<10000;i++) // { // Point[i]=1; // }//draw points // if(0!=Point)//not working // { for(int i=0; i<10000; ++i) { // if(0!=Point[i]) // { p[i]=a; // printf("%d\n",a); q[i]=b; // DrawTrajectory(p[i], q[i]); /// } // } } if(a>800||b>600) { CannonballState=0; a=55; b=545; } } FsSwapBuffers(); FsSleep(25); } return 0; }