school project

Dependencies:   MMA8451Q mbed

Revision:
6:5711a5b57d17
Parent:
5:d6738e1238d8
Child:
7:29f6c0e0b427
--- a/main.cpp	Tue Jan 12 20:10:13 2016 +0000
+++ b/main.cpp	Tue Jan 12 22:41:40 2016 +0000
@@ -10,15 +10,17 @@
 void zobrazeni(void);
 void barva(int,int);
 void pohyb(void);
+void proved(int);
 
- int i,j,k,p;
+ int i,j,k;
+ int p=1;
  int RED, GREEN, BLUE;
  int RledA, RledB, GledA, GledB, BledA, BledB;
  float xAngle, yAngle;
  
  char acc_dir;
  
- int pole[4][4]={{7,0,0,7}, {0,0,0,0}, {0,0,0,0}, {7,0,0,7}};
+ int pole[4][4]={{2,0,0,0}, {0,0,0,2}, {2,0,0,0}, {2,0,0,0}};
 
 DigitalOut prvni(PTE5);
 DigitalOut druhy(PTE4);
@@ -74,28 +76,28 @@
     case 'D': //pohyb smerem dolu
         if(p==0)
         {
-        pole[0][0]*=(-1);
+        proved(1);
         p=1;
         }
         break;
-    case 'R': // pohyb smerem doprava
+    case 'R': // pohyb smerem vpravo
         if(p==0)
         {
-        pole[3][0]*=(-1);
+        proved(2);
         p=1;
         }
         break;
     case 'U': // pohyb smerem nahoru
         if(p==0)
         {
-        pole[0][3]*=(-1);
+        proved(3);
         p=1;
         }
         break;
-    case 'L': // pohyb smerem doleva
+    case 'L': // pohyb smerem vlevo
         if(p==0)
         {
-        pole[3][3]*=(-1);
+        proved(4);
         p=1;
         }
         break;
@@ -108,6 +110,99 @@
     }
 }
 
+void proved(int x)
+{
+    int a,b,c,d,n;
+    
+    for(n=0;n<4;n++)
+    {
+        
+        if(x==1) // dolu
+        {
+            a=pole[n][0];
+            b=pole[n][1];
+            c=pole[n][2];
+            d=pole[n][3];
+        }
+        
+        if(x==2) // vpravo
+        {
+            a=pole[3][n];
+            b=pole[2][n];
+            c=pole[1][n];
+            d=pole[0][n];
+        }
+        
+        if(x==3) // nahoru
+        {
+            a=pole[n][3];
+            b=pole[n][2];
+            c=pole[n][1];
+            d=pole[n][0];
+        }
+        
+        if(x==4) // vlevo
+        {
+            a=pole[0][n];
+            b=pole[1][n];
+            c=pole[2][n];
+            d=pole[3][n];
+        }
+        
+        //sesypani
+        if(a==0)
+            {a=b; b=c; c=d; d=0;}
+        if(a==0)
+            {a=b; b=c; c=d; d=0;}
+        if(a==0)
+            {a=b; b=c; c=d; d=0;}
+        if(b==0)
+            {b=c; c=d; d=0;}
+        if(b==0)
+            {b=c; c=d; d=0;}
+        if(c==0)
+            {c=d; d=0;}
+           
+           //spojeni 
+        if(a==b)
+            {a=2*a; b=c; c=d; d=0;}
+        if(b==c)
+            {b=2*b; c=d; d=0;}
+        if(c==d)
+            {c=2*c; d=0;}
+         
+        if(x==1) // dolu
+        {   
+            pole[n][0]=a;
+            pole[n][1]=b;
+            pole[n][2]=c;
+            pole[n][3]=d;
+        }
+        if(x==2) // vpravo
+        {   
+            pole[3][n]=a;
+            pole[2][n]=b;
+            pole[1][n]=c;
+            pole[0][n]=d;
+        }
+        
+        if(x==3) // nahoru
+        {   
+            pole[n][3]=a;
+            pole[n][2]=b;
+            pole[n][1]=c;
+            pole[n][0]=d;
+        }
+        
+        if(x==4) // vlevo
+        {   
+            pole[0][n]=a;
+            pole[1][n]=b;
+            pole[2][n]=c;
+            pole[3][n]=d;
+        }
+    }     
+}
 
 void zobrazeni()
 {
@@ -151,7 +246,7 @@
         
         barva(j,k);
                 
-            for(i=11;i>0;i--)
+            for(i=15;i>0;i--)
             {
                 if(RED>0)
                 {
@@ -226,10 +321,11 @@
                 Bled8=BledB;
                 } 
             
-                wait(0.00001);
+                wait(0.000005);
                 RED--;
                 BLUE--;
                 GREEN--;
+                
             }    
         }
     }