Snake vs Block Game to be run upon K64F.

Dependencies:   mbed

Revision:
18:b391caa5754c
Parent:
17:54e13faeaf64
Child:
19:05cc9f801468
--- a/SnakevsBlock/SnakevsBlock.cpp	Fri Apr 05 06:28:13 2019 +0000
+++ b/SnakevsBlock/SnakevsBlock.cpp	Mon Apr 08 05:57:04 2019 +0000
@@ -18,6 +18,21 @@
     send=0;
     speed = 1;
     blockgap = 0;
+    b0 = 1;
+    b1 = 1;
+    b2 = 1;
+    b3 = 1;
+    b4 = 1;
+    b5 = 1;
+    b6 = 1;
+    b7 = 1;
+    b8 = 1;
+    b9 = 1;
+    b10 = 1;
+    b11 = 1;
+    b12 = 1;
+    b13 = 1;
+    b14 = 1; 
 }
 
 
@@ -42,6 +57,7 @@
         foodbuff +=1;
     }
     if(foodbuff >=8) {
+        blockgap = 0;
         send = _b.draw(lcd, length, blocknum, srn);
     }
     
@@ -62,16 +78,16 @@
 
 void SnakevsBlock::update(Gamepad &pad) //Updates objects on screen.
 {
+    CheckSnakeBlockCollision(pad); //Function checks for when the snake collides with any of the blocks.
     CheckSnakeFoodCollision(pad); //Function checks for when the snake collides with it's food.
-    CheckSnakeBlockCollision(pad); //Function checks for when the snake collides with any of the blocks.
     CheckSnakeBlockSidesCollision(pad, _d); //Function checks for when the snake collides with any of the blocks' sides.
-    _s.update(_d,_mag, length, speed);
+    _s.update(_d,_mag, length, speed, b0_to_b14);
     _f.update();
     _ff.update();
     _fff.update(); 
     _b.update(blocknum, srn, send);
     blockgap++;
-    if(blockgap == 150)  {  //change this while changing the block drop gap
+    if(blockgap == 300)  {  //change this while changing the block drop gap
         blockgap = 0;
     }
 }
@@ -129,7 +145,7 @@
         pad.tone(1000.0,0.1);
         f_pos.x = rand() % 82;
         f_pos.y = -2;
-        if((blockgap==147)||(blockgap==148)||(blockgap==149)||(blockgap==150)||(blockgap==0)||(blockgap==1)||(blockgap==2)||(blockgap==3)||(blockgap==4)||(blockgap==5)||(blockgap==6)||(blockgap==7)||(blockgap==8)||(blockgap==9)||(blockgap==10)||(blockgap==11)||(blockgap==12)||(blockgap==13))  { //change this while changing the block drop gap
+        if((blockgap<28)&&(blockgap>292))  { //change this while changing the block drop gap
             if(f_pos.y == -2)  {
                 f_pos.y = -18;
             }
@@ -164,7 +180,7 @@
         pad.tone(1000.0,0.1);
         ff_pos.x = rand() % 82;
         ff_pos.y = -2;
-        if((blockgap==147)||(blockgap==148)||(blockgap==149)||(blockgap==150)||(blockgap==0)||(blockgap==1)||(blockgap==2)||(blockgap==3)||(blockgap==4)||(blockgap==5)||(blockgap==6)||(blockgap==7)||(blockgap==8)||(blockgap==9)||(blockgap==10)||(blockgap==11)||(blockgap==12)||(blockgap==13))  { //change this while changing the block drop gap
+        if((blockgap<28)&&(blockgap>292))  { //change this while changing the block drop gap
             if(ff_pos.y == -2)  {
                 ff_pos.y = -18;
             }
@@ -199,7 +215,7 @@
         pad.tone(1000.0,0.1);
         fff_pos.x = rand() % 82;
         fff_pos.y = -2;
-        if((blockgap==147)||(blockgap==148)||(blockgap==149)||(blockgap==150)||(blockgap==0)||(blockgap==1)||(blockgap==2)||(blockgap==3)||(blockgap==4)||(blockgap==5)||(blockgap==6)||(blockgap==7)||(blockgap==8)||(blockgap==9)||(blockgap==10)||(blockgap==11)||(blockgap==12)||(blockgap==13))  { //change this while changing the block drop gap
+        if((blockgap<28)&&(blockgap>292))  { //change this while changing the block drop gap
             if(fff_pos.y == -2)  {
                 fff_pos.y = -18;
             }
@@ -261,9 +277,13 @@
         send=1;
         blocknum-=1;
         if(blocknum >= 0)  {  // to make sure that snake doesn't decrease in length if number on the block is less than 1;
+            speed = 2;
             length-=1;
             pad.tone(1000.0,0.1);
-            wait(0.1);
+            wait(0.05);
+        }
+        else  {
+            speed = 1;
         }
     }
     
@@ -299,9 +319,13 @@
         send=1;
         blocknum-=1;
         if(blocknum >= 0)  {  // to make sure that snake doesn't decrease in length if number on the block is less than 1;
+            speed = 2;
             length-=1;
             pad.tone(1000.0,0.1);
-            wait(0.1);
+            wait(0.05);
+        }
+        else  {
+            speed = 1;
         }
         
     }
@@ -338,9 +362,13 @@
         send=1;
         blocknum-=1;
         if(blocknum >= 0)  {  // to make sure that snake doesn't decrease in length if number on the block is less than 1;
+            speed = 2;
             length-=1;
             pad.tone(1000.0,0.1);
-            wait(0.1);
+            wait(0.05);
+        }
+        else  {
+            speed = 1;
         }
         
     }
@@ -379,7 +407,10 @@
         if(blocknum >= 0)  {  // to make sure that snake doesn't decrease in length if number on the block is less than 1;
             length-=1;
             pad.tone(1000.0,0.1);
-            wait(0.1);
+            wait(0.05);
+        }
+        else  {
+            speed = 1;
         }
         
     }
@@ -417,9 +448,13 @@
         send=1;
         blocknum-=1;
         if(blocknum >= 0)  {  // to make sure that snake doesn't decrease in length if number on the block is less than 1;
+            speed = 2;
             length-=1;
             pad.tone(1000.0,0.1);
-            wait(0.1);
+            wait(0.05);
+        }
+        else  {
+            speed = 1;
         }
     }
     
@@ -444,14 +479,13 @@
         Vector2D snake_posb12 = _s.get_pos_before12(length);
         Vector2D snake_posb13 = _s.get_pos_before13(length);
         Vector2D snake_posb14 = _s.get_pos_before14(length);
-        Vector2D snake_posb15 = _s.get_pos_before15(length);
         
         //If statements check if the snake sprite has collided with any
         //of the blocks' sides and then stop the snake moving in x axis
         
     //For West
     if (
-            ((((snake_pos.y == b_pos.y) ||
+            ((((snake_pos.y == b_pos.y + 1) ||
             (snake_pos.y == b_pos.y + 1) ||
             (snake_pos.y == b_pos.y + 2) ||
             (snake_pos.y == b_pos.y + 3) ||
@@ -504,7 +538,51 @@
             (snake_pos.x + 2 == b_pos.x + 84)))&&(d != E)) //W
         ) {
         //add some code that it doesn't move
-        speed = 0;
+        if(length == 1)  {
+            b0 = 0;
+        }
+        if(length == 2)  {
+            b1 = 0;
+        }
+        if(length==3)  {
+            b2 = 0;
+        }
+        if(length==4)  {
+            b3 = 0;
+        }
+        if(length==5)  {
+            b4 = 0;
+        }
+        if(length==6)  {
+            b5 = 0;
+        }
+        if(length==7)  {
+            b6 = 0;
+        }
+        if(length==8)  {
+            b7 = 0;
+        }
+        if(length==9)  {
+            b8 = 0;
+        }
+        if(length==10)  {
+            b9 = 0;
+        }
+        if(length==11)  {
+            b10 = 0;
+        }
+        if(length==12)  {
+            b11 = 0;
+        }
+        if(length==13)  {
+            b12 = 0;
+        }
+        if(length == 14)  {
+            b13 = 0;
+        }
+        if(length==15)  {
+            b14 = 0;
+        }
     }
     
     else if (
@@ -558,10 +636,51 @@
             (snake_posb1.x + 1 == b_pos.x + 84) ||  //W
             (snake_posb1.x + 2 == b_pos.x + 20) ||  //W
             (snake_posb1.x + 2 == b_pos.x + 52) ||  //W
-            (snake_posb1.x + 2 == b_pos.x + 84)))&&(d != E)) //W
+            (snake_posb1.x + 2 == b_pos.x + 84)))&&(d != E)&&(length !=1)) //W
         ) {
         //add some code that it doesn't move
-        speed = 0;
+        if(length == 2)  {
+            b0 = 0;
+        }
+         if(length == 3)  {
+            b1 = 0;
+        }
+         if(length == 4)  {
+            b2 = 0;
+        }
+         if(length == 5)  {
+            b3 = 0;
+        }
+         if(length == 6)  {
+            b4 = 0;
+        }
+         if(length == 7)  {
+            b5 = 0;
+        }
+         if(length == 8)  {
+            b6 = 0;
+        }
+         if(length == 9)  {
+            b7 = 0;
+        }
+         if(length == 10)  {
+            b8 = 0;
+        }
+         if(length == 11)  {
+            b9 = 0;
+        }
+         if(length == 12)  {
+            b10 = 0;
+        }
+         if(length == 13)  {
+            b11 = 0;
+        }
+         if(length == 14)  {
+            b12 = 0;
+        }
+         if(length == 15)  {
+            b13 = 0;
+        }
     }
     
     else if (
@@ -615,10 +734,48 @@
             (snake_posb2.x + 1 == b_pos.x + 84) ||  //W
             (snake_posb2.x + 2 == b_pos.x + 20) ||  //W
             (snake_posb2.x + 2 == b_pos.x + 52) ||  //W
-            (snake_posb2.x + 2 == b_pos.x + 84)))&&(d != E)) //W
+            (snake_posb2.x + 2 == b_pos.x + 84)))&&(d != E)&&(length !=1)&&(length !=2)) //W
         ) {
         //add some code that it doesn't move
-        speed = 0;
+        if(length == 3)  {
+            b0 = 0;
+        }
+         if(length == 4)  {
+            b1 = 0;
+        }
+         if(length == 5)  {
+            b2 = 0;
+        }
+         if(length == 6)  {
+            b3 = 0;
+        }
+         if(length == 7)  {
+            b4 = 0;
+        }
+         if(length == 8)  {
+            b5 = 0;
+        }
+         if(length == 9)  {
+            b6 = 0;
+        }
+         if(length == 10)  {
+            b7 = 0;
+        }
+         if(length == 11)  {
+            b8 = 0;
+        }
+         if(length == 12)  {
+            b9 = 0;
+        }
+         if(length == 13)  {
+            b10 = 0;
+        }
+         if(length == 14)  {
+            b11 = 0;
+        }
+         if(length == 15)  {
+            b12 = 0;
+        }
     }
     
     else if (
@@ -672,10 +829,45 @@
             (snake_posb3.x + 1 == b_pos.x + 84) ||  //W
             (snake_posb3.x + 2 == b_pos.x + 20) ||  //W
             (snake_posb3.x + 2 == b_pos.x + 52) ||  //W
-            (snake_posb3.x + 2 == b_pos.x + 84)))&&(d != E)) //W
+            (snake_posb3.x + 2 == b_pos.x + 84)))&&(d != E)&&(length !=1)&&(length !=2)&&(length !=3)) //W
         ) {
         //add some code that it doesn't move
-        speed = 0;
+        if(length == 4)  {
+            b0 = 0;
+        }
+         if(length == 5)  {
+            b1 = 0;
+        }
+         if(length == 6)  {
+            b2 = 0;
+        }
+         if(length == 7)  {
+            b3 = 0;
+        }
+         if(length == 8)  {
+            b4 = 0;
+        }
+         if(length == 9)  {
+            b5 = 0;
+        }
+         if(length == 10)  {
+            b6 = 0;
+        }
+         if(length == 11)  {
+            b7 = 0;
+        }
+         if(length == 12)  {
+            b8 = 0;
+        }
+         if(length == 13)  {
+            b9 = 0;
+        }
+         if(length == 14)  {
+            b10 = 0;
+        }
+         if(length == 15)  {
+            b11 = 0;
+        }
     }
     
     else if (
@@ -729,10 +921,42 @@
             (snake_posb4.x + 1 == b_pos.x + 84) ||  //W
             (snake_posb4.x + 2 == b_pos.x + 20) ||  //W
             (snake_posb4.x + 2 == b_pos.x + 52) ||  //W
-            (snake_posb4.x + 2 == b_pos.x + 84)))&&(d != E)) //W
+            (snake_posb4.x + 2 == b_pos.x + 84)))&&(d != E)&&(length !=1)&&(length !=2)&&(length !=3)&&(length !=4)) //W
         ) {
         //add some code that it doesn't move
-        speed = 0;
+        if(length == 5)  {
+            b0 = 0;
+        }
+         if(length == 6)  {
+            b1 = 0;
+        }
+         if(length == 7)  {
+            b2 = 0;
+        }
+         if(length == 8)  {
+            b3 = 0;
+        }
+         if(length == 9)  {
+            b4 = 0;
+        }
+         if(length == 10)  {
+            b5 = 0;
+        }
+         if(length == 11)  {
+            b6 = 0;
+        }
+         if(length == 12)  {
+            b7 = 0;
+        }
+         if(length == 13)  {
+            b8 = 0;
+        }
+         if(length == 14)  {
+            b9 = 0;
+        }
+         if(length == 15)  {
+            b10 = 0;
+        }
     }
     
     else if (
@@ -786,10 +1010,39 @@
             (snake_posb5.x + 1 == b_pos.x + 84) ||  //W
             (snake_posb5.x + 2 == b_pos.x + 20) ||  //W
             (snake_posb5.x + 2 == b_pos.x + 52) ||  //W
-            (snake_posb5.x + 2 == b_pos.x + 84)))&&(d != E)) //W
+            (snake_posb5.x + 2 == b_pos.x + 84)))&&(d != E)&&(length !=1)&&(length !=2)&&(length !=3)&&(length !=4)&&(length !=5)) //W
         ) {
         //add some code that it doesn't move
-        speed = 0;
+        if(length == 6)  {
+            b0 = 0;
+        }
+         if(length == 7)  {
+            b1 = 0;
+        }
+         if(length == 8)  {
+            b2 = 0;
+        }
+         if(length == 9)  {
+            b3 = 0;
+        }
+         if(length == 10)  {
+            b4 = 0;
+        }
+         if(length == 11)  {
+            b5 = 0;
+        }
+         if(length == 12)  {
+            b6 = 0;
+        }
+         if(length == 13)  {
+            b7 = 0;
+        }
+         if(length == 14)  {
+            b8 = 0;
+        }
+         if(length == 15)  {
+            b9 = 0;
+        }
     }
     
     else if (
@@ -843,10 +1096,36 @@
             (snake_posb6.x + 1 == b_pos.x + 84) ||  //W
             (snake_posb6.x + 2 == b_pos.x + 20) ||  //W
             (snake_posb6.x + 2 == b_pos.x + 52) ||  //W
-            (snake_posb6.x + 2 == b_pos.x + 84)))&&(d != E)) //W
+            (snake_posb6.x + 2 == b_pos.x + 84)))&&(d != E)&&(length !=1)&&(length !=2)&&(length !=3)&&(length !=4)&&(length !=5)&&(length !=6)) //W
         ) {
         //add some code that it doesn't move
-        speed = 0;
+        if(length == 7)  {
+            b0 = 0;
+        }
+         if(length == 8)  {
+            b1 = 0;
+        }
+         if(length == 9)  {
+            b2 = 0;
+        }
+         if(length == 10)  {
+            b3 = 0;
+        }
+         if(length == 11)  {
+            b4 = 0;
+        }
+         if(length == 12)  {
+            b5 = 0;
+        }
+         if(length == 13)  {
+            b6 = 0;
+        }
+         if(length == 14)  {
+            b7 = 0;
+        }
+         if(length == 15)  {
+            b8 = 0;
+        }
     }
     
     else if (
@@ -900,10 +1179,33 @@
             (snake_posb7.x + 1 == b_pos.x + 84) ||  //W
             (snake_posb7.x + 2 == b_pos.x + 20) ||  //W
             (snake_posb7.x + 2 == b_pos.x + 52) ||  //W
-            (snake_posb7.x + 2 == b_pos.x + 84)))&&(d != E)) //W
+            (snake_posb7.x + 2 == b_pos.x + 84)))&&(d != E)&&(length !=1)&&(length !=2)&&(length !=3)&&(length !=4)&&(length !=5)&&(length !=6)&&(length !=7)) //W
         ) {
         //add some code that it doesn't move
-        speed = 0;
+        if(length == 8)  {
+            b0 = 0;
+        }
+         if(length == 9)  {
+            b1 = 0;
+        }
+         if(length == 10)  {
+            b2 = 0;
+        }
+         if(length == 11)  {
+            b3 = 0;
+        }
+         if(length == 12)  {
+            b4 = 0;
+        }
+         if(length == 13)  {
+            b5 = 0;
+        }
+         if(length == 14)  {
+            b6 = 0;
+        }
+         if(length == 15)  {
+            b7 = 0;
+        }
     }
     
     else if (
@@ -957,10 +1259,30 @@
             (snake_posb8.x + 1 == b_pos.x + 84) ||  //W
             (snake_posb8.x + 2 == b_pos.x + 20) ||  //W
             (snake_posb8.x + 2 == b_pos.x + 52) ||  //W
-            (snake_posb8.x + 2 == b_pos.x + 84)))&&(d != E)) //W
+            (snake_posb8.x + 2 == b_pos.x + 84)))&&(d != E)&&(length !=1)&&(length !=2)&&(length !=3)&&(length !=4)&&(length !=5)&&(length !=6)&&(length !=7)&&(length !=8)) //W
         ) {
         //add some code that it doesn't move
-        speed = 0;
+        if(length == 9)  {
+            b0 = 0;
+        }
+         if(length == 10)  {
+            b1 = 0;
+        }
+         if(length == 11)  {
+            b2 = 0;
+        }
+         if(length == 12)  {
+            b3 = 0;
+        }
+         if(length == 13)  {
+            b4 = 0;
+        }
+         if(length == 14)  {
+            b5 = 0;
+        }
+         if(length == 15)  {
+            b6 = 0;
+        }
     }
     
     else if (
@@ -1014,10 +1336,27 @@
             (snake_posb9.x + 1 == b_pos.x + 84) ||  //W
             (snake_posb9.x + 2 == b_pos.x + 20) ||  //W
             (snake_posb9.x + 2 == b_pos.x + 52) ||  //W
-            (snake_posb9.x + 2 == b_pos.x + 84)))&&(d != E)) //W
+            (snake_posb9.x + 2 == b_pos.x + 84)))&&(d != E)&&(length !=1)&&(length !=2)&&(length !=3)&&(length !=4)&&(length !=5)&&(length !=6)&&(length !=7)&&(length !=8)&&(length !=9)) //W
         ) {
         //add some code that it doesn't move
-        speed = 0;
+        if(length == 10)  {
+            b0 = 0;
+        }
+         if(length == 11)  {
+            b1 = 0;
+        }
+         if(length == 12)  {
+            b2 = 0;
+        }
+         if(length == 13)  {
+            b3 = 0;
+        }
+         if(length == 14)  {
+            b4 = 0;
+        }
+         if(length == 15)  {
+            b5 = 0;
+        }
     }
     
     else if (
@@ -1071,10 +1410,24 @@
             (snake_posb10.x + 1 == b_pos.x + 84) ||  //W
             (snake_posb10.x + 2 == b_pos.x + 20) ||  //W
             (snake_posb10.x + 2 == b_pos.x + 52) ||  //W
-            (snake_posb10.x + 2 == b_pos.x + 84)))&&(d != E)) //W
+            (snake_posb10.x + 2 == b_pos.x + 84)))&&(d != E)&&(length !=1)&&(length !=2)&&(length !=3)&&(length !=4)&&(length !=5)&&(length !=6)&&(length !=7)&&(length !=8)&&(length !=9)&&(length !=10)) //W
         ) {
         //add some code that it doesn't move
-        speed = 0;
+        if(length == 11)  {
+            b0 = 0;
+        }
+         if(length == 12)  {
+            b1 = 0;
+        }
+         if(length == 13)  {
+            b2 = 0;
+        }
+         if(length == 14)  {
+            b3 = 0;
+        }
+         if(length == 15)  {
+            b4 = 0;
+        }
     }
     
     else if (
@@ -1128,10 +1481,21 @@
             (snake_posb11.x + 1 == b_pos.x + 84) ||  //W
             (snake_posb11.x + 2 == b_pos.x + 20) ||  //W
             (snake_posb11.x + 2 == b_pos.x + 52) ||  //W
-            (snake_posb11.x + 2 == b_pos.x + 84)))&&(d != E)) //W
+            (snake_posb11.x + 2 == b_pos.x + 84)))&&(d != E)&&(length !=1)&&(length !=2)&&(length !=3)&&(length !=4)&&(length !=5)&&(length !=6)&&(length !=7)&&(length !=8)&&(length !=9)&&(length !=10)&&(length != 11)) //W
         ) {
         //add some code that it doesn't move
-        speed = 0;
+        if(length == 12)  {
+            b0 = 0;
+        }
+         if(length == 13)  {
+            b1 = 0;
+        }
+         if(length == 14)  {
+            b2 = 0;
+        }
+         if(length == 15)  {
+            b3 = 0;
+        }
     }
     
     else if (
@@ -1185,10 +1549,19 @@
             (snake_posb12.x + 1 == b_pos.x + 84) ||  //W
             (snake_posb12.x + 2 == b_pos.x + 20) ||  //W
             (snake_posb12.x + 2 == b_pos.x + 52) ||  //W
-            (snake_posb12.x + 2 == b_pos.x + 84)))&&(d != E)) //W
+            (snake_posb12.x + 2 == b_pos.x + 84)))&&(d != E)&&(length !=1)&&(length !=2)&&(length !=3)&&(length !=4)&&(length !=5)&&(length !=6)&&(length !=7)&&(length !=8)&&(length !=9)&&(length !=10)&&(length != 11)&&(length != 12)) //W
         ) {
         //add some code that it doesn't move
-        speed = 0;
+        if(length == 13)  {
+            b0 = 0;
+        }
+         if(length == 14)  {
+            b1 = 0;
+        }
+         if(length == 15)  {
+            b2 = 0;
+        }
+        speed = speed/2;
     }
     
     else if (
@@ -1242,10 +1615,15 @@
             (snake_posb13.x + 1 == b_pos.x + 84) ||  //W
             (snake_posb13.x + 2 == b_pos.x + 20) ||  //W
             (snake_posb13.x + 2 == b_pos.x + 52) ||  //W
-            (snake_posb13.x + 2 == b_pos.x + 84)))&&(d != E)) //W
+            (snake_posb13.x + 2 == b_pos.x + 84)))&&(d != E)&&(length !=1)&&(length !=2)&&(length !=3)&&(length !=4)&&(length !=5)&&(length !=6)&&(length !=7)&&(length !=8)&&(length !=9)&&(length !=10)&&(length != 11)&&(length != 12)&&(length != 13)) //W
         ) {
         //add some code that it doesn't move
-        speed = 0;
+        if(length == 14)  {
+            b0 = 0;
+        }
+         if(length == 15)  {
+            b1 = 0;
+        }
     }
     
     else if (
@@ -1299,67 +1677,12 @@
             (snake_posb14.x + 1 == b_pos.x + 84) ||  //W
             (snake_posb14.x + 2 == b_pos.x + 20) ||  //W
             (snake_posb14.x + 2 == b_pos.x + 52) ||  //W
-            (snake_posb14.x + 2 == b_pos.x + 84)))&&(d != E)) //W
+            (snake_posb14.x + 2 == b_pos.x + 84)))&&(d != E)&&(length !=1)&&(length !=2)&&(length !=3)&&(length !=4)&&(length !=5)&&(length !=6)&&(length !=7)&&(length !=8)&&(length !=9)&&(length !=10)&&(length != 11)&&(length != 12)&&(length != 13)&&(length != 14)) //W
         ) {
         //add some code that it doesn't move
-        speed = 0;
-    }
-    
-    else if (
-            ((((snake_posb15.y == b_pos.y) ||
-            (snake_posb15.y == b_pos.y + 1) ||
-            (snake_posb15.y == b_pos.y + 2) ||
-            (snake_posb15.y == b_pos.y + 3) ||
-            (snake_posb15.y == b_pos.y + 4) ||
-            (snake_posb15.y == b_pos.y + 5) ||
-            (snake_posb15.y == b_pos.y + 6) ||
-            (snake_posb15.y == b_pos.y + 7) ||
-            (snake_posb15.y == b_pos.y + 8) ||
-            (snake_posb15.y == b_pos.y + 9) ||
-            (snake_posb15.y == b_pos.y + 10) ||
-            (snake_posb15.y + 1 == b_pos.y) ||
-            (snake_posb15.y + 1 == b_pos.y + 1) ||
-            (snake_posb15.y + 1 == b_pos.y + 2) ||
-            (snake_posb15.y + 1 == b_pos.y + 3) ||
-            (snake_posb15.y + 1 == b_pos.y + 4) ||
-            (snake_posb15.y + 1 == b_pos.y + 5) ||
-            (snake_posb15.y + 1 == b_pos.y + 6) ||
-            (snake_posb15.y + 1 == b_pos.y + 7) ||
-            (snake_posb15.y + 1 == b_pos.y + 8) ||
-            (snake_posb15.y + 1 == b_pos.y + 9) ||
-            (snake_posb15.y + 1 == b_pos.y + 10) ||
-            (snake_posb15.y + 2 == b_pos.y) ||
-            (snake_posb15.y + 2 == b_pos.y + 1) ||
-            (snake_posb15.y + 2 == b_pos.y + 2) ||
-            (snake_posb15.y + 2 == b_pos.y + 3) ||
-            (snake_posb15.y + 2 == b_pos.y + 4) ||
-            (snake_posb15.y + 2 == b_pos.y + 5) ||
-            (snake_posb15.y + 2 == b_pos.y + 6) ||
-            (snake_posb15.y + 2 == b_pos.y + 7) ||
-            (snake_posb15.y + 2 == b_pos.y + 8) ||
-            (snake_posb15.y + 2 == b_pos.y + 9) ||
-            (snake_posb15.y + 2 == b_pos.y + 10)) &&
-            ((snake_posb15.x == b_pos.x + 4) ||  //W
-            (snake_posb15.x == b_pos.x + 36) ||  //W
-            (snake_posb15.x == b_pos.x + 68) ||  //W
-            (snake_posb15.x + 1 == b_pos.x + 4) ||  //W
-            (snake_posb15.x + 1 == b_pos.x + 36) ||  //W
-            (snake_posb15.x + 1 == b_pos.x + 68) ||  //W
-            (snake_posb15.x + 2 == b_pos.x + 4) ||  //W
-            (snake_posb15.x + 2 == b_pos.x + 36) ||  //W
-            (snake_posb15.x + 2 == b_pos.x + 68) ||  //W
-            (snake_posb15.x == b_pos.x + 20) ||  //W
-            (snake_posb15.x == b_pos.x + 52) ||  //W
-            (snake_posb15.x == b_pos.x + 84) ||  //W
-            (snake_posb15.x + 1 == b_pos.x + 20) ||  //W
-            (snake_posb15.x + 1 == b_pos.x + 52) ||  //W
-            (snake_posb15.x + 1 == b_pos.x + 84) ||  //W
-            (snake_posb15.x + 2 == b_pos.x + 20) ||  //W
-            (snake_posb15.x + 2 == b_pos.x + 52) ||  //W
-            (snake_posb15.x + 2 == b_pos.x + 84)))&&(d != E)) //W
-        ) {
-        //add some code that it doesn't move
-        speed = 0;
+        if(length == 15)  {
+            b0 = 0;
+        }
     }
     
     //for East
@@ -2217,67 +2540,41 @@
         //add some code that it doesn't move
         speed = 0;
     }
-    
-    else if (
-            ((((snake_posb15.y == b_pos.y) ||
-            (snake_posb15.y == b_pos.y + 1) ||
-            (snake_posb15.y == b_pos.y + 2) ||
-            (snake_posb15.y == b_pos.y + 3) ||
-            (snake_posb15.y == b_pos.y + 4) ||
-            (snake_posb15.y == b_pos.y + 5) ||
-            (snake_posb15.y == b_pos.y + 6) ||
-            (snake_posb15.y == b_pos.y + 7) ||
-            (snake_posb15.y == b_pos.y + 8) ||
-            (snake_posb15.y == b_pos.y + 9) ||
-            (snake_posb15.y == b_pos.y + 10) ||
-            (snake_posb15.y + 1 == b_pos.y) ||
-            (snake_posb15.y + 1 == b_pos.y + 1) ||
-            (snake_posb15.y + 1 == b_pos.y + 2) ||
-            (snake_posb15.y + 1 == b_pos.y + 3) ||
-            (snake_posb15.y + 1 == b_pos.y + 4) ||
-            (snake_posb15.y + 1 == b_pos.y + 5) ||
-            (snake_posb15.y + 1 == b_pos.y + 6) ||
-            (snake_posb15.y + 1 == b_pos.y + 7) ||
-            (snake_posb15.y + 1 == b_pos.y + 8) ||
-            (snake_posb15.y + 1 == b_pos.y + 9) ||
-            (snake_posb15.y + 1 == b_pos.y + 10) ||
-            (snake_posb15.y + 2 == b_pos.y) ||
-            (snake_posb15.y + 2 == b_pos.y + 1) ||
-            (snake_posb15.y + 2 == b_pos.y + 2) ||
-            (snake_posb15.y + 2 == b_pos.y + 3) ||
-            (snake_posb15.y + 2 == b_pos.y + 4) ||
-            (snake_posb15.y + 2 == b_pos.y + 5) ||
-            (snake_posb15.y + 2 == b_pos.y + 6) ||
-            (snake_posb15.y + 2 == b_pos.y + 7) ||
-            (snake_posb15.y + 2 == b_pos.y + 8) ||
-            (snake_posb15.y + 2 == b_pos.y + 9) ||
-            (snake_posb15.y + 2 == b_pos.y + 10)) &&
-            ((snake_posb15.x == b_pos.x + 2) ||  //E
-            (snake_posb15.x == b_pos.x + 34) ||  //E
-            (snake_posb15.x == b_pos.x + 66) ||  //E
-            (snake_posb15.x + 1 == b_pos.x + 2) ||  //E
-            (snake_posb15.x + 1 == b_pos.x + 34) ||  //E
-            (snake_posb15.x + 1 == b_pos.x + 66) ||  //E
-            (snake_posb15.x + 2 == b_pos.x + 2) ||  //E
-            (snake_posb15.x + 2 == b_pos.x + 34) ||  //E
-            (snake_posb15.x + 2 == b_pos.x + 66) ||  //E
-            (snake_posb15.x == b_pos.x + 20) ||  //E
-            (snake_posb15.x == b_pos.x + 50) ||  //E
-            (snake_posb15.x == b_pos.x + 82) ||  //E
-            (snake_posb15.x + 1 == b_pos.x + 20) ||  //E
-            (snake_posb15.x + 1 == b_pos.x + 50) ||  //E
-            (snake_posb15.x + 1 == b_pos.x + 82) ||  //E
-            (snake_posb15.x + 2 == b_pos.x + 20) ||  //E
-            (snake_posb15.x + 2 == b_pos.x + 50) ||  //E
-            (snake_posb15.x + 2 == b_pos.x + 82)))&&(d != W)) //E
-        ) {
-        //add some code that it doesn't move
-        speed = 0;
-    }
         
         else    {
             speed = 1;
+            b0 = 1;
+            b1 = 1;
+            b2 = 1;
+            b3 = 1;
+            b4 = 1;
+            b5 = 1;
+            b6 = 1;
+            b7 = 1;
+            b8 = 1;
+            b9 = 1;
+            b10 = 1;
+            b11 = 1;
+            b12 = 1;
+            b13 = 1;
+            b14 = 1;
         }
+    //_s.set_pos(s_pos);
+    b0_to_b14[0] = b0;
+    b0_to_b14[1] = b1;
+    b0_to_b14[2] = b2;
+    b0_to_b14[3] = b3;
+    b0_to_b14[4] = b4;
+    b0_to_b14[5] = b5;
+    b0_to_b14[6] = b6;
+    b0_to_b14[7] = b7;
+    b0_to_b14[8] = b8;
+    b0_to_b14[9] = b9;
+    b0_to_b14[10] = b10;
+    b0_to_b14[11] = b11;
+    b0_to_b14[12] = b12;
+    b0_to_b14[13] = b13;
+    b0_to_b14[14] = b14;
 }
 //&&((snake_pos.x <= snake_posb1.x)&&(snake_posb1.x <= snake_posb2.x)&&(snake_posb2.x <= snake_posb3.x)&&(snake_posb3.x <= snake_posb4.x)&&(snake_posb4.x <= snake_posb5.x)&&(snake_posb5.x <= snake_posb6.x)&&(snake_posb6.x <= snake_posb7.x)&&(snake_posb7.x <= snake_posb8.x)&&(snake_posb8.x <= snake_posb9.x)&&(snake_posb9.x <= snake_posb10.x)&&(snake_posb10.x <= snake_posb11.x)&&(snake_posb11.x <= snake_posb12.x)&&(snake_posb12.x <= snake_posb13.x)&&(snake_posb13.x <= snake_posb14.x)&&(snake_posb14.x <= snake_posb15.x))
 //&&((snake_pos.x >= snake_posb1.x)&&(snake_posb1.x >= snake_posb2.x)&&(snake_posb2.x >= snake_posb3.x)&&(snake_posb3.x >= snake_posb4.x)&&(snake_posb4.x >= snake_posb5.x)&&(snake_posb5.x >= snake_posb6.x)&&(snake_posb6.x > snake_posb7.x)&&(snake_posb7.x >= snake_posb8.x)&&(snake_posb8.x >= snake_posb9.x)&&(snake_posb9.x >= snake_posb10.x)&&(snake_posb10.x >= snake_posb11.x)&&(snake_posb11.x >= snake_posb12.x)&&(snake_posb12.x >= snake_posb13.x)&&(snake_posb13.x >= snake_posb14.x)&&(snake_posb14.x >= snake_posb15.x))
\ No newline at end of file