I need C++ code in opengl where you need to shoot moving teapots using a canon.
Create and add a 3D cannon such that it aims forward from the viewer towards the far plane (Fig. 1). It is okay to show only the tip (firing end) of the cannon.
– The cannon can turn left and right, and up and down (yaw and pitch movements) like a real cannon. Theuser controls left-right rotation with right-left arrow keys, and up-down rotation with up-down arrowkeys. The rotation in either direction should be clamped to a certain range (say, 120 degrees) so thecannonball would stay within the view volume.
– The cannon should fire a cannonball (sphere) every time the user presses the space bar. The ball shouldfly in the direction of the current orientation of the cannon. Once the ball goes through any wall andthus no longer visible, delete it from the scene to avoid clogging the memory. Therefore, the system will store no more than a few (fired) balls at any given time.
– During the game, display text at the top of the screen that shows how many teapots are currently left(Fig. 1).
– When the cannonball hits one of the teapots (collision detection needed here), the hit teapot must immediatelydisappear from the scene (and so must this cannonball). The text must also be updated accordinglywith a new number (one less teapots left).
– When the last teapot is hit, the game is over and the text should be replaced with “Continue? (Y/N)”. If the user presses ‘y’, start the game over. If ‘n’, exit program.
– The background walls (all 5 of them) must be texture mapped, although Fig. 1 doesn’t show it. You can use any tileable texture image of your choice, but make sure the image file size is less then 1MB (with no bigger than 512 512 pixel resolution). Do not use multiple texture images.
– If the user presses ‘q’ at any time (even during the game), exit program.
– Every time the cannonball fires, rapidly push the cannon backwards a bit to simulate the action-reaction
effect. After this quick push back, the cannon should immediately come back to its original position
before it can fire a new ball (see [login to view URL]). Try to make this movement
as realistic as possible.
– Whenever a teapot is hit, the hit teapot must fly out of the scene in a random direction towards far plane(so the depth should increase) while randomly spinning. Once the teapot goes past the wall, remove itfrom the scene