ELEC2645 (2018/19) / Mbed 2 deprecated el17cd

Dependencies:   mbed

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