ELEC2645 (2018/19) / Mbed 2 deprecated el17cd

Dependencies:   mbed

Committer:
el17cd
Date:
Sun Mar 31 18:05:01 2019 +0000
Revision:
16:64cd7bc094f9
Parent:
15:8fbbdefbe720
Child:
17:3c9672c6e532
added death screen with restart and menu options and 3d cube selector

Who changed what in which revision?

UserRevisionLine numberNew contents of line
el17cd 15:8fbbdefbe720 1 #include "Game.h"
el17cd 15:8fbbdefbe720 2
el17cd 15:8fbbdefbe720 3 Game::Game(){
el17cd 16:64cd7bc094f9 4 playing = true;
el17cd 15:8fbbdefbe720 5 score = 0;
el17cd 15:8fbbdefbe720 6 gamepad.init();
el17cd 15:8fbbdefbe720 7 renderer.init();
el17cd 15:8fbbdefbe720 8
el17cd 15:8fbbdefbe720 9 for(int i = 0; i < 7; i++){
el17cd 15:8fbbdefbe720 10 Cube cube(rand()%80-40,0,30+ i*20,5);
el17cd 15:8fbbdefbe720 11 cubeVector.push_back(cube);
el17cd 15:8fbbdefbe720 12 }
el17cd 15:8fbbdefbe720 13 }
el17cd 15:8fbbdefbe720 14
el17cd 15:8fbbdefbe720 15 void Game::run(){
el17cd 15:8fbbdefbe720 16
el17cd 15:8fbbdefbe720 17 while(1) {
el17cd 15:8fbbdefbe720 18 Vector2D coord = gamepad.get_coord();
el17cd 15:8fbbdefbe720 19 renderer.clear();
el17cd 15:8fbbdefbe720 20
el17cd 15:8fbbdefbe720 21 if(playing){
el17cd 15:8fbbdefbe720 22 score++;
el17cd 15:8fbbdefbe720 23 }
el17cd 16:64cd7bc094f9 24 else{
el17cd 16:64cd7bc094f9 25 if(gamepad.check_event(Gamepad::Y_PRESSED) == true){
el17cd 16:64cd7bc094f9 26 selection = true;
el17cd 16:64cd7bc094f9 27 }
el17cd 16:64cd7bc094f9 28 else if(gamepad.check_event(Gamepad::A_PRESSED) == true){
el17cd 16:64cd7bc094f9 29 selection = false;
el17cd 16:64cd7bc094f9 30 }
el17cd 16:64cd7bc094f9 31 if (selection == true && gamepad.check_event(Gamepad::B_PRESSED) == true){
el17cd 16:64cd7bc094f9 32 playing = true;
el17cd 16:64cd7bc094f9 33 }
el17cd 16:64cd7bc094f9 34 else if(selection == false && gamepad.check_event(Gamepad::B_PRESSED) == true){
el17cd 16:64cd7bc094f9 35 break;
el17cd 16:64cd7bc094f9 36 }
el17cd 16:64cd7bc094f9 37 }
el17cd 15:8fbbdefbe720 38
el17cd 15:8fbbdefbe720 39 renderer.drawHorizon(coord.x/15);
el17cd 15:8fbbdefbe720 40 for (int c = 0; c< cubeVector.size(); c++)
el17cd 15:8fbbdefbe720 41 {
el17cd 15:8fbbdefbe720 42 if(playing){
el17cd 16:64cd7bc094f9 43 if(score < 2500)
el17cd 16:64cd7bc094f9 44 cubeVector[c].translate(-coord.x*1.4,0,-2.5-(double)score/1000);
el17cd 16:64cd7bc094f9 45 else{
el17cd 16:64cd7bc094f9 46 cubeVector[c].translate(-coord.x*1.4,0,(double)-5);
el17cd 16:64cd7bc094f9 47 }
el17cd 15:8fbbdefbe720 48 }
el17cd 15:8fbbdefbe720 49 for (int i = 0; i < 6; i++){
el17cd 15:8fbbdefbe720 50 faceVector.push_back(cubeVector[c].getFace(i));
el17cd 15:8fbbdefbe720 51 }
el17cd 15:8fbbdefbe720 52 if (cubeVector[c].despawn()){
el17cd 15:8fbbdefbe720 53 cubeVector.erase(cubeVector.begin() + c);
el17cd 15:8fbbdefbe720 54 Cube cube(rand()%80-40,0,90,5);
el17cd 15:8fbbdefbe720 55 cubeVector.push_back(cube);
el17cd 15:8fbbdefbe720 56 }
el17cd 15:8fbbdefbe720 57 if (cubeVector[c].tooClose()){
el17cd 15:8fbbdefbe720 58 cubeVector.erase(cubeVector.begin() + c);
el17cd 15:8fbbdefbe720 59 playing = false;
el17cd 15:8fbbdefbe720 60 //renderer.invertMode();
el17cd 15:8fbbdefbe720 61 score = 0;
el17cd 15:8fbbdefbe720 62 // ticker.attach(&resetScreen,1);
el17cd 15:8fbbdefbe720 63 Cube cube(rand()%80-40,0,90,5);
el17cd 15:8fbbdefbe720 64 cubeVector.push_back(cube);
el17cd 15:8fbbdefbe720 65 }
el17cd 15:8fbbdefbe720 66 }
el17cd 15:8fbbdefbe720 67 for (int f = 0; f< faceVector.size(); f++){
el17cd 15:8fbbdefbe720 68 for (int f2 = 0; f2< faceVector.size(); f2++){
el17cd 15:8fbbdefbe720 69 if(faceVector[f2].getAvgZ() < faceVector[f2+1].getAvgZ()){
el17cd 15:8fbbdefbe720 70 Face temp = faceVector[f2+1];
el17cd 15:8fbbdefbe720 71 faceVector[f2+1] = faceVector[f2];
el17cd 15:8fbbdefbe720 72 faceVector[f2] = temp;
el17cd 15:8fbbdefbe720 73 }
el17cd 15:8fbbdefbe720 74 }
el17cd 15:8fbbdefbe720 75 }
el17cd 15:8fbbdefbe720 76
el17cd 15:8fbbdefbe720 77 for (int f = 0; f< faceVector.size() ; f++){
el17cd 15:8fbbdefbe720 78 //pc.printf("%f\n", faceVector[f].getAvgZ());
el17cd 15:8fbbdefbe720 79 renderer.drawFace(faceVector[f], coord.x/15);
el17cd 15:8fbbdefbe720 80 //wait_ms(1000/1);
el17cd 15:8fbbdefbe720 81
el17cd 15:8fbbdefbe720 82 }
el17cd 16:64cd7bc094f9 83 if(!playing){
el17cd 16:64cd7bc094f9 84 deathScreen();
el17cd 16:64cd7bc094f9 85 }
el17cd 15:8fbbdefbe720 86 char buf[10];
el17cd 15:8fbbdefbe720 87 sprintf(buf, "%d", score);
el17cd 16:64cd7bc094f9 88 renderer.print(buf, 0, 0);
el17cd 15:8fbbdefbe720 89 memset(buf, 0, sizeof buf);
el17cd 15:8fbbdefbe720 90 renderer.refresh();
el17cd 15:8fbbdefbe720 91 faceVector.clear();
el17cd 16:64cd7bc094f9 92
el17cd 15:8fbbdefbe720 93 wait_ms(1000/30);
el17cd 15:8fbbdefbe720 94 }
el17cd 15:8fbbdefbe720 95 }
el17cd 16:64cd7bc094f9 96
el17cd 16:64cd7bc094f9 97 void Game::deathScreen(){
el17cd 16:64cd7bc094f9 98 //int selection = 1;
el17cd 16:64cd7bc094f9 99 renderer.drawDeathScreen(selection);
el17cd 16:64cd7bc094f9 100 }
el17cd 15:8fbbdefbe720 101