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
main.cpp@14:885915260e25, 2019-03-31 (annotated)
- Committer:
 - el17cd
 - Date:
 - Sun Mar 31 13:55:51 2019 +0000
 - Revision:
 - 14:885915260e25
 - Parent:
 - 13:f4de03202477
 - Child:
 - 15:8fbbdefbe720
 
Added score and ensured players cannot hold left/right and win (at current; speed)
Who changed what in which revision?
| User | Revision | Line number | New contents of line | 
|---|---|---|---|
| el17cd | 0:efb5eec6b8ea | 1 | /* | 
| el17cd | 0:efb5eec6b8ea | 2 | ELEC2645 Embedded Systems Project | 
| el17cd | 0:efb5eec6b8ea | 3 | School of Electronic & Electrical Engineering | 
| el17cd | 0:efb5eec6b8ea | 4 | University of Leeds | 
| el17cd | 0:efb5eec6b8ea | 5 | Name: Christopher Doel | 
| el17cd | 0:efb5eec6b8ea | 6 | Username: el17cd | 
| el17cd | 0:efb5eec6b8ea | 7 | Student ID Number: 201146223 | 
| el17cd | 0:efb5eec6b8ea | 8 | Date: 22/02/19 | 
| el17cd | 0:efb5eec6b8ea | 9 | */ | 
| el17cd | 0:efb5eec6b8ea | 10 | |
| el17cd | 0:efb5eec6b8ea | 11 | #include "mbed.h" | 
| el17cd | 1:044238f7bdda | 12 | #include <vector> | 
| el17cd | 4:759a5c34e239 | 13 | #ifndef FACE_H | 
| el17cd | 4:759a5c34e239 | 14 | #define FACE_H | 
| el17cd | 3:2e31dfcb712a | 15 | #include "Face.h" | 
| el17cd | 4:759a5c34e239 | 16 | #endif | 
| el17cd | 4:759a5c34e239 | 17 | #include "Rasturizer.h" | 
| el17cd | 4:759a5c34e239 | 18 | #include "Cube.h" | 
| el17cd | 6:75031d14fc0d | 19 | #include "Gamepad.h" | 
| el17cd | 3:2e31dfcb712a | 20 | |
| el17cd | 8:a667bc5050c1 | 21 | Ticker ticker; | 
| el17cd | 8:a667bc5050c1 | 22 | Gamepad gamepad; | 
| el17cd | 14:885915260e25 | 23 | Rasturizer renderer; | 
| el17cd | 9:5915fc800824 | 24 | std::vector<Cube> cubeVector; | 
| el17cd | 9:5915fc800824 | 25 | std::vector<Face> faceVector; | 
| el17cd | 0:efb5eec6b8ea | 26 | |
| el17cd | 14:885915260e25 | 27 | bool playing = true; | 
| el17cd | 14:885915260e25 | 28 | |
| el17cd | 14:885915260e25 | 29 | void resetScreen(){ | 
| el17cd | 14:885915260e25 | 30 | //renderer.normalMode(); | 
| el17cd | 14:885915260e25 | 31 | playing = true; | 
| el17cd | 14:885915260e25 | 32 | } | 
| el17cd | 8:a667bc5050c1 | 33 | |
| el17cd | 0:efb5eec6b8ea | 34 | int main() | 
| el17cd | 0:efb5eec6b8ea | 35 | { | 
| el17cd | 12:b69657862610 | 36 | int score = 0; | 
| el17cd | 6:75031d14fc0d | 37 | gamepad.init(); | 
| el17cd | 14:885915260e25 | 38 | for(int i = 0; i < 7; i++){ | 
| el17cd | 10:07a23afd5088 | 39 | Cube cube(rand()%80-40,0,30+ i*20,5); | 
| el17cd | 8:a667bc5050c1 | 40 | cubeVector.push_back(cube); | 
| el17cd | 8:a667bc5050c1 | 41 | } | 
| el17cd | 1:044238f7bdda | 42 | while(1) { | 
| el17cd | 14:885915260e25 | 43 | |
| el17cd | 12:b69657862610 | 44 | Vector2D coord = gamepad.get_coord(); | 
| el17cd | 4:759a5c34e239 | 45 | renderer.clear(); | 
| el17cd | 14:885915260e25 | 46 | |
| el17cd | 14:885915260e25 | 47 | if(playing){ | 
| el17cd | 14:885915260e25 | 48 | score++; | 
| el17cd | 6:75031d14fc0d | 49 | } | 
| el17cd | 14:885915260e25 | 50 | |
| el17cd | 14:885915260e25 | 51 | renderer.drawHorizon(coord.x/15); | 
| el17cd | 8:a667bc5050c1 | 52 | for (int c = 0; c< cubeVector.size(); c++) | 
| el17cd | 8:a667bc5050c1 | 53 | { | 
| el17cd | 14:885915260e25 | 54 | if(playing){ | 
| el17cd | 14:885915260e25 | 55 | cubeVector[c].translate(-coord.x*1.4,0,-3); | 
| el17cd | 9:5915fc800824 | 56 | } | 
| el17cd | 8:a667bc5050c1 | 57 | for (int i = 0; i < 6; i++){ | 
| el17cd | 9:5915fc800824 | 58 | faceVector.push_back(cubeVector[c].getFace(i)); | 
| el17cd | 10:07a23afd5088 | 59 | } | 
| el17cd | 10:07a23afd5088 | 60 | if (cubeVector[c].despawn()){ | 
| el17cd | 10:07a23afd5088 | 61 | cubeVector.erase(cubeVector.begin() + c); | 
| el17cd | 14:885915260e25 | 62 | Cube cube(rand()%80-40,0,90,5); | 
| el17cd | 10:07a23afd5088 | 63 | cubeVector.push_back(cube); | 
| el17cd | 8:a667bc5050c1 | 64 | } | 
| el17cd | 11:2cd6341136ca | 65 | if (cubeVector[c].tooClose()){ | 
| el17cd | 14:885915260e25 | 66 | cubeVector.erase(cubeVector.begin() + c); | 
| el17cd | 14:885915260e25 | 67 | playing = false; | 
| el17cd | 14:885915260e25 | 68 | //renderer.invertMode(); | 
| el17cd | 12:b69657862610 | 69 | score = 0; | 
| el17cd | 14:885915260e25 | 70 | ticker.attach(&resetScreen,0.1); | 
| el17cd | 14:885915260e25 | 71 | Cube cube(rand()%80-40,0,90,5); | 
| el17cd | 14:885915260e25 | 72 | cubeVector.push_back(cube); | 
| el17cd | 11:2cd6341136ca | 73 | } | 
| el17cd | 9:5915fc800824 | 74 | } | 
| el17cd | 10:07a23afd5088 | 75 | for (int f = 0; f< faceVector.size(); f++){ | 
| el17cd | 10:07a23afd5088 | 76 | for (int f2 = 0; f2< faceVector.size(); f2++){ | 
| el17cd | 10:07a23afd5088 | 77 | if(faceVector[f2].getAvgZ() < faceVector[f2+1].getAvgZ()){ | 
| el17cd | 10:07a23afd5088 | 78 | Face temp = faceVector[f2+1]; | 
| el17cd | 10:07a23afd5088 | 79 | faceVector[f2+1] = faceVector[f2]; | 
| el17cd | 10:07a23afd5088 | 80 | faceVector[f2] = temp; | 
| el17cd | 9:5915fc800824 | 81 | } | 
| el17cd | 8:a667bc5050c1 | 82 | } | 
| el17cd | 8:a667bc5050c1 | 83 | } | 
| el17cd | 10:07a23afd5088 | 84 | |
| el17cd | 9:5915fc800824 | 85 | for (int f = 0; f< faceVector.size() ; f++){ | 
| el17cd | 10:07a23afd5088 | 86 | //pc.printf("%f\n", faceVector[f].getAvgZ()); | 
| el17cd | 12:b69657862610 | 87 | renderer.drawFace(faceVector[f], coord.x/15); | 
| el17cd | 12:b69657862610 | 88 | //wait_ms(1000/1); | 
| el17cd | 12:b69657862610 | 89 | |
| el17cd | 9:5915fc800824 | 90 | } | 
| el17cd | 14:885915260e25 | 91 | char buf[10]; | 
| el17cd | 14:885915260e25 | 92 | sprintf(buf, "%d", score); | 
| el17cd | 14:885915260e25 | 93 | renderer.print(buf); | 
| el17cd | 14:885915260e25 | 94 | memset(buf, 0, sizeof buf); | 
| el17cd | 12:b69657862610 | 95 | renderer.refresh(); | 
| el17cd | 10:07a23afd5088 | 96 | faceVector.clear(); | 
| el17cd | 14:885915260e25 | 97 | |
| el17cd | 14:885915260e25 | 98 | |
| el17cd | 14:885915260e25 | 99 | |
| el17cd | 14:885915260e25 | 100 | |
| el17cd | 14:885915260e25 | 101 | |
| el17cd | 10:07a23afd5088 | 102 | // refresh the LCD so the pixels appear | 
| el17cd | 10:07a23afd5088 | 103 | // this gives a refresh rate of 10 frames per second | 
| el17cd | 12:b69657862610 | 104 | |
| el17cd | 10:07a23afd5088 | 105 | wait_ms(1000/30); | 
| el17cd | 0:efb5eec6b8ea | 106 | } | 
| el17cd | 8:a667bc5050c1 | 107 | } |