we63r54f

Untitled

Jul 24th, 2019
159
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 10.47 KB | None | 0 0
  1. #include <GL/gl.h>
  2. #include <GL/glu.h>
  3. #include <GL/glut.h>
  4. #include <stdio.h>
  5. #include <time.h>
  6. #include <string.h>
  7. #include <unistd.h>
  8. #include <stdlib.h>
  9.  
  10. int flag=0,flag1=0;
  11. float ballX = 0.0,ballY = 0.0,ballZ = -5,hi=0,mv=0;
  12. int pitched,hit=0,count=0;
  13. char spin[10],score[10];
  14. double turn,offX=0,offY=0,offZ=0,midX=0,midY=0,midZ=0,legX=0,legY=0,legZ=0,bX=0,bY=0,bZ=0;
  15. GLdouble mx,my;
  16. GLdouble cord[3];
  17. GLint viewport[4];
  18. GLdouble modelview[16];
  19. GLdouble projection[16];
  20. void start();
  21. void move();
  22. void draw_stumps();
  23. void drawBitmapText(char *string,float x,float y,float z);
  24.  
  25. double random_gen()
  26. {
  27. srand(time(NULL));
  28. double r1=(double)rand()/(double)RAND_MAX;
  29. r1=(r1*2.64)-1.32;
  30. printf("%f\n",r1);
  31. return r1;
  32. }
  33.  
  34. void scorer()
  35. {
  36.     glColor3f(1.0,1.0,1.0);
  37.     sprintf(score, "SCORE : %d", count);
  38.     drawBitmapText(score,3.25,4.0,-6.0);
  39.     if(turn<=0)
  40.         sprintf(spin, "<<<%2.2f", (turn*-5/1.32));
  41.     else
  42.         sprintf(spin, "%2.2f>>>", (turn*5/1.32));
  43.     drawBitmapText(spin,-0.20,4,-6.0);
  44. }
  45.  
  46. //****************************************************************************
  47. //********************************DRAW FUNCTIONS*************************************
  48. //****************************************************************************
  49. void frontscreen()
  50. {
  51.      drawBitmapText("PESIT - BSC ",-0.60,4,-6.0);
  52.     glColor3f(0.7,0,1);
  53.      drawBitmapText("DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING",-1.90,3.5,-6.0);
  54.     //glColor3f(1,0.5,0);
  55.      //drawBitmapText("A MINI PROJECT ON",-0.75,3,-6.0);
  56.     glColor3f(1,0,0);
  57.      drawBitmapText("HOWZZZ THAT!!",-0.65,2.5,-6.0);
  58.     glColor3f(1,0.5,0);
  59.      drawBitmapText("BY:",-0.2,2,-6.0);
  60.     glColor3f(0.5,0,0.5);
  61.      drawBitmapText("SOURAV PODDAR (1PE14CS142)",-1.05,1.5,-6.0);
  62.     glColor3f(0.5,0,0.5);
  63.      drawBitmapText("SOMYA BANSAL (1PE14CS140)",-1,1,-6.0);
  64.     glColor3f(0,0,0);
  65.      drawBitmapText("PRESS ENTER TO START",-0.80,-2,-6.0);
  66.     glColor3f(0.0,0.0,0.0);
  67.      drawBitmapText("INSTRUCTIONS  FOR  THE  GAME",-01.1,0,-6.0);
  68.     glColor3f(0,0,1);
  69.      drawBitmapText("* The spin for each of the ball will be displayed at top-centre position.",-2.8,-0.5,-6.0);
  70.     glColor3f(0,0,1);
  71.      drawBitmapText("* You need to pitch the ball using mouse clicks, taking the spin into account so as to hit the stumps.",-2.8,-1,-6);
  72.     glColor3f(0.0,0.0,01.0);
  73.      drawBitmapText("* Pitch the ball on the white strip for best results.Break 'em all!! :)",-2.8,-1.5,-6);
  74.     glColor3f(0.0,0.0,0.0);
  75.      //drawBitmapText("PRESS  'p' TO  PLAY",-0.8,0,-6);
  76. }
  77.  
  78.  
  79. void drawBall(float ballX,float ballY,float ballZ) {
  80.         //glColor3f(1.0, 0.0, 0.0); //set ball colour
  81.         glTranslatef(ballX,ballY,ballZ); //moving it toward the screen a bit on creation
  82.         glutSolidSphere (0.06, 20, 20); //create ball.
  83. }
  84.  
  85. void draw_middle_stump()
  86. {
  87. //middle stump
  88.     glColor3f(0.502, 0.502, 0.000);
  89.     glLineWidth(5.40);
  90.     if(hit==1)
  91.     {midX=midX+0.001;
  92.      midY=midY-0.0015;
  93.      midZ=midZ-0.002;
  94.     glBegin(GL_LINES);
  95.     glVertex3f(0.0,-1,-11.06);
  96.     glVertex3f(0.0+midX,0.0+midY,-11.06+midZ);
  97.     glVertex3f(0.0,-1,-11.16);
  98.     glVertex3f(0.0+midX,0.0+midY,-11.16+midZ);
  99.     glEnd();
  100.  //   printf("middle %f\t%f\n",0.0+posX);
  101.     }
  102.     else{
  103.     glBegin(GL_LINES);
  104.     glVertex3f(0.0,-1,-11.06);
  105.     glVertex3f(0.0,-0.0,-11.06);
  106.     glVertex3f(0.0,-1,-11.16);
  107.     glVertex3f(0.0,-0.0,-11.16);
  108.     glEnd();
  109.     }
  110.  
  111.  
  112. }
  113.  
  114. void draw_off_stump()
  115. {
  116. //off stump
  117.     //glColor3f(0.50,0.50,0.80);
  118.     glLineWidth(5.40);
  119.     if(hit==1)
  120.     {offX=offX-0.004;
  121.      offY=offY-0.0015;
  122.      offZ=offZ-0.002;
  123.     glBegin(GL_LINES);
  124.     glVertex3f(-0.10,-1,-11.06);
  125.     glVertex3f(-0.10+offX,0.0+offY,-11.06+offZ);
  126.     glVertex3f(-0.10,-1,-11.16);
  127.     glVertex3f(-0.10+offX,0.0+offY,-11.16+offZ);
  128.     glEnd();
  129.  //   printf("middle %f\t%f\n",0.0+posX);
  130.     }
  131.     else
  132.     {glBegin(GL_LINES);
  133.     glVertex3f(-0.10,-1,-11.06);
  134.     glVertex3f(-0.10,-0.0,-11.06);
  135.     glVertex3f(-0.10,-1,-11.16);
  136.     glVertex3f(-0.10,-0.0,-11.16);
  137.     glEnd();}
  138. }
  139. void draw_leg_stump()
  140. {
  141. //leg stump
  142.     //glColor3f(1.0,1.0,1.0);
  143.     glLineWidth(5.40);
  144.     if(hit==1)
  145.     {legX=legX+0.002;
  146.      legY=legY-0.001;
  147.      legZ=legZ-0.002;
  148.     glBegin(GL_LINES);
  149.     glVertex3f(0.10,-1,-11.06);
  150.     glVertex3f(0.10+legX,0.0+legY,-11.06+legZ);
  151.     glVertex3f(0.10,-1,-11.16);
  152.     glVertex3f(0.10+legX,0.0+legY,-11.16+legZ);
  153.     glEnd();
  154.  //   printf("middle %f\t%f\n",0.0+posX);
  155.     }
  156.     else
  157.     {
  158.     glBegin(GL_LINES);
  159.     glVertex3f(0.10,-1,-11.06);
  160.     glVertex3f(0.10,-0.0,-11.06);
  161.     glVertex3f(0.10,-1,-11.16);
  162.     glVertex3f(0.10,-0.0,-11.16);
  163.     glEnd();
  164.     }
  165. }
  166. void draw_bails()
  167. {
  168. //bails
  169. glColor3f(1.000, 0.980, 0.941);
  170.     if(hit==1)
  171.     {bX=bX-0.005;
  172.     bY=bY+0.01;
  173.     bZ=bZ-0.04;
  174.     glBegin(GL_LINES);
  175.     glVertex3f(0.015-bX,0.0+bY,-11.06+bZ);
  176.     glVertex3f(0.095-bX,0.0+bY,-11.06+bZ);
  177.     glEnd();
  178.     glBegin(GL_LINES);
  179.     glVertex3f(-0.015+bX,0.0+bY,-11.06+bZ);
  180.     glVertex3f(-0.095+bX,0.0+bY,-11.06+bZ);
  181.     glEnd();
  182.     }
  183.     else
  184.     {
  185.     glBegin(GL_LINES);
  186.     glVertex3f(0.015,0.0,-11.06);
  187.     glVertex3f(0.095,0.0,-11.06);
  188.     glEnd();
  189.     glBegin(GL_LINES);
  190.     glVertex3f(-0.015,0.0,-11.06);
  191.     glVertex3f(-0.095,0.0,-11.06);
  192.     glEnd();
  193.     }
  194. }
  195. void pitch()
  196. {
  197.     glColor3f(0.941,0.902,0.549);
  198.     glBegin(GL_POLYGON);
  199.     glVertex3f(-1.32,-1,-13.28);
  200.     glVertex3f(1.32,-1,-13.28);
  201.     glVertex3f(1.32,-1,13.28);
  202.     glVertex3f(-1.32,-1,13.28);
  203.     glEnd();
  204.     //crease
  205.     glColor3f(1.0,1.0,1.0);
  206.     glBegin(GL_POLYGON);
  207.     glVertex3f(-1.50,-1,-9.0);
  208.     glVertex3f(1.50,-1,-9.0);
  209.     glVertex3f(1.50,-1,-9.1);
  210.     glVertex3f(-1.50,-1,-9.1);
  211.     glEnd();
  212.     glColor3f(1.0,1.0,1.0);
  213.     glBegin(GL_POLYGON);
  214.     glVertex3f(-1.32,-1,-10.90);
  215.     glVertex3f(1.32,-1,-10.90);
  216.     glVertex3f(1.32,-1,-11.30);
  217.     glVertex3f(-1.32,-1,-11.30);
  218.     glEnd();
  219.     glBegin(GL_POLYGON);
  220.     glVertex3f(-1.30,-1,-7.50);
  221.     glVertex3f(1.30,-1,-7.50);
  222.     glVertex3f(1.30,-1,-7.90);
  223.     glVertex3f(-1.30,-1,-7.90);
  224.     glEnd();
  225.  
  226.     //wides
  227.     glLineWidth(3.50);
  228.     glBegin(GL_POLYGON);
  229.     glVertex3f(-0.98,-1.0,-13.28);
  230.     glVertex3f(-0.98,-1.0,-9.0);
  231.     glVertex3f(-1.02,-1.0,-9.0);
  232.     glVertex3f(-1.02,-1.0,-13.28);
  233.     glEnd();
  234.     glLineWidth(3.20);
  235.     glBegin(GL_POLYGON);
  236.     glVertex3f(0.98,-1.0,-13.28);
  237.     glVertex3f(0.98,-1.0,-9.0);
  238.     glVertex3f(1.02,-1.0,-9.0);
  239.     glVertex3f(1.02,-1.0,-13.28);
  240.     glEnd();
  241. }
  242. void draw_stumps()
  243. {draw_middle_stump();
  244. draw_leg_stump();
  245. draw_off_stump();
  246. draw_bails();
  247. }
  248. //****************************************************************************
  249. //*********************************MOVEMENT*******************************
  250. //****************************************************************************
  251. void reset()
  252. {
  253. ballX = 0.0,ballY =0.0,ballZ = -5;pitched=0;turn=random_gen();hit=0;
  254. offX=0,offY=0,offZ=0;
  255. midX=0,midY=0,midZ=0;
  256. legX=0,legY=0,legZ=0;
  257. bX=0,bY=0,bZ=0;
  258. glutIdleFunc(start);
  259. }
  260. void before_pitch()
  261. {
  262. hi=-0.01;
  263. mv=mx/100.0;
  264. ballY=ballY+hi;
  265. ballX=ballX+mv;
  266. }
  267. void after_pitch()
  268. {hi=0.008;
  269. mv=turn/100.0;
  270. ballY=ballY+hi;
  271. ballX=ballX+mv;
  272. }
  273. void move()
  274. {   //scorer();
  275.     draw_stumps();
  276.     glColor3f(1.0,0.0,0.0);
  277.     drawBall(ballX,ballY,ballZ);
  278.  
  279.     if (ballY<=-1)
  280.     pitched=1;
  281.     if (pitched == 1)
  282.     after_pitch();
  283.     else
  284.     before_pitch();
  285.  
  286.     if(ballX>=-0.15 && ballX <=0.15 && ballZ<=-11.06 && ballZ >= -11.2)
  287.     {hit=1;printf("****HIT****\n");}
  288.  
  289.     if (ballZ<=-12.0)
  290.     {
  291.     if(hit==0)
  292.     count=0;
  293.     else
  294.     count++;
  295.     glutIdleFunc(NULL);
  296.     sleep(1);
  297.     reset();
  298.  
  299.     //scorer();
  300.     }
  301.     else
  302.     ballZ=ballZ-0.0303;
  303.     glLoadIdentity();
  304.     scorer();
  305.     glFlush ();
  306.     glutPostRedisplay();
  307. }
  308. void start()
  309. {
  310.     flag1=1;
  311.     draw_stumps();
  312.     glLoadIdentity();
  313.     scorer();
  314.     //pitch();
  315.     glFlush ();
  316.     glutPostRedisplay();
  317.     //pitch();
  318.  
  319. }
  320. //****************************************************************************
  321. //*********************************OPENGL FUNCS***********************************
  322. //****************************************************************************
  323. void drawBitmapText(char *string,float x,float y,float z)
  324. {
  325. char *c;
  326. glRasterPos3f(x, y,z);
  327. for (c=string; *c != '\0'; c++)
  328.     {
  329.     glColor3f(1.0,1.0,1.0);
  330.     glutBitmapCharacter(GLUT_BITMAP_HELVETICA_18, *c);
  331.     }
  332. }
  333.  
  334. void mouse(int btn, int state, int x, int y)
  335. {
  336. /* mouse callback, selects an axis about which to rotate */
  337. if(btn==GLUT_LEFT_BUTTON && state == GLUT_DOWN)
  338.     {mx=(((x-252)*2.64)/760)-1.32;my=y;
  339.     //printf("%f\t%f\n",mx,my);
  340.     glutIdleFunc(move);
  341.     }
  342. }
  343.  
  344. void mykeyboard(unsigned char key, int x, int y)
  345. {
  346.     if(key==13)
  347.         {
  348.         glutIdleFunc(start);
  349.         }
  350. }
  351. void dynam()
  352. {
  353.     if(flag==0)
  354.         {
  355.             frontscreen();
  356.             flag=1;
  357.             glFlush();
  358.         }
  359.         else if(flag1==1)
  360.         {
  361.             glColor3f (1.0, 1.0, 1.0);
  362.             glLoadIdentity ();   /* clear the matrix */
  363.             /* viewing transformation  */
  364.             gluLookAt (/*camera position*/0.0, -0.4, -5.0,/*dekh yaha*/ 0.0, 0.0, -10.0,/*camera handle*/ 0.0, 1.0, 0.10);
  365.             //draw_stumps();
  366.             pitch();
  367.             //glutPostRedisplay();
  368.         }
  369. }
  370. void init(void)
  371. {
  372.    glClearColor (0.196, 0.804, 0.196, 1.0);
  373.    glShadeModel(GL_FLAT);
  374.    turn=random_gen();
  375.    //glutIdleFunc(start);
  376. }
  377. void display(void)
  378. {
  379.     glClear (GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
  380.     dynam();
  381. }
  382.  
  383. void reshape (int w, int h)
  384. {
  385.    glViewport (0, 0, (GLsizei) w, (GLsizei) h);
  386.    glGetIntegerv( GL_VIEWPORT, viewport );
  387.    glMatrixMode (GL_PROJECTION);
  388.    glGetDoublev( GL_PROJECTION_MATRIX, projection );
  389.    glLoadIdentity ();
  390.    gluPerspective(75.0,(float)(w/h),0.0,22.0);
  391.    glMatrixMode (GL_MODELVIEW);
  392.    glGetDoublev( GL_MODELVIEW_MATRIX, modelview );
  393.    turn=random_gen();
  394.    glutIdleFunc(dynam);
  395. }
  396.  
  397. int main(int argc, char** argv)
  398. {
  399.    glutInit(&argc, argv);
  400.    glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
  401.    glutInitWindowSize (1260, 720);
  402.    glutInitWindowPosition (0, 0);
  403.    glutCreateWindow (argv[0]);
  404.    init();
  405.    glutDisplayFunc(display);
  406.    glutReshapeFunc(reshape);
  407.    glutMouseFunc(mouse);
  408.    glutKeyboardFunc(mykeyboard);
  409.    //glutIdleFunc(start);
  410.    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
  411.    glEnable(GL_BLEND);
  412.    glEnable(GL_LINE_SMOOTH);
  413.    glutMainLoop();
  414.    return 0;
  415. }
Advertisement
Add Comment
Please, Sign In to add comment