ELEC2645 (2018/19) / Mbed 2 deprecated el17cd

Dependencies:   mbed

Revision:
8:a667bc5050c1
Parent:
7:15543cb10a14
Child:
9:5915fc800824
--- a/main.cpp	Sat Feb 23 17:45:43 2019 +0000
+++ b/main.cpp	Tue Feb 26 09:35:03 2019 +0000
@@ -18,60 +18,82 @@
 #include "Cube.h"
 #include "Gamepad.h"
 
+Serial pc(USBTX, USBRX); // tx, rx
+Ticker ticker;
+Gamepad gamepad;
+std::vector<Cube> cubeVector; 
 
- Gamepad gamepad;
+void spawnCubes()
+{
+    cubeVector.clear();
+    for (int i = 0; i<20;i++){
+        Cube cube(rand()%80-40,rand()%80-40,i*40,5);
+        cubeVector.push_back(cube);
+    }
+}
+
 int main()
 {
     
     gamepad.init();
     Rasturizer renderer;
-    Cube cube1(-30,0,100,3);
-    Cube cube2(30,0,100,3);
-    Cube cube3(-30,0,50,3);
-    Cube cube4(30,0,50,3);
+    ticker.attach(&spawnCubes,10);
+    
+    for (int i = 0; i<20;i++){
+        Cube cube(rand()%80-40,rand()%80-40,i*40,5);
+        cubeVector.push_back(cube);
+    }
 
-    
     int i = 0;
     while(1) {
         renderer.clear();
-        //if (i == 6)
-        //    i = 0;
-        for (int i = 0; i < 6; i++){
-        renderer.drawFace(cube1.getFace(i));
+        Vector2D coord = gamepad.get_coord();
+        bool right = false;
+        bool left = false;
+        bool up = false;
+        bool down = false;
+        
+        //pc.printf("%f", 
+        
+        if(gamepad.check_event(Gamepad::R_PRESSED) == true){ 
+            right = true;
         }
-        for (int i = 0; i < 6; i++){
-        renderer.drawFace(cube2.getFace(i));
+        else if( gamepad.check_event(Gamepad::L_PRESSED) == true){ 
+            left = true;
         }
-        for (int i = 0; i < 6; i++){
-        renderer.drawFace(cube3.getFace(i));
+        else if(gamepad.check_event(Gamepad::Y_PRESSED) == true){ 
+            up = true;
         }
-        for (int i = 0; i < 6; i++){
-        renderer.drawFace(cube4.getFace(i));
+        else if( gamepad.check_event(Gamepad::A_PRESSED) == true){ 
+            down = true;
         }
         
 
-        Vector2D coord = gamepad.get_coord();
-        cube1.translate(-coord.x*3,0,-coord.y*3);
-        cube2.translate(-coord.x*3,0,-coord.y*3);
-        cube3.translate(-coord.x*3,0,-coord.y*3);
-        cube4.translate(-coord.x*3,0,-coord.y*3);
-        
+        for (int c = 0; c< cubeVector.size(); c++)
+        {  
+            for (int i = 0; i < 6; i++){
+                renderer.drawFace(cubeVector[c].getFace(i));
+            }
+            cubeVector[c].translate(0,0,-3);//-coord.x*2,0,-coord.y*2);
+            cubeVector[c].rotateY(coord.x/10);
+            cubeVector[c].rotateX(-coord.y/10);
+            /*
+            if(right == true){ 
+                cubeVector[c].rotateY(0.2);
+            }
+            else if(left == true){ 
+                cubeVector[c].rotateY(-0.2);
+            }
+            else if(up == true){ 
+                cubeVector[c].rotateX(0.2);
+            }
+            else if(down == true){ 
+                cubeVector[c].rotateX(-0.2);
+            }*/
+        }
         
-        if(gamepad.check_event(Gamepad::B_PRESSED) == true){ 
-            cube1.rotateX(0.2);
-            cube2.rotateX(0.2);
-            cube3.rotateX(0.2);
-            cube4.rotateX(0.2);
-        }
-        if( gamepad.check_event(Gamepad::X_PRESSED) == true){ 
-            cube1.rotateX(-0.2);
-            cube2.rotateX(-0.2);
-            cube3.rotateX(-0.2);
-            cube4.rotateX(-0.2);
-        }
-
         renderer.refresh(); // refresh the LCD so the pixels appear
-        wait_ms(1000/15);  // this gives a refresh rate of 10 frames per second
+        wait_ms(1000/30);  // this gives a refresh rate of 10 frames per second
         //i++;
     }
-}
\ No newline at end of file
+}