ELEC2645 (2018/19) / Mbed 2 deprecated el17cd

Dependencies:   mbed

Committer:
el17cd
Date:
Sun Mar 31 22:05:54 2019 +0000
Revision:
18:8256546a3cbf
Parent:
17:3c9672c6e532
Child:
19:ec4cb22accb0
Created home menu, not linked help or quit yet

Who changed what in which revision?

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