ELEC2645 (2018/19) / Mbed 2 deprecated el17cd

Dependencies:   mbed

Committer:
el17cd
Date:
Sun Mar 24 17:53:25 2019 +0000
Revision:
13:f4de03202477
Parent:
12:b69657862610
Child:
14:885915260e25
Fill algorithm in working condition, massive impact on performance

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 9:5915fc800824 23 std::vector<Cube> cubeVector;
el17cd 9:5915fc800824 24 std::vector<Face> faceVector;
el17cd 0:efb5eec6b8ea 25
el17cd 8:a667bc5050c1 26
el17cd 0:efb5eec6b8ea 27 int main()
el17cd 0:efb5eec6b8ea 28 {
el17cd 12:b69657862610 29 int score = 0;
el17cd 6:75031d14fc0d 30 gamepad.init();
el17cd 4:759a5c34e239 31 Rasturizer renderer;
el17cd 13:f4de03202477 32 for(int i = 0; i < 1; i++){
el17cd 10:07a23afd5088 33 Cube cube(rand()%80-40,0,30+ i*20,5);
el17cd 8:a667bc5050c1 34 cubeVector.push_back(cube);
el17cd 8:a667bc5050c1 35 }
el17cd 1:044238f7bdda 36 while(1) {
el17cd 12:b69657862610 37 score++;
el17cd 12:b69657862610 38 Vector2D coord = gamepad.get_coord();
el17cd 4:759a5c34e239 39 renderer.clear();
el17cd 12:b69657862610 40 renderer.drawHorizon(coord.x/15);
el17cd 9:5915fc800824 41 bool rotate1 = false;
el17cd 9:5915fc800824 42 if(gamepad.check_event(Gamepad::B_PRESSED) == true){
el17cd 13:f4de03202477 43 Cube cube(rand()%80-40,0,30,5);
el17cd 13:f4de03202477 44 cubeVector.push_back(cube);
el17cd 6:75031d14fc0d 45 }
el17cd 9:5915fc800824 46 bool rotate2 = false;
el17cd 9:5915fc800824 47 if(gamepad.check_event(Gamepad::X_PRESSED) == true){
el17cd 9:5915fc800824 48 rotate2 = true;
el17cd 7:15543cb10a14 49 }
el17cd 10:07a23afd5088 50
el17cd 8:a667bc5050c1 51 for (int c = 0; c< cubeVector.size(); c++)
el17cd 8:a667bc5050c1 52 {
el17cd 9:5915fc800824 53 if(rotate1){
el17cd 11:2cd6341136ca 54 cubeVector[c].rotateZ(0.2);
el17cd 9:5915fc800824 55 }
el17cd 9:5915fc800824 56 if(rotate2){
el17cd 11:2cd6341136ca 57 cubeVector[c].rotateZ(-0.2);
el17cd 9:5915fc800824 58 }
el17cd 8:a667bc5050c1 59 for (int i = 0; i < 6; i++){
el17cd 9:5915fc800824 60 faceVector.push_back(cubeVector[c].getFace(i));
el17cd 10:07a23afd5088 61 }
el17cd 12:b69657862610 62 cubeVector[c].translate(-coord.x*2,0,coord.y*2);
el17cd 11:2cd6341136ca 63
el17cd 10:07a23afd5088 64 if (cubeVector[c].despawn()){
el17cd 10:07a23afd5088 65 cubeVector.erase(cubeVector.begin() + c);
el17cd 12:b69657862610 66 Cube cube(rand()%160-80,0,90,5);
el17cd 10:07a23afd5088 67 cubeVector.push_back(cube);
el17cd 8:a667bc5050c1 68 }
el17cd 11:2cd6341136ca 69 if (cubeVector[c].tooClose()){
el17cd 12:b69657862610 70 score = 0;
el17cd 11:2cd6341136ca 71 }
el17cd 9:5915fc800824 72 }
el17cd 10:07a23afd5088 73
el17cd 10:07a23afd5088 74
el17cd 10:07a23afd5088 75
el17cd 10:07a23afd5088 76 for (int f = 0; f< faceVector.size(); f++){
el17cd 10:07a23afd5088 77 for (int f2 = 0; f2< faceVector.size(); f2++){
el17cd 10:07a23afd5088 78 if(faceVector[f2].getAvgZ() < faceVector[f2+1].getAvgZ()){
el17cd 10:07a23afd5088 79 Face temp = faceVector[f2+1];
el17cd 10:07a23afd5088 80 faceVector[f2+1] = faceVector[f2];
el17cd 10:07a23afd5088 81 faceVector[f2] = temp;
el17cd 9:5915fc800824 82 }
el17cd 8:a667bc5050c1 83 }
el17cd 8:a667bc5050c1 84 }
el17cd 10:07a23afd5088 85
el17cd 9:5915fc800824 86 for (int f = 0; f< faceVector.size() ; f++){
el17cd 10:07a23afd5088 87 //pc.printf("%f\n", faceVector[f].getAvgZ());
el17cd 12:b69657862610 88 renderer.drawFace(faceVector[f], coord.x/15);
el17cd 12:b69657862610 89 //wait_ms(1000/1);
el17cd 12:b69657862610 90
el17cd 9:5915fc800824 91 }
el17cd 12:b69657862610 92 //char buf[10];
el17cd 12:b69657862610 93 //sprintf(buf, "%d", score);
el17cd 12:b69657862610 94 //renderer.print(buf);
el17cd 12:b69657862610 95 renderer.refresh();
el17cd 10:07a23afd5088 96 faceVector.clear();
el17cd 10:07a23afd5088 97 // refresh the LCD so the pixels appear
el17cd 10:07a23afd5088 98 // this gives a refresh rate of 10 frames per second
el17cd 12:b69657862610 99
el17cd 10:07a23afd5088 100 wait_ms(1000/30);
el17cd 0:efb5eec6b8ea 101 }
el17cd 8:a667bc5050c1 102 }