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@19:ec4cb22accb0, 2019-04-01 (annotated)
- Committer:
- el17cd
- Date:
- Mon Apr 01 14:43:18 2019 +0000
- Revision:
- 19:ec4cb22accb0
- Parent:
- 18:8256546a3cbf
- Child:
- 20:3ca430241df0
Faces are no longer drawn when off screen
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 | 18:8256546a3cbf | 3 | Serial pc(USBTX, USBRX); // tx, rx |
el17cd | 15:8fbbdefbe720 | 4 | |
el17cd | 19:ec4cb22accb0 | 5 | |
el17cd | 15:8fbbdefbe720 | 6 | Game::Game(){ |
el17cd | 18:8256546a3cbf | 7 | homeSelection = 0; |
el17cd | 15:8fbbdefbe720 | 8 | gamepad.init(); |
el17cd | 15:8fbbdefbe720 | 9 | renderer.init(); |
el17cd | 18:8256546a3cbf | 10 | timer.start(); |
el17cd | 15:8fbbdefbe720 | 11 | |
el17cd | 18:8256546a3cbf | 12 | for(int i = 0; i < 10; i++){ |
el17cd | 18:8256546a3cbf | 13 | Cube cube(rand()%100-50,0,20+ i*10,5); |
el17cd | 15:8fbbdefbe720 | 14 | cubeVector.push_back(cube); |
el17cd | 15:8fbbdefbe720 | 15 | } |
el17cd | 15:8fbbdefbe720 | 16 | } |
el17cd | 15:8fbbdefbe720 | 17 | |
el17cd | 15:8fbbdefbe720 | 18 | void Game::run(){ |
el17cd | 18:8256546a3cbf | 19 | score = 0; |
el17cd | 18:8256546a3cbf | 20 | selection = true; |
el17cd | 18:8256546a3cbf | 21 | playing = true; |
el17cd | 19:ec4cb22accb0 | 22 | timer.reset(); |
el17cd | 15:8fbbdefbe720 | 23 | while(1) { |
el17cd | 15:8fbbdefbe720 | 24 | Vector2D coord = gamepad.get_coord(); |
el17cd | 15:8fbbdefbe720 | 25 | renderer.clear(); |
el17cd | 15:8fbbdefbe720 | 26 | renderer.drawHorizon(coord.x/15); |
el17cd | 15:8fbbdefbe720 | 27 | for (int c = 0; c< cubeVector.size(); c++) |
el17cd | 15:8fbbdefbe720 | 28 | { |
el17cd | 15:8fbbdefbe720 | 29 | if(playing){ |
el17cd | 18:8256546a3cbf | 30 | if(score < 1500) |
el17cd | 18:8256546a3cbf | 31 | cubeVector[c].translate((float)-coord.x*1.4,0,-2-(float)score/500); |
el17cd | 16:64cd7bc094f9 | 32 | else{ |
el17cd | 18:8256546a3cbf | 33 | cubeVector[c].translate((float)-coord.x*1.4,0,-3.5); |
el17cd | 16:64cd7bc094f9 | 34 | } |
el17cd | 15:8fbbdefbe720 | 35 | } |
el17cd | 15:8fbbdefbe720 | 36 | for (int i = 0; i < 6; i++){ |
el17cd | 15:8fbbdefbe720 | 37 | faceVector.push_back(cubeVector[c].getFace(i)); |
el17cd | 15:8fbbdefbe720 | 38 | } |
el17cd | 15:8fbbdefbe720 | 39 | if (cubeVector[c].despawn()){ |
el17cd | 19:ec4cb22accb0 | 40 | //cubeVector.erase(cubeVector.begin() + c); |
el17cd | 18:8256546a3cbf | 41 | Cube cube(rand()%100-50,0,90,5); |
el17cd | 19:ec4cb22accb0 | 42 | //cubeVector.push_back(cube); |
el17cd | 19:ec4cb22accb0 | 43 | cubeVector[c] = cube; |
el17cd | 15:8fbbdefbe720 | 44 | } |
el17cd | 15:8fbbdefbe720 | 45 | if (cubeVector[c].tooClose()){ |
el17cd | 15:8fbbdefbe720 | 46 | cubeVector.erase(cubeVector.begin() + c); |
el17cd | 15:8fbbdefbe720 | 47 | playing = false; |
el17cd | 15:8fbbdefbe720 | 48 | //renderer.invertMode(); |
el17cd | 15:8fbbdefbe720 | 49 | // ticker.attach(&resetScreen,1); |
el17cd | 18:8256546a3cbf | 50 | Cube cube(rand()%100-50,0,90,5); |
el17cd | 15:8fbbdefbe720 | 51 | cubeVector.push_back(cube); |
el17cd | 15:8fbbdefbe720 | 52 | } |
el17cd | 15:8fbbdefbe720 | 53 | } |
el17cd | 15:8fbbdefbe720 | 54 | for (int f = 0; f< faceVector.size(); f++){ |
el17cd | 15:8fbbdefbe720 | 55 | for (int f2 = 0; f2< faceVector.size(); f2++){ |
el17cd | 15:8fbbdefbe720 | 56 | if(faceVector[f2].getAvgZ() < faceVector[f2+1].getAvgZ()){ |
el17cd | 15:8fbbdefbe720 | 57 | Face temp = faceVector[f2+1]; |
el17cd | 15:8fbbdefbe720 | 58 | faceVector[f2+1] = faceVector[f2]; |
el17cd | 15:8fbbdefbe720 | 59 | faceVector[f2] = temp; |
el17cd | 15:8fbbdefbe720 | 60 | } |
el17cd | 15:8fbbdefbe720 | 61 | } |
el17cd | 15:8fbbdefbe720 | 62 | } |
el17cd | 15:8fbbdefbe720 | 63 | for (int f = 0; f< faceVector.size() ; f++){ |
el17cd | 15:8fbbdefbe720 | 64 | //pc.printf("%f\n", faceVector[f].getAvgZ()); |
el17cd | 15:8fbbdefbe720 | 65 | renderer.drawFace(faceVector[f], coord.x/15); |
el17cd | 15:8fbbdefbe720 | 66 | //wait_ms(1000/1); |
el17cd | 15:8fbbdefbe720 | 67 | |
el17cd | 15:8fbbdefbe720 | 68 | } |
el17cd | 18:8256546a3cbf | 69 | if(playing){ |
el17cd | 18:8256546a3cbf | 70 | score = timer.read_ms()/200; |
el17cd | 18:8256546a3cbf | 71 | } |
el17cd | 18:8256546a3cbf | 72 | else{ |
el17cd | 16:64cd7bc094f9 | 73 | deathScreen(); |
el17cd | 18:8256546a3cbf | 74 | if(deathButtonSelections()){ |
el17cd | 18:8256546a3cbf | 75 | break; |
el17cd | 18:8256546a3cbf | 76 | } |
el17cd | 16:64cd7bc094f9 | 77 | } |
el17cd | 18:8256546a3cbf | 78 | |
el17cd | 15:8fbbdefbe720 | 79 | char buf[10]; |
el17cd | 15:8fbbdefbe720 | 80 | sprintf(buf, "%d", score); |
el17cd | 16:64cd7bc094f9 | 81 | renderer.print(buf, 0, 0); |
el17cd | 15:8fbbdefbe720 | 82 | memset(buf, 0, sizeof buf); |
el17cd | 15:8fbbdefbe720 | 83 | renderer.refresh(); |
el17cd | 15:8fbbdefbe720 | 84 | faceVector.clear(); |
el17cd | 16:64cd7bc094f9 | 85 | |
el17cd | 15:8fbbdefbe720 | 86 | wait_ms(1000/30); |
el17cd | 18:8256546a3cbf | 87 | |
el17cd | 15:8fbbdefbe720 | 88 | } |
el17cd | 15:8fbbdefbe720 | 89 | } |
el17cd | 18:8256546a3cbf | 90 | |
el17cd | 18:8256546a3cbf | 91 | bool Game::deathButtonSelections(){ |
el17cd | 18:8256546a3cbf | 92 | if(gamepad.check_event(Gamepad::Y_PRESSED) == true){ |
el17cd | 18:8256546a3cbf | 93 | selection = true; |
el17cd | 18:8256546a3cbf | 94 | } |
el17cd | 18:8256546a3cbf | 95 | else if(gamepad.check_event(Gamepad::A_PRESSED) == true){ |
el17cd | 18:8256546a3cbf | 96 | selection = false; |
el17cd | 18:8256546a3cbf | 97 | } |
el17cd | 18:8256546a3cbf | 98 | if (selection == true && gamepad.check_event(Gamepad::B_PRESSED) == true){ |
el17cd | 18:8256546a3cbf | 99 | playing = true; |
el17cd | 18:8256546a3cbf | 100 | score = 0; |
el17cd | 18:8256546a3cbf | 101 | timer.reset(); |
el17cd | 18:8256546a3cbf | 102 | } |
el17cd | 18:8256546a3cbf | 103 | else if(selection == false && gamepad.check_event(Gamepad::B_PRESSED) == true){ |
el17cd | 18:8256546a3cbf | 104 | timer.reset(); |
el17cd | 18:8256546a3cbf | 105 | return true; |
el17cd | 18:8256546a3cbf | 106 | } |
el17cd | 18:8256546a3cbf | 107 | return false; |
el17cd | 18:8256546a3cbf | 108 | } |
el17cd | 18:8256546a3cbf | 109 | |
el17cd | 18:8256546a3cbf | 110 | void Game::homeButtonSelections(){ |
el17cd | 18:8256546a3cbf | 111 | if(gamepad.check_event(Gamepad::Y_PRESSED) == true && homeSelection > 0){ |
el17cd | 18:8256546a3cbf | 112 | homeSelection--; |
el17cd | 18:8256546a3cbf | 113 | } |
el17cd | 18:8256546a3cbf | 114 | else if(gamepad.check_event(Gamepad::A_PRESSED) == true && homeSelection < 2){ |
el17cd | 18:8256546a3cbf | 115 | homeSelection++; |
el17cd | 18:8256546a3cbf | 116 | } |
el17cd | 18:8256546a3cbf | 117 | if (homeSelection == 0 && gamepad.check_event(Gamepad::B_PRESSED) == true){ |
el17cd | 18:8256546a3cbf | 118 | run(); |
el17cd | 18:8256546a3cbf | 119 | } |
el17cd | 18:8256546a3cbf | 120 | else if(homeSelection == 2 && gamepad.check_event(Gamepad::B_PRESSED) == true){ |
el17cd | 18:8256546a3cbf | 121 | //return true; |
el17cd | 18:8256546a3cbf | 122 | } |
el17cd | 18:8256546a3cbf | 123 | } |
el17cd | 16:64cd7bc094f9 | 124 | |
el17cd | 16:64cd7bc094f9 | 125 | void Game::deathScreen(){ |
el17cd | 16:64cd7bc094f9 | 126 | //int selection = 1; |
el17cd | 16:64cd7bc094f9 | 127 | renderer.drawDeathScreen(selection); |
el17cd | 16:64cd7bc094f9 | 128 | } |
el17cd | 18:8256546a3cbf | 129 | |
el17cd | 18:8256546a3cbf | 130 | void Game::homeScreen(){ |
el17cd | 18:8256546a3cbf | 131 | while(1){ |
el17cd | 18:8256546a3cbf | 132 | renderer.clear(); |
el17cd | 18:8256546a3cbf | 133 | homeButtonSelections(); |
el17cd | 18:8256546a3cbf | 134 | renderer.drawHomeScreen(homeSelection); |
el17cd | 18:8256546a3cbf | 135 | renderer.refresh(); |
el17cd | 18:8256546a3cbf | 136 | wait_ms(1000/30); |
el17cd | 18:8256546a3cbf | 137 | } |
el17cd | 18:8256546a3cbf | 138 | } |
el17cd | 15:8fbbdefbe720 | 139 |