Advertisement
Guest User

Untitled

a guest
Aug 24th, 2017
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 33.29 KB | None | 0 0
  1. //Base File was taken from circle.cpp end edited to make it in to my boat game.
  2.  
  3. # include <cmath>
  4. # include <iostream>
  5. # include <GL/glew.h>
  6. # include <GL/freeglut.h>
  7. # include <GL/glext.h>
  8. # include <glm.hpp>
  9. #include <gtx/rotate_vector.hpp>
  10. #pragma comment(lib, "glew32.lib")
  11.  
  12. using namespace glm;
  13. using namespace std;
  14.  
  15. static float camx = 0;
  16. static float camy = 40.0f;
  17. vec3 boatPosition (0,0,0);
  18. float anglex = 0.0, angley = 0.0;
  19. vec3 header(0, 0, -1);
  20. int lasttime = 0;
  21. int currenttime = 0;
  22. float deltatime = 0;
  23. float acceleration = 0.0f;
  24. vec3 velocity(0, 0, 0);
  25. void equation(void);
  26.  
  27. // Drawing routine.
  28. void drawScene(void)
  29. {
  30. glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  31. glLoadIdentity();
  32. glColor3f(0, 0, 1);// Water
  33.  
  34. currenttime = glutGet(GLUT_ELAPSED_TIME);
  35. deltatime = (currenttime - lasttime) / 1000.0f; // }this is how i worked out delta time for the gane.
  36. lasttime = currenttime;
  37.  
  38. //equation();
  39.  
  40. // This is the starting location of my boat. This is where it will staryt when the game initializes
  41. gluLookAt(boatPosition.x-(header.x*15), 15, boatPosition.z-(header.z*15) , // the position of the camara
  42. boatPosition.x,boatPosition.y,boatPosition.z,// where the camara is looking
  43. 0.0,1.0,0.0);//the oriantation of the camara is the way you want it
  44.  
  45. /////////////////////////////////////////////////////////////////////////lighting////////////////////////////////////////////////////////////////////////////////////////
  46.  
  47. //the material properties of the boat
  48. float boatAmb[] = { 0.98,0.98,0.0, 1.0 };
  49. float boatDif[] = { 0.98,0.98,0.0, 1.0 };
  50. float boatSpec[] = { 1, 1, 1, 1.0 };
  51. float boatShine[] = { 50 };
  52. float boatEmission[] = { 0.0, 0.0, 0, 1.0 };
  53. //the material properties of the boyes
  54. float boeysAmb[] = { 0.95, 0.56, 0.26, 1.0 };
  55. float boeysDif[] = { 0.95, 0.56, 0.26, 1.0 };
  56. float boeysSpec[] = { 1, 1, 1, 1.0 };
  57. float boeysShine[] = { 50 };
  58. float boeysEmission[] = { 0.0, 0.0, 0, 1.0 };
  59. //the material properties for water
  60. float waterAmb[] = { 0.0,0.0, 1.0, 1.0 };
  61. float waterDif[] = { 0.0, 0.0, 1.0, 1.0 };
  62. float waterSpec[] = { 1, 1, 1, 1.0 };
  63. float waterShine[] = { 50 };
  64. float waterEmission[] = { 0.0, 0.0, 0, 1.0 };
  65.  
  66. ////////////////////////////////////////////////////////////////////////Acceleration-deceleration////////////////////////////////////////////////////////////////
  67. if (acceleration <= 0.0f)
  68. {
  69. acceleration = 0.0f;
  70. velocity *= 0.9f;
  71. }
  72. else if (acceleration > 0.0f)
  73. {
  74. //cout << "lowering" << endl;
  75.  
  76. acceleration -= 0.05f;
  77. }
  78.  
  79.  
  80. equation();
  81.  
  82. //////////////////////////////////////////////////////////////////////////the creation of my boat/////////////////////////////////////////////////////////////////
  83. ////Material properties of sphere.
  84. glMaterialfv(GL_FRONT, GL_AMBIENT, boatAmb);
  85. glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, boatDif);
  86. glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, boatSpec);
  87. glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, boatShine);
  88. glMaterialfv(GL_FRONT_AND_BACK, GL_EMISSION, boatEmission);
  89.  
  90. glPushMatrix();
  91. glTranslatef(boatPosition.x, 0.0, boatPosition.z);
  92. glRotatef(90.0, 0.0, 1.0, 0.0);
  93. glRotatef(angley, 0.0,1 , 0.0);
  94. glColor3f(0.4, 0.6, 0);// This will then set the colour of the boat
  95. //This is the start of the creation of my boat
  96. //glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
  97. glBegin(GL_TRIANGLE_STRIP);
  98. glNormal3f(0, 1, 0); glVertex3f(0, 7, 0);//0
  99. glVertex3f(0, 0.1, 0);//1
  100. glVertex3f(3, 7, 3);//2
  101. glVertex3f(3, 0.1, 3);//3
  102. glVertex3f(6, 7, 3);//4
  103. glVertex3f(6, 0.1, 3);//5
  104. glVertex3f(9, 7,3);//6
  105. glVertex3f(9, 0.1, 3);//7 //} This section of 16 lines is the front section of my boat
  106. glVertex3f(12, 7, 3);//8
  107. glVertex3f(12, 0.1, 3);//9
  108. glVertex3f(15, 7,3);//10
  109. glVertex3f(15, 0.1,3);//11
  110. glVertex3f(18, 7,3);//12
  111. glVertex3f(18, 0.1,3);//13
  112. glVertex3f(21, 7,0);//14
  113. glVertex3f(21, 0.1, 0);//15
  114. glVertex3f(18, 7, -3);//16
  115. glVertex3f(18, 0.1,-3);//17
  116. glVertex3f(15, 7, -3);//18
  117. glVertex3f(15, 0.1, -3);//19
  118. glVertex3f(12, 7, -3);//20
  119. glVertex3f(12, 0.1, -3);//21
  120. glVertex3f(9, 7, -3);//22 //} This is the start of the back of my BOAT
  121. glVertex3f(9, 0.1, -3);//23
  122. glVertex3f(6, 7, -3);//24
  123. glVertex3f(6, 0.1, -3);//25
  124. glVertex3f(3, 7, -3);//26
  125. glVertex3f(3, 0.1, -3);//27
  126. glVertex3f(0, 7, 0);//28
  127. glVertex3f(0, 0.1, 0);//29
  128. //glPopMatrix();
  129.  
  130. glEnd();
  131. //glPushMatrix();
  132. //glTranslatef(xBoat, 0.0, zBoat);
  133. glBegin(GL_TRIANGLE_STRIP);
  134. glColor3f(0.0, 1.0, 0);// This will then set the colour of the boat
  135. glVertex3f(0, 0.1, 0);//1
  136. glVertex3f(3, 0.1, -3);//27
  137. glVertex3f(3, 0.1, 3);//3
  138. glVertex3f(6,0.1,-3);//25
  139. glVertex3f(6, 0.1, 3);//5
  140. glVertex3f(9,0.1,-3);//23
  141. glVertex3f(9,0.1, 3);//7
  142. glVertex3f(12, 0.1, -3);//23
  143. glVertex3f(12, 0.1, 3);//9
  144. glVertex3f(15, 0.1, -3);//19
  145. glVertex3f(15, 0.1, 3);//11
  146. glVertex3f(18, 0.1, -3);//17
  147. glVertex3f(18, 0.1, 3);//13
  148. glVertex3f(21, 0.1, 0);//15
  149. glEnd();
  150.  
  151. glPopMatrix();
  152.  
  153. ///////////////////////////////////////////////////////////////////the creation of my start and finish line//////////////////////////////////////////////////////
  154.  
  155. //left bar
  156. glPushMatrix();
  157. glBegin(GL_POLYGON);
  158. glVertex3f(-20, -1, -2);
  159. glVertex3f(-18, -1, -2);
  160. glVertex3f(-18, 12, -2);
  161. glVertex3f(-20, 12, -2);
  162. glEnd();
  163. glPopMatrix();
  164.  
  165. //top bar
  166. glPushMatrix();
  167. glBegin(GL_POLYGON);
  168. glVertex3f(-20, 12, -2);
  169. glVertex3f(20, 12, -2);
  170. glVertex3f(20, 14, -2);
  171. glVertex3f(-20, 14, -2);
  172. glEnd();
  173. glPopMatrix();
  174.  
  175. //right bar
  176. glPushMatrix();
  177. glBegin(GL_POLYGON);
  178. glVertex3f(20, 12, -2);
  179. glVertex3f(18, 12, -2);
  180. glVertex3f(18, -1, -2);
  181. glVertex3f(20, -1, -2);
  182. glEnd();
  183. glPopMatrix();
  184.  
  185. /////////////////////////////////////////////////////////////////////////////////the creation of my square bouys//////////////////////////////////////////////////////////////
  186.  
  187. glMaterialfv(GL_FRONT, GL_AMBIENT, boeysAmb);
  188. glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, boeysDif);
  189. glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, boeysSpec);
  190. glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, boeysShine);
  191. glMaterialfv(GL_FRONT_AND_BACK, GL_EMISSION, boeysEmission);
  192.  
  193. // this is the left side of the track that I have made
  194. //front of box
  195. glPushMatrix();
  196. glBegin(GL_POLYGON);
  197. glVertex3f(-15, 0, 0);
  198. glVertex3f(-10, 0, 0);
  199. glVertex3f(-10, 5, 0);
  200. glVertex3f(-15, 5, 0);
  201. glEnd();
  202. glPopMatrix();
  203.  
  204. //back
  205. glPushMatrix();
  206. glBegin(GL_POLYGON);
  207. glVertex3f(-15, 0, -5);
  208. glVertex3f(-10, 0, -5);
  209. glVertex3f(-10, 5, -5);
  210. glVertex3f(-15, 5, -5);
  211. glEnd();
  212. glPopMatrix();
  213.  
  214. //top
  215. glPushMatrix();
  216. glBegin(GL_POLYGON);
  217. glVertex3f(-15, 5, 0);
  218. glVertex3f(-10, 5, 0);
  219. glVertex3f(-10, 5, -5);
  220. glVertex3f(-15, 5, -5);
  221. glEnd();
  222. glPopMatrix();
  223.  
  224. //right
  225. glPushMatrix();
  226. glBegin(GL_POLYGON);
  227. glVertex3f(-10, 0, 0);
  228. glVertex3f(-10, 5, 0);
  229. glVertex3f(-10, 5, -5);
  230. glVertex3f(-10, 0, -5);
  231. glEnd();
  232. glPopMatrix();
  233.  
  234. //left
  235. glPushMatrix();
  236. glBegin(GL_POLYGON);
  237. glVertex3f(-15, 0, 0);
  238. glVertex3f(-15, 0, -5);
  239. glVertex3f(-15, 5, 0);
  240. glVertex3f(-15, 5, -5);
  241. glEnd();
  242. glPopMatrix();
  243.  
  244. // bottom
  245. glPushMatrix();
  246. glBegin(GL_POLYGON);
  247. glVertex3f(-15, 0, 0);
  248. glVertex3f(-10, 0, 0);
  249. glVertex3f(-10, 5, -5);
  250. glVertex3f(-15, 5, -5);
  251. glEnd();
  252. glPopMatrix();
  253.  
  254. //front of mast
  255. glPushMatrix();
  256. glBegin(GL_POLYGON);
  257. glVertex3f(-13, 5, -1);
  258. glVertex3f(-12, 5, -1);
  259. glVertex3f(-12, 10, -1);
  260. glVertex3f(-13,10, -1);
  261. glEnd();
  262. glPopMatrix();
  263.  
  264. //Back of mast
  265. glPushMatrix();
  266. glBegin(GL_POLYGON);
  267. glVertex3f(-13, 5, -3);
  268. glVertex3f(-12, 5, -3);
  269. glVertex3f(-12, 10, -3);
  270. glVertex3f(-13, 10, -3);
  271. glEnd();
  272. glPopMatrix();
  273.  
  274. //right side
  275. glPushMatrix();
  276. glBegin(GL_POLYGON);
  277. glVertex3f(-12, 5, -1);
  278. glVertex3f(-12, 10,-1);
  279. glVertex3f(-12,10,-3);
  280. glVertex3f(-12,5,-3);
  281. glEnd();
  282. glPopMatrix();
  283.  
  284. //left side
  285. glPushMatrix();
  286. glBegin(GL_POLYGON);
  287. glVertex3f(-13, 5, -1);
  288. glVertex3f(-13,10,-1);
  289. glVertex3f(-13, 10, -3);
  290. glVertex3f(-13, 5, -3);
  291. glEnd();
  292. glPopMatrix();
  293.  
  294. //top of mast
  295. glPushMatrix();
  296. glBegin(GL_POLYGON);
  297. glVertex3f(-12, 10, -1);
  298. glVertex3f(-12, 10, -3);
  299. glVertex3f(-13, 10, -3);
  300. glVertex3f(-13, 10, -1);
  301. glEnd();
  302. glPopMatrix();
  303.  
  304. //Bottom of mast
  305. glPushMatrix();
  306. glBegin(GL_POLYGON);
  307. glVertex3f(-12, 5, -1);
  308. glVertex3f(-12, 5, -3);
  309. glVertex3f(-13, 5, -3);
  310. glVertex3f(-13, 5, -1);
  311. glEnd();
  312. glPopMatrix();
  313.  
  314. ////////////////////////////////////////////////////////////////////////////////////////bouy 2///////////////////////////////////////////////////////////////////////
  315. //front of box
  316. glPushMatrix();
  317. glBegin(GL_POLYGON);
  318. glVertex3f(-15, 0, -40);
  319. glVertex3f(-10, 0, -40);
  320. glVertex3f(-10, 5, -40);
  321. glVertex3f(-15, 5, -40);
  322. glEnd();
  323. glPopMatrix();
  324.  
  325. //back
  326. glPushMatrix();
  327. glBegin(GL_POLYGON);
  328. glVertex3f(-15, 0, -45);
  329. glVertex3f(-10, 0, -45);
  330. glVertex3f(-10, 5, -45);
  331. glVertex3f(-15, 5, -45);
  332. glEnd();
  333. glPopMatrix();
  334.  
  335. //top
  336. glPushMatrix();
  337. glBegin(GL_POLYGON);
  338. glVertex3f(-15, 5, -40);
  339. glVertex3f(-10, 5, -40);
  340. glVertex3f(-10, 5, -45);
  341. glVertex3f(-15, 5, -45);
  342. glEnd();
  343. glPopMatrix();
  344.  
  345. //right
  346. glPushMatrix();
  347. glBegin(GL_POLYGON);
  348. glVertex3f(-10, 5, -40);
  349. glVertex3f(-10, 5, -45);
  350. glVertex3f(-10, 0, -45);
  351. glVertex3f(-10, 0, -40);
  352. glEnd();
  353. glPopMatrix();
  354.  
  355. //left
  356. glPushMatrix();
  357. glBegin(GL_POLYGON);
  358. glVertex3f(-15, 0, -40);
  359. glVertex3f(-15, 0, -45);
  360. glVertex3f(-15, 5, -45);
  361. glVertex3f(-15, 5, -40);
  362. glEnd();
  363. glPopMatrix();
  364.  
  365. // bottom
  366. glPushMatrix();
  367. glBegin(GL_POLYGON);
  368. glVertex3f(-15, 0, -40);
  369. glVertex3f(-10, 0, -40);
  370. glVertex3f(-10, 5, -45);
  371. glVertex3f(-15, 5, -45);
  372. glEnd();
  373. glPopMatrix();
  374.  
  375. //front of mast
  376. glPushMatrix();
  377. glBegin(GL_POLYGON);
  378. glVertex3f(-13, 5, -42);
  379. glVertex3f(-12, 5, -42);
  380. glVertex3f(-12, 10, -42);
  381. glVertex3f(-13, 10, -42);
  382. glEnd();
  383. glPopMatrix();
  384.  
  385. //Back of mast
  386. glPushMatrix();
  387. glBegin(GL_POLYGON);
  388. glVertex3f(-13, 5, -43);
  389. glVertex3f(-12, 5, -43);
  390. glVertex3f(-12, 10, -43);
  391. glVertex3f(-13, 10, -43);
  392. glEnd();
  393. glPopMatrix();
  394.  
  395. //right side
  396. glPushMatrix();
  397. glBegin(GL_POLYGON);
  398. glVertex3f(-12, 5, -42);
  399. glVertex3f(-12, 10, -42);
  400. glVertex3f(-12, 10, -43);
  401. glVertex3f(-12, 5, -43);
  402. glEnd();
  403. glPopMatrix();
  404.  
  405. //left side
  406. glPushMatrix();
  407. glBegin(GL_POLYGON);
  408. glVertex3f(-13, 5, -42);
  409. glVertex3f(-13, 10, -42);
  410. glVertex3f(-13, 10, -43);
  411. glVertex3f(-13, 5, -43);
  412. glEnd();
  413. glPopMatrix();
  414.  
  415. //top of mast
  416. glPushMatrix();
  417. glBegin(GL_POLYGON);
  418. glVertex3f(-12, 10, -42);
  419. glVertex3f(-12, 10, -43);
  420. glVertex3f(-13, 10, -43);
  421. glVertex3f(-13, 10, -42);
  422. glEnd();
  423. glPopMatrix();
  424.  
  425. //Bottom of mast
  426. glPushMatrix();
  427. glBegin(GL_POLYGON);
  428. glVertex3f(-12, 5, -42);
  429. glVertex3f(-12, 5, -43);
  430. glVertex3f(-13, 5, -43);
  431. glVertex3f(-13, 5, -42);
  432. glEnd();
  433. glPopMatrix();
  434.  
  435. //////////////////////////////////////////////////////////////////////////////////////bouy 3////////////////////////////////////////////////////////////////
  436. //front of box
  437. glPushMatrix();
  438. glBegin(GL_POLYGON);
  439. glVertex3f(-15, 0, -80);
  440. glVertex3f(-10, 0, -80);
  441. glVertex3f(-10, 5, -80);
  442. glVertex3f(-15, 5, -80);
  443. glEnd();
  444. glPopMatrix();
  445.  
  446. //back
  447. glPushMatrix();
  448. glBegin(GL_POLYGON);
  449. glVertex3f(-15, 0, -85);
  450. glVertex3f(-10, 0, -85);
  451. glVertex3f(-10, 5, -85);
  452. glVertex3f(-15, 5, -85);
  453. glEnd();
  454. glPopMatrix();
  455.  
  456. //top
  457. glPushMatrix();
  458. glBegin(GL_POLYGON);
  459. glVertex3f(-15, 5, -80);
  460. glVertex3f(-10, 5, -80);
  461. glVertex3f(-10, 5, -85);
  462. glVertex3f(-15, 5, -85);
  463. glEnd();
  464. glPopMatrix();
  465.  
  466. //right
  467. glPushMatrix();
  468. glBegin(GL_POLYGON);
  469. glVertex3f(-10, 5, -80);
  470. glVertex3f(-10, 5, -85);
  471. glVertex3f(-10, 0, -85);
  472. glVertex3f(-10, 0, -80);
  473. glEnd();
  474. glPopMatrix();
  475.  
  476. //left
  477. glPushMatrix();
  478. glBegin(GL_POLYGON);
  479. glVertex3f(-15, 0, -80);
  480. glVertex3f(-15, 0, -85);
  481. glVertex3f(-15, 5, -85);
  482. glVertex3f(-15, 5, -80);
  483. glEnd();
  484. glPopMatrix();
  485.  
  486. // bottom
  487. glPushMatrix();
  488. glBegin(GL_POLYGON);
  489. glVertex3f(-15, 0, -80);
  490. glVertex3f(-10, 0, -80);
  491. glVertex3f(-10, 5, -85);
  492. glVertex3f(-15, 5, -85);
  493. glEnd();
  494. glPopMatrix();
  495.  
  496. //front of mast
  497. glPushMatrix();
  498. glBegin(GL_POLYGON);
  499. glVertex3f(-13, 5, -82);
  500. glVertex3f(-12, 5, -82);
  501. glVertex3f(-12, 10, -82);
  502. glVertex3f(-13, 10, -82);
  503. glEnd();
  504. glPopMatrix();
  505.  
  506. //Back of mast
  507. glPushMatrix();
  508. glBegin(GL_POLYGON);
  509. glVertex3f(-13, 5, -83);
  510. glVertex3f(-12, 5, -83);
  511. glVertex3f(-12, 10, -83);
  512. glVertex3f(-13, 10, -83);
  513. glEnd();
  514. glPopMatrix();
  515.  
  516. //right side
  517. glPushMatrix();
  518. glBegin(GL_POLYGON);
  519. glVertex3f(-12, 5, -82);
  520. glVertex3f(-12, 10, -82);
  521. glVertex3f(-12, 10, -83);
  522. glVertex3f(-12, 5, -83);
  523. glEnd();
  524. glPopMatrix();
  525.  
  526. //left side
  527. glPushMatrix();
  528. glBegin(GL_POLYGON);
  529. glVertex3f(-13, 5, -82);
  530. glVertex3f(-13, 10, -82);
  531. glVertex3f(-13, 10, -83);
  532. glVertex3f(-13, 5, -83);
  533. glEnd();
  534. glPopMatrix();
  535.  
  536. //top of mast
  537. glPushMatrix();
  538. glBegin(GL_POLYGON);
  539. glVertex3f(-12, 10, -82);
  540. glVertex3f(-12, 10, -83);
  541. glVertex3f(-13, 10, -83);
  542. glVertex3f(-13, 10, -82);
  543. glEnd();
  544. glPopMatrix();
  545.  
  546. //Bottom of mast
  547. glPushMatrix();
  548. glBegin(GL_POLYGON);
  549. glVertex3f(-12, 5, -82);
  550. glVertex3f(-12, 5, -83);
  551. glVertex3f(-13, 5, -83);
  552. glVertex3f(-13, 5, -82);
  553. glEnd();
  554. glPopMatrix();
  555.  
  556. //////////////////////////////////////////////////////////////////////////////////////bouy 4///////////////////////////////////////////////////////
  557. //front of box
  558. glPushMatrix();
  559. glBegin(GL_POLYGON);
  560. glVertex3f(-15, 0, -120);
  561. glVertex3f(-10, 0, -120);
  562. glVertex3f(-10, 5, -120);
  563. glVertex3f(-15, 5, -120);
  564. glEnd();
  565. glPopMatrix();
  566.  
  567. //back
  568. glPushMatrix();
  569. glBegin(GL_POLYGON);
  570. glVertex3f(-15, 0, -125);
  571. glVertex3f(-10, 0, -125);
  572. glVertex3f(-10, 5, -125);
  573. glVertex3f(-15, 5, -125);
  574. glEnd();
  575. glPopMatrix();
  576.  
  577. //top
  578. glPushMatrix();
  579. glBegin(GL_POLYGON);
  580. glVertex3f(-15, 5, -120);
  581. glVertex3f(-10, 5, -120);
  582. glVertex3f(-10, 5, -125);
  583. glVertex3f(-15, 5, -125);
  584. glEnd();
  585. glPopMatrix();
  586.  
  587. //right
  588. glPushMatrix();
  589. glBegin(GL_POLYGON);
  590. glVertex3f(-10, 5, -120);
  591. glVertex3f(-10, 5, -125);
  592. glVertex3f(-10, 0, -125);
  593. glVertex3f(-10, 0, -120);
  594. glEnd();
  595. glPopMatrix();
  596.  
  597. //left
  598. glPushMatrix();
  599. glBegin(GL_POLYGON);
  600. glVertex3f(-15, 0, -120);
  601. glVertex3f(-15, 0, -125);
  602. glVertex3f(-15, 5, -125);
  603. glVertex3f(-15, 5, -120);
  604. glEnd();
  605. glPopMatrix();
  606.  
  607. // bottom
  608. glPushMatrix();
  609. glBegin(GL_POLYGON);
  610. glVertex3f(-15, 0, -120);
  611. glVertex3f(-10, 0, -120);
  612. glVertex3f(-10, 5, -125);
  613. glVertex3f(-15, 5, -125);
  614. glEnd();
  615. glPopMatrix();
  616.  
  617. //front of mast
  618. glPushMatrix();
  619. glBegin(GL_POLYGON);
  620. glVertex3f(-13, 5, -122);
  621. glVertex3f(-12, 5, -122);
  622. glVertex3f(-12, 10, -122);
  623. glVertex3f(-13, 10, -122);
  624. glEnd();
  625. glPopMatrix();
  626.  
  627. //Back of mast
  628. glPushMatrix();
  629. glBegin(GL_POLYGON);
  630. glVertex3f(-13, 5, -123);
  631. glVertex3f(-12, 5, -123);
  632. glVertex3f(-12, 10, -123);
  633. glVertex3f(-13, 10, -123);
  634. glEnd();
  635. glPopMatrix();
  636.  
  637. //right side
  638. glPushMatrix();
  639. glBegin(GL_POLYGON);
  640. glVertex3f(-12, 5, -122);
  641. glVertex3f(-12, 10, -122);
  642. glVertex3f(-12, 10, -123);
  643. glVertex3f(-12, 5, -123);
  644. glEnd();
  645. glPopMatrix();
  646.  
  647. //left side
  648. glPushMatrix();
  649. glBegin(GL_POLYGON);
  650. glVertex3f(-13, 5, -122);
  651. glVertex3f(-13, 10, -122);
  652. glVertex3f(-13, 10, -123);
  653. glVertex3f(-13, 5, -123);
  654. glEnd();
  655. glPopMatrix();
  656.  
  657. //top of mast
  658. glPushMatrix();
  659. glBegin(GL_POLYGON);
  660. glVertex3f(-12, 10, -122);
  661. glVertex3f(-12, 10, -123);
  662. glVertex3f(-13, 10, -123);
  663. glVertex3f(-13, 10, -122);
  664. glEnd();
  665. glPopMatrix();
  666.  
  667. //Bottom of mast
  668. glPushMatrix();
  669. glBegin(GL_POLYGON);
  670. glVertex3f(-12, 5, -122);
  671. glVertex3f(-12, 5, -123);
  672. glVertex3f(-13, 5, -123);
  673. glVertex3f(-13, 5, -122);
  674. glEnd();
  675. glPopMatrix();
  676.  
  677. /////////////////////////////////////////////////////////////////////////the creation of my square bouys right////////////////////////////////////////////////////////
  678. //This is the creation of the right side of my boys
  679. //front of box
  680. glPushMatrix();
  681. glBegin(GL_POLYGON);
  682. glVertex3f(15, 0, 0);
  683. glVertex3f(10, 0, 0);
  684. glVertex3f(10, 5, 0);
  685. glVertex3f(15, 5, 0);
  686. glEnd();
  687. glPopMatrix();
  688.  
  689. //back
  690. glPushMatrix();
  691. glBegin(GL_POLYGON);
  692. glVertex3f(15, 0, -5);
  693. glVertex3f(10, 0, -5);
  694. glVertex3f(10, 5, -5);
  695. glVertex3f(15, 5, -5);
  696. glEnd();
  697. glPopMatrix();
  698.  
  699. //top
  700. glPushMatrix();
  701. glBegin(GL_POLYGON);
  702. glVertex3f(15, 5, 0);
  703. glVertex3f(10, 5, 0);
  704. glVertex3f(10, 5, -5);
  705. glVertex3f(15, 5, -5);
  706. glEnd();
  707. glPopMatrix();
  708.  
  709. //left
  710. glPushMatrix();
  711. glBegin(GL_POLYGON);
  712. glVertex3f(10, 0, 0);
  713. glVertex3f(10, 5, 0);
  714. glVertex3f(10, 5, -5);
  715. glVertex3f(10, 0, -5);
  716. glEnd();
  717. glPopMatrix();
  718.  
  719. //right
  720. glPushMatrix();
  721. glBegin(GL_POLYGON);
  722. glVertex3f(15, 0, 0);
  723. glVertex3f(15, 0, -5);
  724. glVertex3f(15, 5, 0);
  725. glVertex3f(15, 5, -5);
  726. glEnd();
  727. glPopMatrix();
  728.  
  729. // bottom
  730. glPushMatrix();
  731. glBegin(GL_POLYGON);
  732. glVertex3f(15, 0, 0);
  733. glVertex3f(10, 0, 0);
  734. glVertex3f(10, 5, -5);
  735. glVertex3f(15, 5, -5);
  736. glEnd();
  737. glPopMatrix();
  738.  
  739. //front of mast
  740. glPushMatrix();
  741. glBegin(GL_POLYGON);
  742. glVertex3f(13, 5, -1);
  743. glVertex3f(12, 5, -1);
  744. glVertex3f(12, 10, -1);
  745. glVertex3f(13, 10, -1);
  746. glEnd();
  747. glPopMatrix();
  748.  
  749. //Back of mast
  750. glPushMatrix();
  751. glBegin(GL_POLYGON);
  752. glVertex3f(13, 5, -3);
  753. glVertex3f(12, 5, -3);
  754. glVertex3f(12, 10, -3);
  755. glVertex3f(13, 10, -3);
  756. glEnd();
  757. glPopMatrix();
  758.  
  759. //left side
  760. glPushMatrix();
  761. glBegin(GL_POLYGON);
  762. glVertex3f(12, 5, -1);
  763. glVertex3f(12, 10, -1);
  764. glVertex3f(12, 10, -3);
  765. glVertex3f(12, 5, -3);
  766. glEnd();
  767. glPopMatrix();
  768.  
  769. //right side
  770. glPushMatrix();
  771. glBegin(GL_POLYGON);
  772. glVertex3f(13, 5, -1);
  773. glVertex3f(13, 10, -1);
  774. glVertex3f(13, 10, -3);
  775. glVertex3f(13, 5, -3);
  776. glEnd();
  777. glPopMatrix();
  778.  
  779. //top of mast
  780. glPushMatrix();
  781. glBegin(GL_POLYGON);
  782. glVertex3f(12, 10, -1);
  783. glVertex3f(12, 10, -3);
  784. glVertex3f(13, 10, -3);
  785. glVertex3f(13, 10, -1);
  786. glEnd();
  787. glPopMatrix();
  788.  
  789. //Bottom of mast
  790. glPushMatrix();
  791. glBegin(GL_POLYGON);
  792. glVertex3f(12, 5, -1);
  793. glVertex3f(12, 5, -3);
  794. glVertex3f(13, 5, -3);
  795. glVertex3f(13, 5, -1);
  796. glEnd();
  797. glPopMatrix();
  798.  
  799. ///////////////////////////////////////////////////////////////////////////////////bouy 2///////////////////////////////////////////////////////////
  800. //front of box
  801. glPushMatrix();
  802. glBegin(GL_POLYGON);
  803. glVertex3f(15, 0, -40);
  804. glVertex3f(10, 0, -40);
  805. glVertex3f(10, 5, -40);
  806. glVertex3f(15, 5, -40);
  807. glEnd();
  808. glPopMatrix();
  809.  
  810. //back
  811. glPushMatrix();
  812. glBegin(GL_POLYGON);
  813. glVertex3f(15, 0, -45);
  814. glVertex3f(10, 0, -45);
  815. glVertex3f(10, 5, -45);
  816. glVertex3f(15, 5, -45);
  817. glEnd();
  818. glPopMatrix();
  819.  
  820. //top
  821. glPushMatrix();
  822. glBegin(GL_POLYGON);
  823. glVertex3f(15, 5, -40);
  824. glVertex3f(10, 5, -40);
  825. glVertex3f(10, 5, -45);
  826. glVertex3f(15, 5, -45);
  827. glEnd();
  828. glPopMatrix();
  829.  
  830. //left
  831. glPushMatrix();
  832. glBegin(GL_POLYGON);
  833. glVertex3f(10, 5, -40);
  834. glVertex3f(10, 5, -45);
  835. glVertex3f(10, 0, -45);
  836. glVertex3f(10, 0, -40);
  837. glEnd();
  838. glPopMatrix();
  839.  
  840. //right
  841. glPushMatrix();
  842. glBegin(GL_POLYGON);
  843. glVertex3f(15, 0, -40);
  844. glVertex3f(15, 0, -45);
  845. glVertex3f(15, 5, -45);
  846. glVertex3f(15, 5, -40);
  847. glEnd();
  848. glPopMatrix();
  849.  
  850. // bottom
  851. glPushMatrix();
  852. glBegin(GL_POLYGON);
  853. glVertex3f(15, 0, -40);
  854. glVertex3f(10, 0, -40);
  855. glVertex3f(10, 5, -45);
  856. glVertex3f(15, 5, -45);
  857. glEnd();
  858. glPopMatrix();
  859.  
  860. //front of mast
  861. glPushMatrix();
  862. glBegin(GL_POLYGON);
  863. glVertex3f(13, 5, -42);
  864. glVertex3f(12, 5, -42);
  865. glVertex3f(12, 10, -42);
  866. glVertex3f(13, 10, -42);
  867. glEnd();
  868. glPopMatrix();
  869.  
  870. //Back of mast
  871. glPushMatrix();
  872. glBegin(GL_POLYGON);
  873. glVertex3f(13, 5, -43);
  874. glVertex3f(12, 5, -43);
  875. glVertex3f(12, 10, -43);
  876. glVertex3f(13, 10, -43);
  877. glEnd();
  878. glPopMatrix();
  879.  
  880. //left side
  881. glPushMatrix();
  882. glBegin(GL_POLYGON);
  883. glVertex3f(12, 5, -42);
  884. glVertex3f(12, 10, -42);
  885. glVertex3f(12, 10, -43);
  886. glVertex3f(12, 5, -43);
  887. glEnd();
  888. glPopMatrix();
  889.  
  890. //right side
  891. glPushMatrix();
  892. glBegin(GL_POLYGON);
  893. glVertex3f(13, 5, -42);
  894. glVertex3f(13, 10, -42);
  895. glVertex3f(13, 10, -43);
  896. glVertex3f(13, 5, -43);
  897. glEnd();
  898. glPopMatrix();
  899.  
  900. //top of mast
  901. glPushMatrix();
  902. glBegin(GL_POLYGON);
  903. glVertex3f(12, 10, -42);
  904. glVertex3f(12, 10, -43);
  905. glVertex3f(13, 10, -43);
  906. glVertex3f(13, 10, -42);
  907. glEnd();
  908. glPopMatrix();
  909.  
  910. //Bottom of mast
  911. glPushMatrix();
  912. glBegin(GL_POLYGON);
  913. glVertex3f(12, 5, -42);
  914. glVertex3f(12, 5, -43);
  915. glVertex3f(13, 5, -43);
  916. glVertex3f(13, 5, -42);
  917. glEnd();
  918. glPopMatrix();
  919.  
  920. /////////////////////////////////////////////////////////////////////////////////bouy 3/////////////////////////////////////////////////////////////////////
  921. //front of box
  922. glPushMatrix();
  923. glBegin(GL_POLYGON);
  924. glVertex3f(15, 0, -80);
  925. glVertex3f(10, 0, -80);
  926. glVertex3f(10, 5, -80);
  927. glVertex3f(15, 5, -80);
  928. glEnd();
  929. glPopMatrix();
  930.  
  931. //back
  932. glPushMatrix();
  933. glBegin(GL_POLYGON);
  934. glVertex3f(15, 0, -85);
  935. glVertex3f(10, 0, -85);
  936. glVertex3f(10, 5, -85);
  937. glVertex3f(15, 5, -85);
  938. glEnd();
  939. glPopMatrix();
  940.  
  941. //top
  942. glPushMatrix();
  943. glBegin(GL_POLYGON);
  944. glVertex3f(15, 5, -80);
  945. glVertex3f(10, 5, -80);
  946. glVertex3f(10, 5, -85);
  947. glVertex3f(15, 5, -85);
  948. glEnd();
  949. glPopMatrix();
  950.  
  951. //left
  952. glPushMatrix();
  953. glBegin(GL_POLYGON);
  954. glVertex3f(10, 5, -80);
  955. glVertex3f(10, 5, -85);
  956. glVertex3f(10, 0, -85);
  957. glVertex3f(10, 0, -80);
  958. glEnd();
  959. glPopMatrix();
  960.  
  961. //right
  962. glPushMatrix();
  963. glBegin(GL_POLYGON);
  964. glVertex3f(15, 0, -80);
  965. glVertex3f(15, 0, -85);
  966. glVertex3f(15, 5, -85);
  967. glVertex3f(15, 5, -80);
  968. glEnd();
  969. glPopMatrix();
  970.  
  971. // bottom
  972. glPushMatrix();
  973. glBegin(GL_POLYGON);
  974. glVertex3f(15, 0, -80);
  975. glVertex3f(10, 0, -80);
  976. glVertex3f(10, 5, -85);
  977. glVertex3f(15, 5, -85);
  978. glEnd();
  979. glPopMatrix();
  980.  
  981. //front of mast
  982. glPushMatrix();
  983. glBegin(GL_POLYGON);
  984. glVertex3f(13, 5, -82);
  985. glVertex3f(12, 5, -82);
  986. glVertex3f(12, 10, -82);
  987. glVertex3f(13, 10, -82);
  988. glEnd();
  989. glPopMatrix();
  990.  
  991. //Back of mast
  992. glPushMatrix();
  993. glBegin(GL_POLYGON);
  994. glVertex3f(13, 5, -83);
  995. glVertex3f(12, 5, -83);
  996. glVertex3f(12, 10, -83);
  997. glVertex3f(13, 10, -83);
  998. glEnd();
  999. glPopMatrix();
  1000.  
  1001. //left side
  1002. glPushMatrix();
  1003. glBegin(GL_POLYGON);
  1004. glVertex3f(12, 5, -82);
  1005. glVertex3f(12, 10, -82);
  1006. glVertex3f(12, 10, -83);
  1007. glVertex3f(12, 5, -83);
  1008. glEnd();
  1009. glPopMatrix();
  1010.  
  1011. //right side
  1012. glPushMatrix();
  1013. glBegin(GL_POLYGON);
  1014. glVertex3f(13, 5, -82);
  1015. glVertex3f(13, 10, -82);
  1016. glVertex3f(13, 10, -83);
  1017. glVertex3f(13, 5, -83);
  1018. glEnd();
  1019. glPopMatrix();
  1020.  
  1021. //top of mast
  1022. glPushMatrix();
  1023. glBegin(GL_POLYGON);
  1024. glVertex3f(12, 10, -82);
  1025. glVertex3f(12, 10, -83);
  1026. glVertex3f(13, 10, -83);
  1027. glVertex3f(13, 10, -82);
  1028. glEnd();
  1029. glPopMatrix();
  1030.  
  1031. //Bottom of mast
  1032. glPushMatrix();
  1033. glBegin(GL_POLYGON);
  1034. glVertex3f(12, 5, -82);
  1035. glVertex3f(12, 5, -83);
  1036. glVertex3f(13, 5, -83);
  1037. glVertex3f(13, 5, -82);
  1038. glEnd();
  1039. glPopMatrix();
  1040.  
  1041. ///////////////////////////////////////////////////////////////////////////////////////////bouy 4////////////////////////////////////////////////////////////////////////////
  1042. //front of box
  1043. glPushMatrix();
  1044. glBegin(GL_POLYGON);
  1045. glVertex3f(15, 0, -120);
  1046. glVertex3f(10, 0, -120);
  1047. glVertex3f(10, 5, -120);
  1048. glVertex3f(15, 5, -120);
  1049. glEnd();
  1050. glPopMatrix();
  1051.  
  1052. //back
  1053. glPushMatrix();
  1054. glBegin(GL_POLYGON);
  1055. glVertex3f(15, 0, -125);
  1056. glVertex3f(10, 0, -125);
  1057. glVertex3f(10, 5, -125);
  1058. glVertex3f(15, 5, -125);
  1059. glEnd();
  1060. glPopMatrix();
  1061.  
  1062. //top
  1063. glPushMatrix();
  1064. glBegin(GL_POLYGON);
  1065. glVertex3f(15, 5, -120);
  1066. glVertex3f(10, 5, -120);
  1067. glVertex3f(10, 5, -125);
  1068. glVertex3f(15, 5, -125);
  1069. glEnd();
  1070. glPopMatrix();
  1071.  
  1072. //left
  1073. glPushMatrix();
  1074. glBegin(GL_POLYGON);
  1075. glVertex3f(10, 5, -120);
  1076. glVertex3f(10, 5, -125);
  1077. glVertex3f(10, 0, -125);
  1078. glVertex3f(10, 0, -120);
  1079. glEnd();
  1080. glPopMatrix();
  1081.  
  1082. //right
  1083. glPushMatrix();
  1084. glBegin(GL_POLYGON);
  1085. glVertex3f(15, 0, -120);
  1086. glVertex3f(15, 0, -125);
  1087. glVertex3f(15, 5, -125);
  1088. glVertex3f(15, 5, -120);
  1089. glEnd();
  1090. glPopMatrix();
  1091.  
  1092. // bottom
  1093. glPushMatrix();
  1094. glBegin(GL_POLYGON);
  1095. glVertex3f(15, 0, -120);
  1096. glVertex3f(10, 0, -120);
  1097. glVertex3f(10, 5, -125);
  1098. glVertex3f(15, 5, -125);
  1099. glEnd();
  1100. glPopMatrix();
  1101.  
  1102. //front of mast
  1103. glPushMatrix();
  1104. glBegin(GL_POLYGON);
  1105. glVertex3f(13, 5, -122);
  1106. glVertex3f(12, 5, -122);
  1107. glVertex3f(12, 10, -122);
  1108. glVertex3f(13, 10, -122);
  1109. glEnd();
  1110. glPopMatrix();
  1111.  
  1112. //Back of mast
  1113. glPushMatrix();
  1114. glBegin(GL_POLYGON);
  1115. glVertex3f(13, 5, -123);
  1116. glVertex3f(12, 5, -123);
  1117. glVertex3f(12, 10, -123);
  1118. glVertex3f(13, 10, -123);
  1119. glEnd();
  1120. glPopMatrix();
  1121.  
  1122. //leftside
  1123. glPushMatrix();
  1124. glBegin(GL_POLYGON);
  1125. glVertex3f(12, 5, -122);
  1126. glVertex3f(12, 10, -122);
  1127. glVertex3f(12, 10, -123);
  1128. glVertex3f(12, 5, -123);
  1129. glEnd();
  1130. glPopMatrix();
  1131.  
  1132. //right side
  1133. glPushMatrix();
  1134. glBegin(GL_POLYGON);
  1135. glVertex3f(13, 5, -122);
  1136. glVertex3f(13, 10, -122);
  1137. glVertex3f(13, 10, -123);
  1138. glVertex3f(13, 5, -123);
  1139. glEnd();
  1140. glPopMatrix();
  1141.  
  1142. //top of mast
  1143. glPushMatrix();
  1144. glBegin(GL_POLYGON);
  1145. glVertex3f(12, 10, -122);
  1146. glVertex3f(12, 10, -123);
  1147. glVertex3f(13, 10, -123);
  1148. glVertex3f(13, 10, -122);
  1149. glEnd();
  1150. glPopMatrix();
  1151.  
  1152. //Bottom of mast
  1153. glPushMatrix();
  1154. glBegin(GL_POLYGON);
  1155. glVertex3f(12, 5, -122);
  1156. glVertex3f(12, 5, -123);
  1157. glVertex3f(13, 5, -123);
  1158. glVertex3f(13, 5, -122);
  1159. glEnd();
  1160. glPopMatrix();
  1161.  
  1162. ///////////////////////////////////////////////////////////////////////////////////Central Bouy to rotate around /////////////////////////////////////////////////////////////
  1163. //front of box
  1164. glPushMatrix();
  1165. glBegin(GL_POLYGON);
  1166. glVertex3f(-3, 0, -160);
  1167. glVertex3f(3, 0, -160);
  1168. glVertex3f(3, 5, -160);
  1169. glVertex3f(-3, 5, -160);
  1170. glEnd();
  1171. glPopMatrix();
  1172.  
  1173. //back
  1174. glPushMatrix();
  1175. glBegin(GL_POLYGON);
  1176. glVertex3f(-3, 0, -165);
  1177. glVertex3f(3, 0, -165);
  1178. glVertex3f(3, 5, -165);
  1179. glVertex3f(-3, 5, -165);
  1180. glEnd();
  1181. glPopMatrix();
  1182.  
  1183. //top
  1184. glPushMatrix();
  1185. glBegin(GL_POLYGON);
  1186. glVertex3f(-3, 5, -160);
  1187. glVertex3f(3, 5, -160);
  1188. glVertex3f(3, 5, -165);
  1189. glVertex3f(-3, 5, -165);
  1190. glEnd();
  1191. glPopMatrix();
  1192.  
  1193. //left
  1194. glPushMatrix();
  1195. glBegin(GL_POLYGON);
  1196. glVertex3f(3, 5, -160);
  1197. glVertex3f(3, 5, -165);
  1198. glVertex3f(3, 0, -165);
  1199. glVertex3f(3, 0, -160);
  1200. glEnd();
  1201. glPopMatrix();
  1202.  
  1203. //right
  1204. glPushMatrix();
  1205. glBegin(GL_POLYGON);
  1206. glVertex3f(-3, 0, -160);
  1207. glVertex3f(-3, 0, -165);
  1208. glVertex3f(-3, 5, -165);
  1209. glVertex3f(-3, 5, -160);
  1210. glEnd();
  1211. glPopMatrix();
  1212.  
  1213. // bottom
  1214. glPushMatrix();
  1215. glBegin(GL_POLYGON);
  1216. glVertex3f(-3, 0, -160);
  1217. glVertex3f(3, 0, -160);
  1218. glVertex3f(3, 5, -165);
  1219. glVertex3f(-3, 5, -165);
  1220. glEnd();
  1221. glPopMatrix();
  1222.  
  1223. //front of mast
  1224. glPushMatrix();
  1225. glBegin(GL_POLYGON);
  1226. glVertex3f(0, 5, -162);
  1227. glVertex3f(1, 5, -162);
  1228. glVertex3f(1, 10, -162);
  1229. glVertex3f(0, 10, -162);
  1230. glEnd();
  1231. glPopMatrix();
  1232.  
  1233. //Back of mast
  1234. glPushMatrix();
  1235. glBegin(GL_POLYGON);
  1236. glVertex3f(0, 5, -163);
  1237. glVertex3f(1, 5, -163);
  1238. glVertex3f(1, 10, -163);
  1239. glVertex3f(0, 10, -163);
  1240. glEnd();
  1241. glPopMatrix();
  1242.  
  1243. //leftside
  1244. glPushMatrix();
  1245. glBegin(GL_POLYGON);
  1246. glVertex3f(1, 5, -162);
  1247. glVertex3f(1, 10, -162);
  1248. glVertex3f(1, 10, -163);
  1249. glVertex3f(1, 5, -163);
  1250. glEnd();
  1251. glPopMatrix();
  1252.  
  1253. //right side
  1254. glPushMatrix();
  1255. glBegin(GL_POLYGON);
  1256. glVertex3f(0, 5, -162);
  1257. glVertex3f(0, 10, -162);
  1258. glVertex3f(0, 10, -163);
  1259. glVertex3f(0, 5, -163);
  1260. glEnd();
  1261. glPopMatrix();
  1262.  
  1263. //top of mast
  1264. glPushMatrix();
  1265. glBegin(GL_POLYGON);
  1266. glVertex3f(1, 10, -162);
  1267. glVertex3f(1, 10, -163);
  1268. glVertex3f(0, 10, -163);
  1269. glVertex3f(0, 10, -162);
  1270. glEnd();
  1271. glPopMatrix();
  1272.  
  1273. //Bottom of mast
  1274. glPushMatrix();
  1275. glBegin(GL_POLYGON);
  1276. glVertex3f(1, 5, -162);
  1277. glVertex3f(1, 5, -163);
  1278. glVertex3f(0, 5, -163);
  1279. glVertex3f(0, 5, -162);
  1280. glEnd();
  1281. glPopMatrix();
  1282.  
  1283.  
  1284. glPushMatrix();
  1285. glColor3f(0.0, 0.0, 1.0);
  1286. glBegin(GL_POLYGON);
  1287. //front
  1288. glColor3f(0.0, 0.0, 1.0);
  1289. glVertex3f(-600,-1.5,600);
  1290. glVertex3f(600,-1.5,600);
  1291. glVertex3f(600,598.5,600);
  1292. glVertex3f(-600, 598.5, 600);
  1293. glEnd();
  1294. glBegin(GL_POLYGON);
  1295. //bottom
  1296. glColor3f(0.0, 0.0, 1.0);
  1297. glVertex3f(600, -1.5, -600);
  1298. glVertex3f(600, -1.5, 600);
  1299. glVertex3f(-600, -1.5, 600);
  1300. glVertex3f(-600, -1.5, -600);
  1301. glEnd();
  1302. glBegin(GL_POLYGON);
  1303. //left
  1304. glColor3f(0.0, 0.0, 1.0);
  1305. glVertex3f(-600,-1.5,600);
  1306. glVertex3f(-600, -1.5, -600);
  1307. glVertex3f(-600,598.5,-600);
  1308. glVertex3f(-600, 598.5, 600);
  1309. glEnd();
  1310. glBegin(GL_POLYGON);
  1311. //top
  1312. glColor3f(0.0, 0.0, 1.0);
  1313. glVertex3f(-600,598.5,600);
  1314. glVertex3f(600, 598.5, 600);
  1315. glVertex3f(600, 598.5, -600);
  1316. glVertex3f(-600, 598.5, -600);
  1317. glEnd();
  1318. glBegin(GL_POLYGON);
  1319. //right
  1320. glColor3f(0.0, 0.0, 1.0);
  1321. glVertex3f(600, -1.5, 600);
  1322. glVertex3f(600, -1.5, -600);
  1323. glVertex3f(600, 598.5, -600);
  1324. glVertex3f(600, 598.5, 600);
  1325. glEnd();
  1326. glBegin(GL_POLYGON);
  1327. //back
  1328. glColor3f(0.0, 0.0, 1.0);
  1329. glVertex3f(-600, -1.5, -600);
  1330. glVertex3f(600, -1.5, -600);
  1331. glVertex3f(600, 598.5, -600);
  1332. glVertex3f(-600, 598.5, -600);
  1333.  
  1334. glEnd();
  1335. glPopMatrix();
  1336.  
  1337. glMaterialfv(GL_FRONT, GL_AMBIENT, waterAmb);
  1338. glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, waterDif);
  1339. glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, waterSpec);
  1340. glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, waterShine);
  1341. glMaterialfv(GL_FRONT_AND_BACK, GL_EMISSION, waterEmission);
  1342.  
  1343. glPushMatrix();
  1344. glBegin(GL_POLYGON);//I have made my water as a Plane as this way it will fit the view box better without worrying about the boat going through the bottom.
  1345. glNormal3f(0, 1, 0); glVertex3f(500, -1, -500);
  1346. glVertex3f(500, -1, 500);
  1347. glVertex3f(-500, -1, 500);
  1348. glVertex3f(-500, -1, -500);
  1349. glEnd();
  1350. glPopMatrix();
  1351.  
  1352. glPushMatrix();
  1353. glDisable(GL_LIGHTING);
  1354. glTranslatef(boatPosition.x, 0.0, boatPosition.z);
  1355. glLineWidth(5.0f);
  1356. glColor3f(1, 0, 0);
  1357. glBegin(GL_LINES);//I have made my water as a Plane as this way it will fit the view box better without worrying about the boat going through the bottom.
  1358. glVertex3f(0, 10, 0);
  1359. glVertex3f(header.x * 5, 10 + (header.y * 5), (header.z*5));
  1360. glEnd();
  1361. glEnable(GL_LIGHTING);
  1362. glPopMatrix();
  1363.  
  1364. glutSwapBuffers();
  1365. glutPostRedisplay();
  1366. }
  1367.  
  1368. //these are all of the equations that my game will need to do to work out the volocity of my boat
  1369. //volocity = previous volocity + acceleration x deltatime
  1370. void equation(void)
  1371. {
  1372.  
  1373. cout << "header: " << header.x << ", " << header.y << ", " << header.z << endl;
  1374. cout << "acc: " << acceleration << endl;
  1375. cout << "deltaTime:" << deltatime << endl;
  1376. velocity = velocity + (header*acceleration) * deltatime;
  1377. boatPosition = boatPosition + (velocity * deltatime) + (0.5f * (header*acceleration)*(deltatime*deltatime));
  1378. }
  1379. // Initialization routine.
  1380. void setup(void)
  1381. {
  1382. glClearColor(1.0, 1.0, 1.0, 0.0);
  1383. glEnable(GL_DEPTH_TEST);
  1384.  
  1385. glEnable(GL_LIGHTING);
  1386.  
  1387.  
  1388. // Light property vectors.
  1389. float lightAmb[] = { 0.0, 0.0, 0.0, 1.0 };
  1390. float lightDifAndSpec0[] = { 1.0, 1.0, 1.0, 1.0 };
  1391. float globAmb[] = { 0.2, 0.2, 0.2, 1.0 };
  1392.  
  1393.  
  1394. // Light1 properties.
  1395. glLightfv(GL_LIGHT0, GL_AMBIENT, lightAmb);
  1396. glLightfv(GL_LIGHT0, GL_DIFFUSE, lightDifAndSpec0);
  1397. glLightfv(GL_LIGHT0, GL_SPECULAR, lightDifAndSpec0);
  1398. glEnable(GL_LIGHT0);
  1399. glLightModelfv(GL_LIGHT_MODEL_AMBIENT, globAmb); // Global ambient light.
  1400. glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, GL_TRUE); // Enable local viewpoint
  1401. }
  1402.  
  1403. // OpenGL window reshape routine.
  1404. void resize(int w, int h)
  1405. {
  1406. double aspect = (double)w / (double)h;
  1407.  
  1408. glViewport(0, 0, w, h);
  1409. glMatrixMode(GL_PROJECTION);
  1410. glLoadIdentity();
  1411. gluPerspective(90, aspect, 0.01, 1000.0);
  1412. glMatrixMode(GL_MODELVIEW);
  1413. glLoadIdentity();
  1414. }
  1415.  
  1416. // Keyboard input processing routine.
  1417. void keyInput(unsigned char key, int x, int y)
  1418. {
  1419. switch (key)
  1420. {
  1421. case 27:
  1422. exit(0);
  1423. break;
  1424. case 'w':
  1425. acceleration += 0.15f;
  1426. glutPostRedisplay();
  1427. break;
  1428. case 's':
  1429. acceleration -= 0.15f;
  1430. glutPostRedisplay();
  1431. break;
  1432. case 'a':
  1433. angley += 0.7;
  1434. header = normalize(rotateY(header, radians(0.7f)));
  1435. cout << "header: " << header.x << ", " << header.y << ", " << header.z << endl;
  1436. glutPostRedisplay();
  1437. break;
  1438. case 'd':
  1439. angley -= 0.7;
  1440. header = normalize(rotateY(header, -radians(0.7f)));
  1441. cout << "header: " << header.x << ", " << header.y << ", " << header.z << endl;
  1442. glutPostRedisplay();
  1443. break;
  1444. default:
  1445. break;
  1446. }
  1447. }
  1448.  
  1449. void keySpecialInput(int key, int x, int y)
  1450. {
  1451. switch (key)
  1452. {
  1453.  
  1454. case GLUT_KEY_UP:
  1455. camy += 1.0f;
  1456. glutPostRedisplay();
  1457. break;
  1458. case GLUT_KEY_DOWN:
  1459. camy -= 1.0f;
  1460. glutPostRedisplay();
  1461. break;
  1462. case GLUT_KEY_RIGHT:
  1463. camx += 1.0f;
  1464. glutPostRedisplay();
  1465. break;
  1466. case GLUT_KEY_LEFT:
  1467. camx -= 1.0f;
  1468. glutPostRedisplay();
  1469. break;
  1470. default:
  1471. break;
  1472. }
  1473. }
  1474.  
  1475. // Routine to output interaction instructions to the C++ window.
  1476. void printInteraction(void)
  1477. {
  1478. cout << "Interaction:" << endl;
  1479. }
  1480.  
  1481. // Main routine.
  1482. int main(int argc, char **argv)
  1483. {
  1484.  
  1485.  
  1486. printInteraction();
  1487. glutInit(&argc, argv);
  1488.  
  1489. glutInitContextVersion(4, 2);
  1490. glutInitContextProfile(GLUT_COMPATIBILITY_PROFILE);
  1491.  
  1492. glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA);
  1493. glutInitWindowSize(500, 500);
  1494. glutInitWindowPosition(100, 100);
  1495. glutCreateWindow("BoatGame.cpp");
  1496. glutDisplayFunc(drawScene);
  1497. glutReshapeFunc(resize);
  1498. glutKeyboardFunc(keyInput);
  1499. //glutKeyboardUpFunc
  1500. glutSpecialFunc(keySpecialInput);
  1501. glewExperimental = GL_TRUE;
  1502. glewInit();
  1503. cout << "Made By Matthew Dunphy" << endl;
  1504. setup();
  1505.  
  1506. glutMainLoop();
  1507. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement