ELEC2645 (2018/19) / Mbed 2 deprecated el17cd

Dependencies:   mbed

Revision:
20:3ca430241df0
Parent:
19:ec4cb22accb0
Child:
21:6b5d2d75e083
--- a/Game/Game.cpp	Mon Apr 01 14:43:18 2019 +0000
+++ b/Game/Game.cpp	Mon Apr 01 17:11:40 2019 +0000
@@ -4,14 +4,13 @@
 
 
 Game::Game(){
+    noOfCubes = 10;
     homeSelection = 0;
     gamepad.init();
     renderer.init();
     timer.start();
-    
-    for(int i = 0; i < 10; i++){
-        Cube cube(rand()%100-50,0,20+ i*10,5);
-        cubeVector.push_back(cube);
+    for(int i = 0; i < noOfCubes; i++){
+        cubeArray[i].translate(rand()%100-50,0,20+ i*10);
     }
 }
 
@@ -20,52 +19,40 @@
     selection = true;
     playing = true;
     timer.reset();
+    
     while(1) {
         Vector2D coord = gamepad.get_coord();
         renderer.clear();
         renderer.drawHorizon(coord.x/15);
-        for (int c = 0; c< cubeVector.size(); c++)
-        {  
+        //pc.printf("a");
+        for (int c = 0; c< noOfCubes; c++){  
             if(playing){
                 if(score < 1500)
-                    cubeVector[c].translate((float)-coord.x*1.4,0,-2-(float)score/500);
+                    cubeArray[c].translate((float)-coord.x*1.4,0,-2-(float)score/500);
                 else{
-                    cubeVector[c].translate((float)-coord.x*1.4,0,-3.5);
+                    cubeArray[c].translate((float)-coord.x*1.4,0,-3.5);
                 }
             }
+            else{
+                coord.x = 0;
+                coord.y = 0;
+            }
             for (int i = 0; i < 6; i++){
-                faceVector.push_back(cubeVector[c].getFace(i));
-            }
-            if (cubeVector[c].despawn()){
-                //cubeVector.erase(cubeVector.begin() + c);
-                Cube cube(rand()%100-50,0,90,5);
-                //cubeVector.push_back(cube);
-                cubeVector[c] = cube;
+                faceArray[c*6 + i] = cubeArray[c].getFace(i);
             }
-            if (cubeVector[c].tooClose()){
-                cubeVector.erase(cubeVector.begin() + c);
+            if (cubeArray[c].despawn()){
+                cubeArray[c].resetPos();
+                cubeArray[c].translate(rand()%100-50,0,90);
+            }
+            if (cubeArray[c].tooClose()){
                 playing = false;
-                //renderer.invertMode();
-                //  ticker.attach(&resetScreen,1);
-                Cube cube(rand()%100-50,0,90,5);
-                cubeVector.push_back(cube);
+                cubeArray[c].resetPos();
+                cubeArray[c].translate(rand()%100-50,0,90);
             }
         }
-        for (int f = 0; f< faceVector.size(); f++){
-            for (int f2 = 0; f2< faceVector.size(); f2++){
-                if(faceVector[f2].getAvgZ() < faceVector[f2+1].getAvgZ()){
-                    Face temp = faceVector[f2+1];
-                    faceVector[f2+1] = faceVector[f2];
-                    faceVector[f2] = temp;
-                }
-            }
-        }
-        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);
-           
-        }
+        
+        renderer.drawAllFaces(faceArray, noOfCubes, coord.x);//faceArray, noOfCubes, coord.x);
+        
         if(playing){
             score = timer.read_ms()/200;
         }
@@ -75,16 +62,15 @@
                 break;
             }
         }
+        
                 
-        char buf[10];
+        char buf[5];
         sprintf(buf, "%d", score);
         renderer.print(buf, 0, 0);
         memset(buf, 0, sizeof buf);
         renderer.refresh();
-        faceVector.clear();  
 
-        wait_ms(1000/30);
-        
+        wait_ms(1000/28);
     }
 }
 
@@ -133,7 +119,7 @@
         homeButtonSelections();
         renderer.drawHomeScreen(homeSelection);
         renderer.refresh();
-        wait_ms(1000/30);
+        wait_ms(1000/28);
     }
 }
    
\ No newline at end of file