Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
Game/Game.cpp@22:236319885874, 2019-04-03 (annotated)
- Committer:
- el17cd
- Date:
- Wed Apr 03 15:11:12 2019 +0000
- Revision:
- 22:236319885874
- Parent:
- 21:6b5d2d75e083
- Child:
- 25:3995271e411c
Game now runs at a target fps of 60
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
el17cd | 15:8fbbdefbe720 | 1 | #include "Game.h" |
el17cd | 19:ec4cb22accb0 | 2 | |
el17cd | 15:8fbbdefbe720 | 3 | Game::Game(){ |
el17cd | 22:236319885874 | 4 | noOfCubes = 25; |
el17cd | 18:8256546a3cbf | 5 | homeSelection = 0; |
el17cd | 15:8fbbdefbe720 | 6 | gamepad.init(); |
el17cd | 15:8fbbdefbe720 | 7 | renderer.init(); |
el17cd | 20:3ca430241df0 | 8 | for(int i = 0; i < noOfCubes; i++){ |
el17cd | 22:236319885874 | 9 | cubeArray[i].translate(rand()%250-125,0,20+ i*10); |
el17cd | 15:8fbbdefbe720 | 10 | } |
el17cd | 15:8fbbdefbe720 | 11 | } |
el17cd | 15:8fbbdefbe720 | 12 | |
el17cd | 15:8fbbdefbe720 | 13 | void Game::run(){ |
el17cd | 18:8256546a3cbf | 14 | score = 0; |
el17cd | 18:8256546a3cbf | 15 | selection = true; |
el17cd | 18:8256546a3cbf | 16 | playing = true; |
el17cd | 22:236319885874 | 17 | |
el17cd | 15:8fbbdefbe720 | 18 | while(1) { |
el17cd | 15:8fbbdefbe720 | 19 | renderer.clear(); |
el17cd | 22:236319885874 | 20 | coord = gamepad.get_coord(); |
el17cd | 22:236319885874 | 21 | |
el17cd | 15:8fbbdefbe720 | 22 | renderer.drawHorizon(coord.x/15); |
el17cd | 22:236319885874 | 23 | |
el17cd | 20:3ca430241df0 | 24 | for (int c = 0; c< noOfCubes; c++){ |
el17cd | 15:8fbbdefbe720 | 25 | if(playing){ |
el17cd | 21:6b5d2d75e083 | 26 | if(score < 2000) |
el17cd | 22:236319885874 | 27 | cubeArray[c].translate(-coord.x*1.4f,0,-1-(float)score/1000); |
el17cd | 16:64cd7bc094f9 | 28 | else{ |
el17cd | 22:236319885874 | 29 | cubeArray[c].translate(-coord.x*1.4f,0,-3); |
el17cd | 16:64cd7bc094f9 | 30 | } |
el17cd | 15:8fbbdefbe720 | 31 | } |
el17cd | 20:3ca430241df0 | 32 | else{ |
el17cd | 20:3ca430241df0 | 33 | coord.x = 0; |
el17cd | 20:3ca430241df0 | 34 | } |
el17cd | 15:8fbbdefbe720 | 35 | for (int i = 0; i < 6; i++){ |
el17cd | 20:3ca430241df0 | 36 | faceArray[c*6 + i] = cubeArray[c].getFace(i); |
el17cd | 15:8fbbdefbe720 | 37 | } |
el17cd | 20:3ca430241df0 | 38 | if (cubeArray[c].despawn()){ |
el17cd | 20:3ca430241df0 | 39 | cubeArray[c].resetPos(); |
el17cd | 22:236319885874 | 40 | cubeArray[c].translate(rand()%250-125,0,140); |
el17cd | 20:3ca430241df0 | 41 | } |
el17cd | 20:3ca430241df0 | 42 | if (cubeArray[c].tooClose()){ |
el17cd | 15:8fbbdefbe720 | 43 | playing = false; |
el17cd | 20:3ca430241df0 | 44 | cubeArray[c].resetPos(); |
el17cd | 22:236319885874 | 45 | cubeArray[c].translate(rand()%250-125,0,140); |
el17cd | 15:8fbbdefbe720 | 46 | } |
el17cd | 15:8fbbdefbe720 | 47 | } |
el17cd | 20:3ca430241df0 | 48 | |
el17cd | 22:236319885874 | 49 | renderer.drawAllFaces(faceArray, noOfCubes, coord.x); |
el17cd | 20:3ca430241df0 | 50 | |
el17cd | 21:6b5d2d75e083 | 51 | if(!playing){ |
el17cd | 16:64cd7bc094f9 | 52 | deathScreen(); |
el17cd | 18:8256546a3cbf | 53 | if(deathButtonSelections()){ |
el17cd | 18:8256546a3cbf | 54 | break; |
el17cd | 18:8256546a3cbf | 55 | } |
el17cd | 16:64cd7bc094f9 | 56 | } |
el17cd | 22:236319885874 | 57 | else{ |
el17cd | 22:236319885874 | 58 | addScore(); |
el17cd | 22:236319885874 | 59 | } |
el17cd | 20:3ca430241df0 | 60 | |
el17cd | 18:8256546a3cbf | 61 | |
el17cd | 20:3ca430241df0 | 62 | char buf[5]; |
el17cd | 22:236319885874 | 63 | sprintf(buf, "%d", score/3); |
el17cd | 16:64cd7bc094f9 | 64 | renderer.print(buf, 0, 0); |
el17cd | 15:8fbbdefbe720 | 65 | memset(buf, 0, sizeof buf); |
el17cd | 15:8fbbdefbe720 | 66 | renderer.refresh(); |
el17cd | 22:236319885874 | 67 | wait_ms(1000/60); |
el17cd | 15:8fbbdefbe720 | 68 | } |
el17cd | 15:8fbbdefbe720 | 69 | } |
el17cd | 18:8256546a3cbf | 70 | |
el17cd | 21:6b5d2d75e083 | 71 | void Game::addScore(){ |
el17cd | 21:6b5d2d75e083 | 72 | score++; |
el17cd | 21:6b5d2d75e083 | 73 | } |
el17cd | 21:6b5d2d75e083 | 74 | |
el17cd | 21:6b5d2d75e083 | 75 | void Game::resetScore(){ |
el17cd | 21:6b5d2d75e083 | 76 | score = 0; |
el17cd | 21:6b5d2d75e083 | 77 | } |
el17cd | 22:236319885874 | 78 | |
el17cd | 18:8256546a3cbf | 79 | bool Game::deathButtonSelections(){ |
el17cd | 18:8256546a3cbf | 80 | if(gamepad.check_event(Gamepad::Y_PRESSED) == true){ |
el17cd | 18:8256546a3cbf | 81 | selection = true; |
el17cd | 18:8256546a3cbf | 82 | } |
el17cd | 18:8256546a3cbf | 83 | else if(gamepad.check_event(Gamepad::A_PRESSED) == true){ |
el17cd | 18:8256546a3cbf | 84 | selection = false; |
el17cd | 18:8256546a3cbf | 85 | } |
el17cd | 18:8256546a3cbf | 86 | if (selection == true && gamepad.check_event(Gamepad::B_PRESSED) == true){ |
el17cd | 18:8256546a3cbf | 87 | playing = true; |
el17cd | 18:8256546a3cbf | 88 | score = 0; |
el17cd | 21:6b5d2d75e083 | 89 | resetScore(); |
el17cd | 18:8256546a3cbf | 90 | } |
el17cd | 18:8256546a3cbf | 91 | else if(selection == false && gamepad.check_event(Gamepad::B_PRESSED) == true){ |
el17cd | 21:6b5d2d75e083 | 92 | resetScore(); |
el17cd | 18:8256546a3cbf | 93 | return true; |
el17cd | 18:8256546a3cbf | 94 | } |
el17cd | 18:8256546a3cbf | 95 | return false; |
el17cd | 18:8256546a3cbf | 96 | } |
el17cd | 18:8256546a3cbf | 97 | |
el17cd | 18:8256546a3cbf | 98 | void Game::homeButtonSelections(){ |
el17cd | 18:8256546a3cbf | 99 | if(gamepad.check_event(Gamepad::Y_PRESSED) == true && homeSelection > 0){ |
el17cd | 18:8256546a3cbf | 100 | homeSelection--; |
el17cd | 18:8256546a3cbf | 101 | } |
el17cd | 18:8256546a3cbf | 102 | else if(gamepad.check_event(Gamepad::A_PRESSED) == true && homeSelection < 2){ |
el17cd | 18:8256546a3cbf | 103 | homeSelection++; |
el17cd | 18:8256546a3cbf | 104 | } |
el17cd | 18:8256546a3cbf | 105 | if (homeSelection == 0 && gamepad.check_event(Gamepad::B_PRESSED) == true){ |
el17cd | 18:8256546a3cbf | 106 | run(); |
el17cd | 18:8256546a3cbf | 107 | } |
el17cd | 18:8256546a3cbf | 108 | else if(homeSelection == 2 && gamepad.check_event(Gamepad::B_PRESSED) == true){ |
el17cd | 18:8256546a3cbf | 109 | //return true; |
el17cd | 18:8256546a3cbf | 110 | } |
el17cd | 18:8256546a3cbf | 111 | } |
el17cd | 16:64cd7bc094f9 | 112 | |
el17cd | 16:64cd7bc094f9 | 113 | void Game::deathScreen(){ |
el17cd | 16:64cd7bc094f9 | 114 | renderer.drawDeathScreen(selection); |
el17cd | 16:64cd7bc094f9 | 115 | } |
el17cd | 18:8256546a3cbf | 116 | |
el17cd | 18:8256546a3cbf | 117 | void Game::homeScreen(){ |
el17cd | 18:8256546a3cbf | 118 | while(1){ |
el17cd | 18:8256546a3cbf | 119 | renderer.clear(); |
el17cd | 18:8256546a3cbf | 120 | homeButtonSelections(); |
el17cd | 18:8256546a3cbf | 121 | renderer.drawHomeScreen(homeSelection); |
el17cd | 18:8256546a3cbf | 122 | renderer.refresh(); |
el17cd | 22:236319885874 | 123 | wait_ms(1000/60); |
el17cd | 18:8256546a3cbf | 124 | } |
el17cd | 18:8256546a3cbf | 125 | } |
el17cd | 15:8fbbdefbe720 | 126 |