Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
Diff: Game/Game.cpp
- Revision:
- 18:8256546a3cbf
- Parent:
- 17:3c9672c6e532
- Child:
- 19:ec4cb22accb0
--- a/Game/Game.cpp Sun Mar 31 18:10:18 2019 +0000 +++ b/Game/Game.cpp Sun Mar 31 22:05:54 2019 +0000 @@ -1,49 +1,34 @@ #include "Game.h" +Serial pc(USBTX, USBRX); // tx, rx Game::Game(){ - playing = true; - score = 0; + homeSelection = 0; gamepad.init(); renderer.init(); + timer.start(); - for(int i = 0; i < 7; i++){ - Cube cube(rand()%80-40,0,30+ i*20,5); + for(int i = 0; i < 10; i++){ + Cube cube(rand()%100-50,0,20+ i*10,5); cubeVector.push_back(cube); } } void Game::run(){ - + score = 0; + selection = true; + playing = true; while(1) { Vector2D coord = gamepad.get_coord(); renderer.clear(); - if(playing){ - score++; - } - else{ - if(gamepad.check_event(Gamepad::Y_PRESSED) == true){ - selection = true; - } - else if(gamepad.check_event(Gamepad::A_PRESSED) == true){ - selection = false; - } - if (selection == true && gamepad.check_event(Gamepad::B_PRESSED) == true){ - playing = true; - } - else if(selection == false && gamepad.check_event(Gamepad::B_PRESSED) == true){ - break; - } - } - renderer.drawHorizon(coord.x/15); for (int c = 0; c< cubeVector.size(); c++) { if(playing){ - if(score < 2500) - cubeVector[c].translate(-coord.x*1.4,0,-2.5-(float)score/1000); + if(score < 1500) + cubeVector[c].translate((float)-coord.x*1.4,0,-2-(float)score/500); else{ - cubeVector[c].translate(-coord.x*1.4,0,(float)-5); + cubeVector[c].translate((float)-coord.x*1.4,0,-3.5); } } for (int i = 0; i < 6; i++){ @@ -51,16 +36,15 @@ } if (cubeVector[c].despawn()){ cubeVector.erase(cubeVector.begin() + c); - Cube cube(rand()%80-40,0,90,5); + Cube cube(rand()%100-50,0,90,5); cubeVector.push_back(cube); } if (cubeVector[c].tooClose()){ cubeVector.erase(cubeVector.begin() + c); playing = false; //renderer.invertMode(); - score = 0; // ticker.attach(&resetScreen,1); - Cube cube(rand()%80-40,0,90,5); + Cube cube(rand()%100-50,0,90,5); cubeVector.push_back(cube); } } @@ -73,16 +57,22 @@ } } } - for (int f = 0; f< faceVector.size() ; f++){ //pc.printf("%f\n", faceVector[f].getAvgZ()); renderer.drawFace(faceVector[f], coord.x/15); //wait_ms(1000/1); } - if(!playing){ + if(playing){ + score = timer.read_ms()/200; + } + else{ deathScreen(); + if(deathButtonSelections()){ + break; + } } + char buf[10]; sprintf(buf, "%d", score); renderer.print(buf, 0, 0); @@ -91,11 +81,57 @@ faceVector.clear(); wait_ms(1000/30); + } } + +bool Game::deathButtonSelections(){ + if(gamepad.check_event(Gamepad::Y_PRESSED) == true){ + selection = true; + } + else if(gamepad.check_event(Gamepad::A_PRESSED) == true){ + selection = false; + } + if (selection == true && gamepad.check_event(Gamepad::B_PRESSED) == true){ + playing = true; + score = 0; + timer.reset(); + } + else if(selection == false && gamepad.check_event(Gamepad::B_PRESSED) == true){ + timer.reset(); + return true; + } + return false; +} + +void Game::homeButtonSelections(){ + if(gamepad.check_event(Gamepad::Y_PRESSED) == true && homeSelection > 0){ + homeSelection--; + } + else if(gamepad.check_event(Gamepad::A_PRESSED) == true && homeSelection < 2){ + homeSelection++; + } + if (homeSelection == 0 && gamepad.check_event(Gamepad::B_PRESSED) == true){ + run(); + } + else if(homeSelection == 2 && gamepad.check_event(Gamepad::B_PRESSED) == true){ + //return true; + } +} void Game::deathScreen(){ //int selection = 1; renderer.drawDeathScreen(selection); } + +void Game::homeScreen(){ + while(1){ + renderer.clear(); + homeButtonSelections(); + renderer.drawHomeScreen(homeSelection); + renderer.refresh(); + wait_ms(1000/30); + } + +} \ No newline at end of file