ELEC2645 (2018/19) / Mbed 2 deprecated el17cd

Dependencies:   mbed

Committer:
el17cd
Date:
Wed Apr 03 15:11:12 2019 +0000
Revision:
22:236319885874
Parent:
21:6b5d2d75e083
Child:
25:3995271e411c
Game now runs at a target fps of 60

Who changed what in which revision?

UserRevisionLine numberNew contents of line
el17cd 15:8fbbdefbe720 1 #include "Game.h"
el17cd 19:ec4cb22accb0 2
el17cd 15:8fbbdefbe720 3 Game::Game(){
el17cd 22:236319885874 4 noOfCubes = 25;
el17cd 18:8256546a3cbf 5 homeSelection = 0;
el17cd 15:8fbbdefbe720 6 gamepad.init();
el17cd 15:8fbbdefbe720 7 renderer.init();
el17cd 20:3ca430241df0 8 for(int i = 0; i < noOfCubes; i++){
el17cd 22:236319885874 9 cubeArray[i].translate(rand()%250-125,0,20+ i*10);
el17cd 15:8fbbdefbe720 10 }
el17cd 15:8fbbdefbe720 11 }
el17cd 15:8fbbdefbe720 12
el17cd 15:8fbbdefbe720 13 void Game::run(){
el17cd 18:8256546a3cbf 14 score = 0;
el17cd 18:8256546a3cbf 15 selection = true;
el17cd 18:8256546a3cbf 16 playing = true;
el17cd 22:236319885874 17
el17cd 15:8fbbdefbe720 18 while(1) {
el17cd 15:8fbbdefbe720 19 renderer.clear();
el17cd 22:236319885874 20 coord = gamepad.get_coord();
el17cd 22:236319885874 21
el17cd 15:8fbbdefbe720 22 renderer.drawHorizon(coord.x/15);
el17cd 22:236319885874 23
el17cd 20:3ca430241df0 24 for (int c = 0; c< noOfCubes; c++){
el17cd 15:8fbbdefbe720 25 if(playing){
el17cd 21:6b5d2d75e083 26 if(score < 2000)
el17cd 22:236319885874 27 cubeArray[c].translate(-coord.x*1.4f,0,-1-(float)score/1000);
el17cd 16:64cd7bc094f9 28 else{
el17cd 22:236319885874 29 cubeArray[c].translate(-coord.x*1.4f,0,-3);
el17cd 16:64cd7bc094f9 30 }
el17cd 15:8fbbdefbe720 31 }
el17cd 20:3ca430241df0 32 else{
el17cd 20:3ca430241df0 33 coord.x = 0;
el17cd 20:3ca430241df0 34 }
el17cd 15:8fbbdefbe720 35 for (int i = 0; i < 6; i++){
el17cd 20:3ca430241df0 36 faceArray[c*6 + i] = cubeArray[c].getFace(i);
el17cd 15:8fbbdefbe720 37 }
el17cd 20:3ca430241df0 38 if (cubeArray[c].despawn()){
el17cd 20:3ca430241df0 39 cubeArray[c].resetPos();
el17cd 22:236319885874 40 cubeArray[c].translate(rand()%250-125,0,140);
el17cd 20:3ca430241df0 41 }
el17cd 20:3ca430241df0 42 if (cubeArray[c].tooClose()){
el17cd 15:8fbbdefbe720 43 playing = false;
el17cd 20:3ca430241df0 44 cubeArray[c].resetPos();
el17cd 22:236319885874 45 cubeArray[c].translate(rand()%250-125,0,140);
el17cd 15:8fbbdefbe720 46 }
el17cd 15:8fbbdefbe720 47 }
el17cd 20:3ca430241df0 48
el17cd 22:236319885874 49 renderer.drawAllFaces(faceArray, noOfCubes, coord.x);
el17cd 20:3ca430241df0 50
el17cd 21:6b5d2d75e083 51 if(!playing){
el17cd 16:64cd7bc094f9 52 deathScreen();
el17cd 18:8256546a3cbf 53 if(deathButtonSelections()){
el17cd 18:8256546a3cbf 54 break;
el17cd 18:8256546a3cbf 55 }
el17cd 16:64cd7bc094f9 56 }
el17cd 22:236319885874 57 else{
el17cd 22:236319885874 58 addScore();
el17cd 22:236319885874 59 }
el17cd 20:3ca430241df0 60
el17cd 18:8256546a3cbf 61
el17cd 20:3ca430241df0 62 char buf[5];
el17cd 22:236319885874 63 sprintf(buf, "%d", score/3);
el17cd 16:64cd7bc094f9 64 renderer.print(buf, 0, 0);
el17cd 15:8fbbdefbe720 65 memset(buf, 0, sizeof buf);
el17cd 15:8fbbdefbe720 66 renderer.refresh();
el17cd 22:236319885874 67 wait_ms(1000/60);
el17cd 15:8fbbdefbe720 68 }
el17cd 15:8fbbdefbe720 69 }
el17cd 18:8256546a3cbf 70
el17cd 21:6b5d2d75e083 71 void Game::addScore(){
el17cd 21:6b5d2d75e083 72 score++;
el17cd 21:6b5d2d75e083 73 }
el17cd 21:6b5d2d75e083 74
el17cd 21:6b5d2d75e083 75 void Game::resetScore(){
el17cd 21:6b5d2d75e083 76 score = 0;
el17cd 21:6b5d2d75e083 77 }
el17cd 22:236319885874 78
el17cd 18:8256546a3cbf 79 bool Game::deathButtonSelections(){
el17cd 18:8256546a3cbf 80 if(gamepad.check_event(Gamepad::Y_PRESSED) == true){
el17cd 18:8256546a3cbf 81 selection = true;
el17cd 18:8256546a3cbf 82 }
el17cd 18:8256546a3cbf 83 else if(gamepad.check_event(Gamepad::A_PRESSED) == true){
el17cd 18:8256546a3cbf 84 selection = false;
el17cd 18:8256546a3cbf 85 }
el17cd 18:8256546a3cbf 86 if (selection == true && gamepad.check_event(Gamepad::B_PRESSED) == true){
el17cd 18:8256546a3cbf 87 playing = true;
el17cd 18:8256546a3cbf 88 score = 0;
el17cd 21:6b5d2d75e083 89 resetScore();
el17cd 18:8256546a3cbf 90 }
el17cd 18:8256546a3cbf 91 else if(selection == false && gamepad.check_event(Gamepad::B_PRESSED) == true){
el17cd 21:6b5d2d75e083 92 resetScore();
el17cd 18:8256546a3cbf 93 return true;
el17cd 18:8256546a3cbf 94 }
el17cd 18:8256546a3cbf 95 return false;
el17cd 18:8256546a3cbf 96 }
el17cd 18:8256546a3cbf 97
el17cd 18:8256546a3cbf 98 void Game::homeButtonSelections(){
el17cd 18:8256546a3cbf 99 if(gamepad.check_event(Gamepad::Y_PRESSED) == true && homeSelection > 0){
el17cd 18:8256546a3cbf 100 homeSelection--;
el17cd 18:8256546a3cbf 101 }
el17cd 18:8256546a3cbf 102 else if(gamepad.check_event(Gamepad::A_PRESSED) == true && homeSelection < 2){
el17cd 18:8256546a3cbf 103 homeSelection++;
el17cd 18:8256546a3cbf 104 }
el17cd 18:8256546a3cbf 105 if (homeSelection == 0 && gamepad.check_event(Gamepad::B_PRESSED) == true){
el17cd 18:8256546a3cbf 106 run();
el17cd 18:8256546a3cbf 107 }
el17cd 18:8256546a3cbf 108 else if(homeSelection == 2 && gamepad.check_event(Gamepad::B_PRESSED) == true){
el17cd 18:8256546a3cbf 109 //return true;
el17cd 18:8256546a3cbf 110 }
el17cd 18:8256546a3cbf 111 }
el17cd 16:64cd7bc094f9 112
el17cd 16:64cd7bc094f9 113 void Game::deathScreen(){
el17cd 16:64cd7bc094f9 114 renderer.drawDeathScreen(selection);
el17cd 16:64cd7bc094f9 115 }
el17cd 18:8256546a3cbf 116
el17cd 18:8256546a3cbf 117 void Game::homeScreen(){
el17cd 18:8256546a3cbf 118 while(1){
el17cd 18:8256546a3cbf 119 renderer.clear();
el17cd 18:8256546a3cbf 120 homeButtonSelections();
el17cd 18:8256546a3cbf 121 renderer.drawHomeScreen(homeSelection);
el17cd 18:8256546a3cbf 122 renderer.refresh();
el17cd 22:236319885874 123 wait_ms(1000/60);
el17cd 18:8256546a3cbf 124 }
el17cd 18:8256546a3cbf 125 }
el17cd 15:8fbbdefbe720 126