Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Base File was taken from circle.cpp end edited to make it in to my boat game.
- # include <cmath>
- # include <iostream>
- # include <GL/glew.h>
- # include <GL/freeglut.h>
- # include <GL/glext.h>
- # include <glm.hpp>
- #include <gtx/rotate_vector.hpp>
- #pragma comment(lib, "glew32.lib")
- using namespace glm;
- using namespace std;
- static float camx = 0;
- static float camy = 40.0f;
- vec3 boatPosition (0,0,0);
- float anglex = 0.0, angley = 0.0;
- vec3 header(0, 0, -1);
- int lasttime = 0;
- int currenttime = 0;
- float deltatime = 0;
- float acceleration = 0.0f;
- vec3 velocity(0, 0, 0);
- void equation(void);
- // Drawing routine.
- void drawScene(void)
- {
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- glLoadIdentity();
- glColor3f(0, 0, 1);// Water
- currenttime = glutGet(GLUT_ELAPSED_TIME);
- deltatime = (currenttime - lasttime) / 1000.0f; // }this is how i worked out delta time for the gane.
- lasttime = currenttime;
- //equation();
- // This is the starting location of my boat. This is where it will staryt when the game initializes
- gluLookAt(boatPosition.x-(header.x*15), 15, boatPosition.z-(header.z*15) , // the position of the camara
- boatPosition.x,boatPosition.y,boatPosition.z,// where the camara is looking
- 0.0,1.0,0.0);//the oriantation of the camara is the way you want it
- /////////////////////////////////////////////////////////////////////////lighting////////////////////////////////////////////////////////////////////////////////////////
- //the material properties of the boat
- float boatAmb[] = { 0.98,0.98,0.0, 1.0 };
- float boatDif[] = { 0.98,0.98,0.0, 1.0 };
- float boatSpec[] = { 1, 1, 1, 1.0 };
- float boatShine[] = { 50 };
- float boatEmission[] = { 0.0, 0.0, 0, 1.0 };
- //the material properties of the boyes
- float boeysAmb[] = { 0.95, 0.56, 0.26, 1.0 };
- float boeysDif[] = { 0.95, 0.56, 0.26, 1.0 };
- float boeysSpec[] = { 1, 1, 1, 1.0 };
- float boeysShine[] = { 50 };
- float boeysEmission[] = { 0.0, 0.0, 0, 1.0 };
- //the material properties for water
- float waterAmb[] = { 0.0,0.0, 1.0, 1.0 };
- float waterDif[] = { 0.0, 0.0, 1.0, 1.0 };
- float waterSpec[] = { 1, 1, 1, 1.0 };
- float waterShine[] = { 50 };
- float waterEmission[] = { 0.0, 0.0, 0, 1.0 };
- ////////////////////////////////////////////////////////////////////////Acceleration-deceleration////////////////////////////////////////////////////////////////
- if (acceleration <= 0.0f)
- {
- acceleration = 0.0f;
- velocity *= 0.9f;
- }
- else if (acceleration > 0.0f)
- {
- //cout << "lowering" << endl;
- acceleration -= 0.05f;
- }
- equation();
- //////////////////////////////////////////////////////////////////////////the creation of my boat/////////////////////////////////////////////////////////////////
- ////Material properties of sphere.
- glMaterialfv(GL_FRONT, GL_AMBIENT, boatAmb);
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, boatDif);
- glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, boatSpec);
- glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, boatShine);
- glMaterialfv(GL_FRONT_AND_BACK, GL_EMISSION, boatEmission);
- glPushMatrix();
- glTranslatef(boatPosition.x, 0.0, boatPosition.z);
- glRotatef(90.0, 0.0, 1.0, 0.0);
- glRotatef(angley, 0.0,1 , 0.0);
- glColor3f(0.4, 0.6, 0);// This will then set the colour of the boat
- //This is the start of the creation of my boat
- //glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
- glBegin(GL_TRIANGLE_STRIP);
- glNormal3f(0, 1, 0); glVertex3f(0, 7, 0);//0
- glVertex3f(0, 0.1, 0);//1
- glVertex3f(3, 7, 3);//2
- glVertex3f(3, 0.1, 3);//3
- glVertex3f(6, 7, 3);//4
- glVertex3f(6, 0.1, 3);//5
- glVertex3f(9, 7,3);//6
- glVertex3f(9, 0.1, 3);//7 //} This section of 16 lines is the front section of my boat
- glVertex3f(12, 7, 3);//8
- glVertex3f(12, 0.1, 3);//9
- glVertex3f(15, 7,3);//10
- glVertex3f(15, 0.1,3);//11
- glVertex3f(18, 7,3);//12
- glVertex3f(18, 0.1,3);//13
- glVertex3f(21, 7,0);//14
- glVertex3f(21, 0.1, 0);//15
- glVertex3f(18, 7, -3);//16
- glVertex3f(18, 0.1,-3);//17
- glVertex3f(15, 7, -3);//18
- glVertex3f(15, 0.1, -3);//19
- glVertex3f(12, 7, -3);//20
- glVertex3f(12, 0.1, -3);//21
- glVertex3f(9, 7, -3);//22 //} This is the start of the back of my BOAT
- glVertex3f(9, 0.1, -3);//23
- glVertex3f(6, 7, -3);//24
- glVertex3f(6, 0.1, -3);//25
- glVertex3f(3, 7, -3);//26
- glVertex3f(3, 0.1, -3);//27
- glVertex3f(0, 7, 0);//28
- glVertex3f(0, 0.1, 0);//29
- //glPopMatrix();
- glEnd();
- //glPushMatrix();
- //glTranslatef(xBoat, 0.0, zBoat);
- glBegin(GL_TRIANGLE_STRIP);
- glColor3f(0.0, 1.0, 0);// This will then set the colour of the boat
- glVertex3f(0, 0.1, 0);//1
- glVertex3f(3, 0.1, -3);//27
- glVertex3f(3, 0.1, 3);//3
- glVertex3f(6,0.1,-3);//25
- glVertex3f(6, 0.1, 3);//5
- glVertex3f(9,0.1,-3);//23
- glVertex3f(9,0.1, 3);//7
- glVertex3f(12, 0.1, -3);//23
- glVertex3f(12, 0.1, 3);//9
- glVertex3f(15, 0.1, -3);//19
- glVertex3f(15, 0.1, 3);//11
- glVertex3f(18, 0.1, -3);//17
- glVertex3f(18, 0.1, 3);//13
- glVertex3f(21, 0.1, 0);//15
- glEnd();
- glPopMatrix();
- ///////////////////////////////////////////////////////////////////the creation of my start and finish line//////////////////////////////////////////////////////
- //left bar
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(-20, -1, -2);
- glVertex3f(-18, -1, -2);
- glVertex3f(-18, 12, -2);
- glVertex3f(-20, 12, -2);
- glEnd();
- glPopMatrix();
- //top bar
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(-20, 12, -2);
- glVertex3f(20, 12, -2);
- glVertex3f(20, 14, -2);
- glVertex3f(-20, 14, -2);
- glEnd();
- glPopMatrix();
- //right bar
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(20, 12, -2);
- glVertex3f(18, 12, -2);
- glVertex3f(18, -1, -2);
- glVertex3f(20, -1, -2);
- glEnd();
- glPopMatrix();
- /////////////////////////////////////////////////////////////////////////////////the creation of my square bouys//////////////////////////////////////////////////////////////
- glMaterialfv(GL_FRONT, GL_AMBIENT, boeysAmb);
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, boeysDif);
- glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, boeysSpec);
- glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, boeysShine);
- glMaterialfv(GL_FRONT_AND_BACK, GL_EMISSION, boeysEmission);
- // this is the left side of the track that I have made
- //front of box
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(-15, 0, 0);
- glVertex3f(-10, 0, 0);
- glVertex3f(-10, 5, 0);
- glVertex3f(-15, 5, 0);
- glEnd();
- glPopMatrix();
- //back
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(-15, 0, -5);
- glVertex3f(-10, 0, -5);
- glVertex3f(-10, 5, -5);
- glVertex3f(-15, 5, -5);
- glEnd();
- glPopMatrix();
- //top
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(-15, 5, 0);
- glVertex3f(-10, 5, 0);
- glVertex3f(-10, 5, -5);
- glVertex3f(-15, 5, -5);
- glEnd();
- glPopMatrix();
- //right
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(-10, 0, 0);
- glVertex3f(-10, 5, 0);
- glVertex3f(-10, 5, -5);
- glVertex3f(-10, 0, -5);
- glEnd();
- glPopMatrix();
- //left
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(-15, 0, 0);
- glVertex3f(-15, 0, -5);
- glVertex3f(-15, 5, 0);
- glVertex3f(-15, 5, -5);
- glEnd();
- glPopMatrix();
- // bottom
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(-15, 0, 0);
- glVertex3f(-10, 0, 0);
- glVertex3f(-10, 5, -5);
- glVertex3f(-15, 5, -5);
- glEnd();
- glPopMatrix();
- //front of mast
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(-13, 5, -1);
- glVertex3f(-12, 5, -1);
- glVertex3f(-12, 10, -1);
- glVertex3f(-13,10, -1);
- glEnd();
- glPopMatrix();
- //Back of mast
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(-13, 5, -3);
- glVertex3f(-12, 5, -3);
- glVertex3f(-12, 10, -3);
- glVertex3f(-13, 10, -3);
- glEnd();
- glPopMatrix();
- //right side
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(-12, 5, -1);
- glVertex3f(-12, 10,-1);
- glVertex3f(-12,10,-3);
- glVertex3f(-12,5,-3);
- glEnd();
- glPopMatrix();
- //left side
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(-13, 5, -1);
- glVertex3f(-13,10,-1);
- glVertex3f(-13, 10, -3);
- glVertex3f(-13, 5, -3);
- glEnd();
- glPopMatrix();
- //top of mast
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(-12, 10, -1);
- glVertex3f(-12, 10, -3);
- glVertex3f(-13, 10, -3);
- glVertex3f(-13, 10, -1);
- glEnd();
- glPopMatrix();
- //Bottom of mast
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(-12, 5, -1);
- glVertex3f(-12, 5, -3);
- glVertex3f(-13, 5, -3);
- glVertex3f(-13, 5, -1);
- glEnd();
- glPopMatrix();
- ////////////////////////////////////////////////////////////////////////////////////////bouy 2///////////////////////////////////////////////////////////////////////
- //front of box
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(-15, 0, -40);
- glVertex3f(-10, 0, -40);
- glVertex3f(-10, 5, -40);
- glVertex3f(-15, 5, -40);
- glEnd();
- glPopMatrix();
- //back
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(-15, 0, -45);
- glVertex3f(-10, 0, -45);
- glVertex3f(-10, 5, -45);
- glVertex3f(-15, 5, -45);
- glEnd();
- glPopMatrix();
- //top
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(-15, 5, -40);
- glVertex3f(-10, 5, -40);
- glVertex3f(-10, 5, -45);
- glVertex3f(-15, 5, -45);
- glEnd();
- glPopMatrix();
- //right
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(-10, 5, -40);
- glVertex3f(-10, 5, -45);
- glVertex3f(-10, 0, -45);
- glVertex3f(-10, 0, -40);
- glEnd();
- glPopMatrix();
- //left
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(-15, 0, -40);
- glVertex3f(-15, 0, -45);
- glVertex3f(-15, 5, -45);
- glVertex3f(-15, 5, -40);
- glEnd();
- glPopMatrix();
- // bottom
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(-15, 0, -40);
- glVertex3f(-10, 0, -40);
- glVertex3f(-10, 5, -45);
- glVertex3f(-15, 5, -45);
- glEnd();
- glPopMatrix();
- //front of mast
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(-13, 5, -42);
- glVertex3f(-12, 5, -42);
- glVertex3f(-12, 10, -42);
- glVertex3f(-13, 10, -42);
- glEnd();
- glPopMatrix();
- //Back of mast
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(-13, 5, -43);
- glVertex3f(-12, 5, -43);
- glVertex3f(-12, 10, -43);
- glVertex3f(-13, 10, -43);
- glEnd();
- glPopMatrix();
- //right side
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(-12, 5, -42);
- glVertex3f(-12, 10, -42);
- glVertex3f(-12, 10, -43);
- glVertex3f(-12, 5, -43);
- glEnd();
- glPopMatrix();
- //left side
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(-13, 5, -42);
- glVertex3f(-13, 10, -42);
- glVertex3f(-13, 10, -43);
- glVertex3f(-13, 5, -43);
- glEnd();
- glPopMatrix();
- //top of mast
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(-12, 10, -42);
- glVertex3f(-12, 10, -43);
- glVertex3f(-13, 10, -43);
- glVertex3f(-13, 10, -42);
- glEnd();
- glPopMatrix();
- //Bottom of mast
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(-12, 5, -42);
- glVertex3f(-12, 5, -43);
- glVertex3f(-13, 5, -43);
- glVertex3f(-13, 5, -42);
- glEnd();
- glPopMatrix();
- //////////////////////////////////////////////////////////////////////////////////////bouy 3////////////////////////////////////////////////////////////////
- //front of box
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(-15, 0, -80);
- glVertex3f(-10, 0, -80);
- glVertex3f(-10, 5, -80);
- glVertex3f(-15, 5, -80);
- glEnd();
- glPopMatrix();
- //back
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(-15, 0, -85);
- glVertex3f(-10, 0, -85);
- glVertex3f(-10, 5, -85);
- glVertex3f(-15, 5, -85);
- glEnd();
- glPopMatrix();
- //top
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(-15, 5, -80);
- glVertex3f(-10, 5, -80);
- glVertex3f(-10, 5, -85);
- glVertex3f(-15, 5, -85);
- glEnd();
- glPopMatrix();
- //right
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(-10, 5, -80);
- glVertex3f(-10, 5, -85);
- glVertex3f(-10, 0, -85);
- glVertex3f(-10, 0, -80);
- glEnd();
- glPopMatrix();
- //left
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(-15, 0, -80);
- glVertex3f(-15, 0, -85);
- glVertex3f(-15, 5, -85);
- glVertex3f(-15, 5, -80);
- glEnd();
- glPopMatrix();
- // bottom
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(-15, 0, -80);
- glVertex3f(-10, 0, -80);
- glVertex3f(-10, 5, -85);
- glVertex3f(-15, 5, -85);
- glEnd();
- glPopMatrix();
- //front of mast
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(-13, 5, -82);
- glVertex3f(-12, 5, -82);
- glVertex3f(-12, 10, -82);
- glVertex3f(-13, 10, -82);
- glEnd();
- glPopMatrix();
- //Back of mast
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(-13, 5, -83);
- glVertex3f(-12, 5, -83);
- glVertex3f(-12, 10, -83);
- glVertex3f(-13, 10, -83);
- glEnd();
- glPopMatrix();
- //right side
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(-12, 5, -82);
- glVertex3f(-12, 10, -82);
- glVertex3f(-12, 10, -83);
- glVertex3f(-12, 5, -83);
- glEnd();
- glPopMatrix();
- //left side
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(-13, 5, -82);
- glVertex3f(-13, 10, -82);
- glVertex3f(-13, 10, -83);
- glVertex3f(-13, 5, -83);
- glEnd();
- glPopMatrix();
- //top of mast
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(-12, 10, -82);
- glVertex3f(-12, 10, -83);
- glVertex3f(-13, 10, -83);
- glVertex3f(-13, 10, -82);
- glEnd();
- glPopMatrix();
- //Bottom of mast
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(-12, 5, -82);
- glVertex3f(-12, 5, -83);
- glVertex3f(-13, 5, -83);
- glVertex3f(-13, 5, -82);
- glEnd();
- glPopMatrix();
- //////////////////////////////////////////////////////////////////////////////////////bouy 4///////////////////////////////////////////////////////
- //front of box
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(-15, 0, -120);
- glVertex3f(-10, 0, -120);
- glVertex3f(-10, 5, -120);
- glVertex3f(-15, 5, -120);
- glEnd();
- glPopMatrix();
- //back
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(-15, 0, -125);
- glVertex3f(-10, 0, -125);
- glVertex3f(-10, 5, -125);
- glVertex3f(-15, 5, -125);
- glEnd();
- glPopMatrix();
- //top
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(-15, 5, -120);
- glVertex3f(-10, 5, -120);
- glVertex3f(-10, 5, -125);
- glVertex3f(-15, 5, -125);
- glEnd();
- glPopMatrix();
- //right
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(-10, 5, -120);
- glVertex3f(-10, 5, -125);
- glVertex3f(-10, 0, -125);
- glVertex3f(-10, 0, -120);
- glEnd();
- glPopMatrix();
- //left
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(-15, 0, -120);
- glVertex3f(-15, 0, -125);
- glVertex3f(-15, 5, -125);
- glVertex3f(-15, 5, -120);
- glEnd();
- glPopMatrix();
- // bottom
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(-15, 0, -120);
- glVertex3f(-10, 0, -120);
- glVertex3f(-10, 5, -125);
- glVertex3f(-15, 5, -125);
- glEnd();
- glPopMatrix();
- //front of mast
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(-13, 5, -122);
- glVertex3f(-12, 5, -122);
- glVertex3f(-12, 10, -122);
- glVertex3f(-13, 10, -122);
- glEnd();
- glPopMatrix();
- //Back of mast
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(-13, 5, -123);
- glVertex3f(-12, 5, -123);
- glVertex3f(-12, 10, -123);
- glVertex3f(-13, 10, -123);
- glEnd();
- glPopMatrix();
- //right side
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(-12, 5, -122);
- glVertex3f(-12, 10, -122);
- glVertex3f(-12, 10, -123);
- glVertex3f(-12, 5, -123);
- glEnd();
- glPopMatrix();
- //left side
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(-13, 5, -122);
- glVertex3f(-13, 10, -122);
- glVertex3f(-13, 10, -123);
- glVertex3f(-13, 5, -123);
- glEnd();
- glPopMatrix();
- //top of mast
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(-12, 10, -122);
- glVertex3f(-12, 10, -123);
- glVertex3f(-13, 10, -123);
- glVertex3f(-13, 10, -122);
- glEnd();
- glPopMatrix();
- //Bottom of mast
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(-12, 5, -122);
- glVertex3f(-12, 5, -123);
- glVertex3f(-13, 5, -123);
- glVertex3f(-13, 5, -122);
- glEnd();
- glPopMatrix();
- /////////////////////////////////////////////////////////////////////////the creation of my square bouys right////////////////////////////////////////////////////////
- //This is the creation of the right side of my boys
- //front of box
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(15, 0, 0);
- glVertex3f(10, 0, 0);
- glVertex3f(10, 5, 0);
- glVertex3f(15, 5, 0);
- glEnd();
- glPopMatrix();
- //back
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(15, 0, -5);
- glVertex3f(10, 0, -5);
- glVertex3f(10, 5, -5);
- glVertex3f(15, 5, -5);
- glEnd();
- glPopMatrix();
- //top
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(15, 5, 0);
- glVertex3f(10, 5, 0);
- glVertex3f(10, 5, -5);
- glVertex3f(15, 5, -5);
- glEnd();
- glPopMatrix();
- //left
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(10, 0, 0);
- glVertex3f(10, 5, 0);
- glVertex3f(10, 5, -5);
- glVertex3f(10, 0, -5);
- glEnd();
- glPopMatrix();
- //right
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(15, 0, 0);
- glVertex3f(15, 0, -5);
- glVertex3f(15, 5, 0);
- glVertex3f(15, 5, -5);
- glEnd();
- glPopMatrix();
- // bottom
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(15, 0, 0);
- glVertex3f(10, 0, 0);
- glVertex3f(10, 5, -5);
- glVertex3f(15, 5, -5);
- glEnd();
- glPopMatrix();
- //front of mast
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(13, 5, -1);
- glVertex3f(12, 5, -1);
- glVertex3f(12, 10, -1);
- glVertex3f(13, 10, -1);
- glEnd();
- glPopMatrix();
- //Back of mast
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(13, 5, -3);
- glVertex3f(12, 5, -3);
- glVertex3f(12, 10, -3);
- glVertex3f(13, 10, -3);
- glEnd();
- glPopMatrix();
- //left side
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(12, 5, -1);
- glVertex3f(12, 10, -1);
- glVertex3f(12, 10, -3);
- glVertex3f(12, 5, -3);
- glEnd();
- glPopMatrix();
- //right side
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(13, 5, -1);
- glVertex3f(13, 10, -1);
- glVertex3f(13, 10, -3);
- glVertex3f(13, 5, -3);
- glEnd();
- glPopMatrix();
- //top of mast
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(12, 10, -1);
- glVertex3f(12, 10, -3);
- glVertex3f(13, 10, -3);
- glVertex3f(13, 10, -1);
- glEnd();
- glPopMatrix();
- //Bottom of mast
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(12, 5, -1);
- glVertex3f(12, 5, -3);
- glVertex3f(13, 5, -3);
- glVertex3f(13, 5, -1);
- glEnd();
- glPopMatrix();
- ///////////////////////////////////////////////////////////////////////////////////bouy 2///////////////////////////////////////////////////////////
- //front of box
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(15, 0, -40);
- glVertex3f(10, 0, -40);
- glVertex3f(10, 5, -40);
- glVertex3f(15, 5, -40);
- glEnd();
- glPopMatrix();
- //back
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(15, 0, -45);
- glVertex3f(10, 0, -45);
- glVertex3f(10, 5, -45);
- glVertex3f(15, 5, -45);
- glEnd();
- glPopMatrix();
- //top
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(15, 5, -40);
- glVertex3f(10, 5, -40);
- glVertex3f(10, 5, -45);
- glVertex3f(15, 5, -45);
- glEnd();
- glPopMatrix();
- //left
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(10, 5, -40);
- glVertex3f(10, 5, -45);
- glVertex3f(10, 0, -45);
- glVertex3f(10, 0, -40);
- glEnd();
- glPopMatrix();
- //right
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(15, 0, -40);
- glVertex3f(15, 0, -45);
- glVertex3f(15, 5, -45);
- glVertex3f(15, 5, -40);
- glEnd();
- glPopMatrix();
- // bottom
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(15, 0, -40);
- glVertex3f(10, 0, -40);
- glVertex3f(10, 5, -45);
- glVertex3f(15, 5, -45);
- glEnd();
- glPopMatrix();
- //front of mast
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(13, 5, -42);
- glVertex3f(12, 5, -42);
- glVertex3f(12, 10, -42);
- glVertex3f(13, 10, -42);
- glEnd();
- glPopMatrix();
- //Back of mast
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(13, 5, -43);
- glVertex3f(12, 5, -43);
- glVertex3f(12, 10, -43);
- glVertex3f(13, 10, -43);
- glEnd();
- glPopMatrix();
- //left side
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(12, 5, -42);
- glVertex3f(12, 10, -42);
- glVertex3f(12, 10, -43);
- glVertex3f(12, 5, -43);
- glEnd();
- glPopMatrix();
- //right side
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(13, 5, -42);
- glVertex3f(13, 10, -42);
- glVertex3f(13, 10, -43);
- glVertex3f(13, 5, -43);
- glEnd();
- glPopMatrix();
- //top of mast
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(12, 10, -42);
- glVertex3f(12, 10, -43);
- glVertex3f(13, 10, -43);
- glVertex3f(13, 10, -42);
- glEnd();
- glPopMatrix();
- //Bottom of mast
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(12, 5, -42);
- glVertex3f(12, 5, -43);
- glVertex3f(13, 5, -43);
- glVertex3f(13, 5, -42);
- glEnd();
- glPopMatrix();
- /////////////////////////////////////////////////////////////////////////////////bouy 3/////////////////////////////////////////////////////////////////////
- //front of box
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(15, 0, -80);
- glVertex3f(10, 0, -80);
- glVertex3f(10, 5, -80);
- glVertex3f(15, 5, -80);
- glEnd();
- glPopMatrix();
- //back
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(15, 0, -85);
- glVertex3f(10, 0, -85);
- glVertex3f(10, 5, -85);
- glVertex3f(15, 5, -85);
- glEnd();
- glPopMatrix();
- //top
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(15, 5, -80);
- glVertex3f(10, 5, -80);
- glVertex3f(10, 5, -85);
- glVertex3f(15, 5, -85);
- glEnd();
- glPopMatrix();
- //left
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(10, 5, -80);
- glVertex3f(10, 5, -85);
- glVertex3f(10, 0, -85);
- glVertex3f(10, 0, -80);
- glEnd();
- glPopMatrix();
- //right
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(15, 0, -80);
- glVertex3f(15, 0, -85);
- glVertex3f(15, 5, -85);
- glVertex3f(15, 5, -80);
- glEnd();
- glPopMatrix();
- // bottom
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(15, 0, -80);
- glVertex3f(10, 0, -80);
- glVertex3f(10, 5, -85);
- glVertex3f(15, 5, -85);
- glEnd();
- glPopMatrix();
- //front of mast
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(13, 5, -82);
- glVertex3f(12, 5, -82);
- glVertex3f(12, 10, -82);
- glVertex3f(13, 10, -82);
- glEnd();
- glPopMatrix();
- //Back of mast
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(13, 5, -83);
- glVertex3f(12, 5, -83);
- glVertex3f(12, 10, -83);
- glVertex3f(13, 10, -83);
- glEnd();
- glPopMatrix();
- //left side
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(12, 5, -82);
- glVertex3f(12, 10, -82);
- glVertex3f(12, 10, -83);
- glVertex3f(12, 5, -83);
- glEnd();
- glPopMatrix();
- //right side
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(13, 5, -82);
- glVertex3f(13, 10, -82);
- glVertex3f(13, 10, -83);
- glVertex3f(13, 5, -83);
- glEnd();
- glPopMatrix();
- //top of mast
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(12, 10, -82);
- glVertex3f(12, 10, -83);
- glVertex3f(13, 10, -83);
- glVertex3f(13, 10, -82);
- glEnd();
- glPopMatrix();
- //Bottom of mast
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(12, 5, -82);
- glVertex3f(12, 5, -83);
- glVertex3f(13, 5, -83);
- glVertex3f(13, 5, -82);
- glEnd();
- glPopMatrix();
- ///////////////////////////////////////////////////////////////////////////////////////////bouy 4////////////////////////////////////////////////////////////////////////////
- //front of box
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(15, 0, -120);
- glVertex3f(10, 0, -120);
- glVertex3f(10, 5, -120);
- glVertex3f(15, 5, -120);
- glEnd();
- glPopMatrix();
- //back
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(15, 0, -125);
- glVertex3f(10, 0, -125);
- glVertex3f(10, 5, -125);
- glVertex3f(15, 5, -125);
- glEnd();
- glPopMatrix();
- //top
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(15, 5, -120);
- glVertex3f(10, 5, -120);
- glVertex3f(10, 5, -125);
- glVertex3f(15, 5, -125);
- glEnd();
- glPopMatrix();
- //left
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(10, 5, -120);
- glVertex3f(10, 5, -125);
- glVertex3f(10, 0, -125);
- glVertex3f(10, 0, -120);
- glEnd();
- glPopMatrix();
- //right
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(15, 0, -120);
- glVertex3f(15, 0, -125);
- glVertex3f(15, 5, -125);
- glVertex3f(15, 5, -120);
- glEnd();
- glPopMatrix();
- // bottom
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(15, 0, -120);
- glVertex3f(10, 0, -120);
- glVertex3f(10, 5, -125);
- glVertex3f(15, 5, -125);
- glEnd();
- glPopMatrix();
- //front of mast
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(13, 5, -122);
- glVertex3f(12, 5, -122);
- glVertex3f(12, 10, -122);
- glVertex3f(13, 10, -122);
- glEnd();
- glPopMatrix();
- //Back of mast
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(13, 5, -123);
- glVertex3f(12, 5, -123);
- glVertex3f(12, 10, -123);
- glVertex3f(13, 10, -123);
- glEnd();
- glPopMatrix();
- //leftside
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(12, 5, -122);
- glVertex3f(12, 10, -122);
- glVertex3f(12, 10, -123);
- glVertex3f(12, 5, -123);
- glEnd();
- glPopMatrix();
- //right side
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(13, 5, -122);
- glVertex3f(13, 10, -122);
- glVertex3f(13, 10, -123);
- glVertex3f(13, 5, -123);
- glEnd();
- glPopMatrix();
- //top of mast
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(12, 10, -122);
- glVertex3f(12, 10, -123);
- glVertex3f(13, 10, -123);
- glVertex3f(13, 10, -122);
- glEnd();
- glPopMatrix();
- //Bottom of mast
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(12, 5, -122);
- glVertex3f(12, 5, -123);
- glVertex3f(13, 5, -123);
- glVertex3f(13, 5, -122);
- glEnd();
- glPopMatrix();
- ///////////////////////////////////////////////////////////////////////////////////Central Bouy to rotate around /////////////////////////////////////////////////////////////
- //front of box
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(-3, 0, -160);
- glVertex3f(3, 0, -160);
- glVertex3f(3, 5, -160);
- glVertex3f(-3, 5, -160);
- glEnd();
- glPopMatrix();
- //back
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(-3, 0, -165);
- glVertex3f(3, 0, -165);
- glVertex3f(3, 5, -165);
- glVertex3f(-3, 5, -165);
- glEnd();
- glPopMatrix();
- //top
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(-3, 5, -160);
- glVertex3f(3, 5, -160);
- glVertex3f(3, 5, -165);
- glVertex3f(-3, 5, -165);
- glEnd();
- glPopMatrix();
- //left
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(3, 5, -160);
- glVertex3f(3, 5, -165);
- glVertex3f(3, 0, -165);
- glVertex3f(3, 0, -160);
- glEnd();
- glPopMatrix();
- //right
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(-3, 0, -160);
- glVertex3f(-3, 0, -165);
- glVertex3f(-3, 5, -165);
- glVertex3f(-3, 5, -160);
- glEnd();
- glPopMatrix();
- // bottom
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(-3, 0, -160);
- glVertex3f(3, 0, -160);
- glVertex3f(3, 5, -165);
- glVertex3f(-3, 5, -165);
- glEnd();
- glPopMatrix();
- //front of mast
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(0, 5, -162);
- glVertex3f(1, 5, -162);
- glVertex3f(1, 10, -162);
- glVertex3f(0, 10, -162);
- glEnd();
- glPopMatrix();
- //Back of mast
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(0, 5, -163);
- glVertex3f(1, 5, -163);
- glVertex3f(1, 10, -163);
- glVertex3f(0, 10, -163);
- glEnd();
- glPopMatrix();
- //leftside
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(1, 5, -162);
- glVertex3f(1, 10, -162);
- glVertex3f(1, 10, -163);
- glVertex3f(1, 5, -163);
- glEnd();
- glPopMatrix();
- //right side
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(0, 5, -162);
- glVertex3f(0, 10, -162);
- glVertex3f(0, 10, -163);
- glVertex3f(0, 5, -163);
- glEnd();
- glPopMatrix();
- //top of mast
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(1, 10, -162);
- glVertex3f(1, 10, -163);
- glVertex3f(0, 10, -163);
- glVertex3f(0, 10, -162);
- glEnd();
- glPopMatrix();
- //Bottom of mast
- glPushMatrix();
- glBegin(GL_POLYGON);
- glVertex3f(1, 5, -162);
- glVertex3f(1, 5, -163);
- glVertex3f(0, 5, -163);
- glVertex3f(0, 5, -162);
- glEnd();
- glPopMatrix();
- glPushMatrix();
- glColor3f(0.0, 0.0, 1.0);
- glBegin(GL_POLYGON);
- //front
- glColor3f(0.0, 0.0, 1.0);
- glVertex3f(-600,-1.5,600);
- glVertex3f(600,-1.5,600);
- glVertex3f(600,598.5,600);
- glVertex3f(-600, 598.5, 600);
- glEnd();
- glBegin(GL_POLYGON);
- //bottom
- glColor3f(0.0, 0.0, 1.0);
- glVertex3f(600, -1.5, -600);
- glVertex3f(600, -1.5, 600);
- glVertex3f(-600, -1.5, 600);
- glVertex3f(-600, -1.5, -600);
- glEnd();
- glBegin(GL_POLYGON);
- //left
- glColor3f(0.0, 0.0, 1.0);
- glVertex3f(-600,-1.5,600);
- glVertex3f(-600, -1.5, -600);
- glVertex3f(-600,598.5,-600);
- glVertex3f(-600, 598.5, 600);
- glEnd();
- glBegin(GL_POLYGON);
- //top
- glColor3f(0.0, 0.0, 1.0);
- glVertex3f(-600,598.5,600);
- glVertex3f(600, 598.5, 600);
- glVertex3f(600, 598.5, -600);
- glVertex3f(-600, 598.5, -600);
- glEnd();
- glBegin(GL_POLYGON);
- //right
- glColor3f(0.0, 0.0, 1.0);
- glVertex3f(600, -1.5, 600);
- glVertex3f(600, -1.5, -600);
- glVertex3f(600, 598.5, -600);
- glVertex3f(600, 598.5, 600);
- glEnd();
- glBegin(GL_POLYGON);
- //back
- glColor3f(0.0, 0.0, 1.0);
- glVertex3f(-600, -1.5, -600);
- glVertex3f(600, -1.5, -600);
- glVertex3f(600, 598.5, -600);
- glVertex3f(-600, 598.5, -600);
- glEnd();
- glPopMatrix();
- glMaterialfv(GL_FRONT, GL_AMBIENT, waterAmb);
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, waterDif);
- glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, waterSpec);
- glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, waterShine);
- glMaterialfv(GL_FRONT_AND_BACK, GL_EMISSION, waterEmission);
- glPushMatrix();
- 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.
- glNormal3f(0, 1, 0); glVertex3f(500, -1, -500);
- glVertex3f(500, -1, 500);
- glVertex3f(-500, -1, 500);
- glVertex3f(-500, -1, -500);
- glEnd();
- glPopMatrix();
- glPushMatrix();
- glDisable(GL_LIGHTING);
- glTranslatef(boatPosition.x, 0.0, boatPosition.z);
- glLineWidth(5.0f);
- glColor3f(1, 0, 0);
- 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.
- glVertex3f(0, 10, 0);
- glVertex3f(header.x * 5, 10 + (header.y * 5), (header.z*5));
- glEnd();
- glEnable(GL_LIGHTING);
- glPopMatrix();
- glutSwapBuffers();
- glutPostRedisplay();
- }
- //these are all of the equations that my game will need to do to work out the volocity of my boat
- //volocity = previous volocity + acceleration x deltatime
- void equation(void)
- {
- cout << "header: " << header.x << ", " << header.y << ", " << header.z << endl;
- cout << "acc: " << acceleration << endl;
- cout << "deltaTime:" << deltatime << endl;
- velocity = velocity + (header*acceleration) * deltatime;
- boatPosition = boatPosition + (velocity * deltatime) + (0.5f * (header*acceleration)*(deltatime*deltatime));
- }
- // Initialization routine.
- void setup(void)
- {
- glClearColor(1.0, 1.0, 1.0, 0.0);
- glEnable(GL_DEPTH_TEST);
- glEnable(GL_LIGHTING);
- // Light property vectors.
- float lightAmb[] = { 0.0, 0.0, 0.0, 1.0 };
- float lightDifAndSpec0[] = { 1.0, 1.0, 1.0, 1.0 };
- float globAmb[] = { 0.2, 0.2, 0.2, 1.0 };
- // Light1 properties.
- glLightfv(GL_LIGHT0, GL_AMBIENT, lightAmb);
- glLightfv(GL_LIGHT0, GL_DIFFUSE, lightDifAndSpec0);
- glLightfv(GL_LIGHT0, GL_SPECULAR, lightDifAndSpec0);
- glEnable(GL_LIGHT0);
- glLightModelfv(GL_LIGHT_MODEL_AMBIENT, globAmb); // Global ambient light.
- glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, GL_TRUE); // Enable local viewpoint
- }
- // OpenGL window reshape routine.
- void resize(int w, int h)
- {
- double aspect = (double)w / (double)h;
- glViewport(0, 0, w, h);
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- gluPerspective(90, aspect, 0.01, 1000.0);
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
- }
- // Keyboard input processing routine.
- void keyInput(unsigned char key, int x, int y)
- {
- switch (key)
- {
- case 27:
- exit(0);
- break;
- case 'w':
- acceleration += 0.15f;
- glutPostRedisplay();
- break;
- case 's':
- acceleration -= 0.15f;
- glutPostRedisplay();
- break;
- case 'a':
- angley += 0.7;
- header = normalize(rotateY(header, radians(0.7f)));
- cout << "header: " << header.x << ", " << header.y << ", " << header.z << endl;
- glutPostRedisplay();
- break;
- case 'd':
- angley -= 0.7;
- header = normalize(rotateY(header, -radians(0.7f)));
- cout << "header: " << header.x << ", " << header.y << ", " << header.z << endl;
- glutPostRedisplay();
- break;
- default:
- break;
- }
- }
- void keySpecialInput(int key, int x, int y)
- {
- switch (key)
- {
- case GLUT_KEY_UP:
- camy += 1.0f;
- glutPostRedisplay();
- break;
- case GLUT_KEY_DOWN:
- camy -= 1.0f;
- glutPostRedisplay();
- break;
- case GLUT_KEY_RIGHT:
- camx += 1.0f;
- glutPostRedisplay();
- break;
- case GLUT_KEY_LEFT:
- camx -= 1.0f;
- glutPostRedisplay();
- break;
- default:
- break;
- }
- }
- // Routine to output interaction instructions to the C++ window.
- void printInteraction(void)
- {
- cout << "Interaction:" << endl;
- }
- // Main routine.
- int main(int argc, char **argv)
- {
- printInteraction();
- glutInit(&argc, argv);
- glutInitContextVersion(4, 2);
- glutInitContextProfile(GLUT_COMPATIBILITY_PROFILE);
- glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA);
- glutInitWindowSize(500, 500);
- glutInitWindowPosition(100, 100);
- glutCreateWindow("BoatGame.cpp");
- glutDisplayFunc(drawScene);
- glutReshapeFunc(resize);
- glutKeyboardFunc(keyInput);
- //glutKeyboardUpFunc
- glutSpecialFunc(keySpecialInput);
- glewExperimental = GL_TRUE;
- glewInit();
- cout << "Made By Matthew Dunphy" << endl;
- setup();
- glutMainLoop();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement