Václav Lízner
/
2048
school project
Diff: main.cpp
- 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--; + } } }