ELEC2645 (2018/19) / Mbed 2 deprecated el17cd

Dependencies:   mbed

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?

UserRevisionLine numberNew 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 }