Snake vs Block Game to be run upon K64F.

Dependencies:   mbed

SnakevsBlock/SnakevsBlock.cpp

Committer:
AhmedPlaymaker
Date:
2019-04-08
Revision:
19:05cc9f801468
Parent:
18:b391caa5754c
Child:
20:1e6338403427

File content as of revision 19:05cc9f801468:

#include "SnakevsBlock.h"

SnakevsBlock::SnakevsBlock()
{

}

SnakevsBlock::~SnakevsBlock()
{

}

void SnakevsBlock::init()
{
    //The snake length configuration and all the other initial information passing will be done here
    length = 3;
    level = 1;
    foodbuff = 0;
    send=0;
    speed = 1;
    blockgap = 161;
    blockbuff = 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; 
}



void SnakevsBlock::read_input(Gamepad &pad)
{
    _d = pad.get_direction(); //Obtains Direction pushed towards on Joystick.
    _mag = pad.get_mag(); //Obtains Magnitude of Joystick.
}

void SnakevsBlock::draw(N5110 &lcd, Gamepad &pad)
{
    length = _s.draw(pad, lcd, length); //Draws the Snake.     //Make these snake buffs relative to the snake drops which in turn relate to the game speed
    if(foodbuff >=0)  {
        _f.draw(lcd); //Draws the first food.
        if(foodbuff >=50)  {
            _ff.draw(lcd); //Draws the second food.
            if(foodbuff >=80) {
                _fff.draw(lcd); //Draws the third food.
            }
        }
        foodbuff +=1;
    }
    if(foodbuff >=8) {
        send = _b.draw(lcd, length, blocknum, srn, blockgap);
    }
    if(foodbuff == 8) {
        blockbuff = 0;
    }
    
    //Code to print length on game screen.
    char bufferscore[14];
    sprintf(bufferscore,"%d",length);
    lcd.printString(bufferscore,1,0);
    
            if(pad.check_event(Gamepad::BACK_PRESSED)){ //Waits for Back button to be pressed.
            
                NVIC_SystemReset(); //Software Reset.
                
            }
        
    
}


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.
    CheckSnakeBlockSidesCollision(pad, _d); //Function checks for when the snake collides with any of the blocks' sides.
    _s.update(_d,_mag, length, speed, b0_to_b14);
    _f.update();
    _ff.update();
    _fff.update(); 
    _b.update(blocknum, srn, send);
    blockbuff++;
    if(blockbuff == blockgap)  {  //change this while changing the block drop gap
        blockbuff = 0;
    }
    if(length > 15)  {  //change this while changing the block drop gap
        blockgap -= 10;
        level += 1;
    }
}

void SnakevsBlock::get_pos()
{
    Vector2D snake_pos = _s.get_pos(length);
    //printf("player pos = %f %f \n", player_pos.x, player_pos.y); //top left of player sprite
    // 81.000000 0.000000 top right
    // 0.000000 0.000000 is top left
    // 81.000000 45.000000 bottom right
    snakex = snake_pos.x;
    snakey = snake_pos.y;
    //printf("snakexy in GAME = %d %d \n", snakex, snakey);
}   
    

void SnakevsBlock::CheckSnakeFoodCollision(Gamepad &pad)
    {
        //Obtains all required coordinates.
        
        
        Vector2D f_pos = _f.get_pos();
        Vector2D ff_pos = _ff.get_pos();
        Vector2D fff_pos = _fff.get_pos();
        Vector2D snake_pos = _s.get_pos(length);
        
        //If statements check if the snake sprite has collided with any
        //of the three food sprites, if so then the food location is reset and
        //length of the snake is increased using the length variable.
         
    if (
        ((snake_pos.y == f_pos.y) ||
        (snake_pos.y == f_pos.y + 1) ||
        (snake_pos.y == f_pos.y + 2) ||
        (snake_pos.y + 1== f_pos.y) ||
        (snake_pos.y  + 1== f_pos.y + 1) ||
        (snake_pos.y  + 1== f_pos.y + 2) ||
        (snake_pos.y + 2 == f_pos.y) ||
        (snake_pos.y + 2 == f_pos.y + 1) ||
        (snake_pos.y + 2 == f_pos.y + 2)) &&
        ((snake_pos.x == f_pos.x) ||
        (snake_pos.x == f_pos.x + 1) ||
        (snake_pos.x == f_pos.x + 2) ||
        (snake_pos.x + 1 == f_pos.x) ||
        (snake_pos.x + 1== f_pos.x + 1) ||
        (snake_pos.x + 1 == f_pos.x + 2) ||
        (snake_pos.x + 2 == f_pos.x) ||
        (snake_pos.x + 2 == f_pos.x + 1) ||
        (snake_pos.x + 2 == f_pos.x + 2))
    ) {
        
        //printf("snake feast working \n");
        //audio feedback
        pad.tone(1000.0,0.1);
        f_pos.x = rand() % 82;
        f_pos.y = -2;
        if(blockbuff<25)  { //change this while changing the block drop gap
            f_pos.y = -30;
        }
        length+=1;
        
    }
    
    if (
        ((snake_pos.y == ff_pos.y) ||
        (snake_pos.y == ff_pos.y + 1) ||
        (snake_pos.y == ff_pos.y + 2) ||
        (snake_pos.y + 1== ff_pos.y) ||
        (snake_pos.y  + 1== ff_pos.y + 1) ||
        (snake_pos.y  + 1== ff_pos.y + 2) ||
        (snake_pos.y + 2 == ff_pos.y) ||
        (snake_pos.y + 2 == ff_pos.y + 1) ||
        (snake_pos.y + 2 == ff_pos.y + 2)) &&
        ((snake_pos.x == ff_pos.x) ||
        (snake_pos.x == ff_pos.x + 1) ||
        (snake_pos.x == ff_pos.x + 2) ||
        (snake_pos.x + 1 == ff_pos.x) ||
        (snake_pos.x + 1== ff_pos.x + 1) ||
        (snake_pos.x + 1 == ff_pos.x + 2) ||
        (snake_pos.x + 2 == ff_pos.x) ||
        (snake_pos.x + 2 == ff_pos.x + 1) ||
        (snake_pos.x + 2 == ff_pos.x + 2))
    ) {
        
        //printf("snake feast working \n");
        // audio feedback
        pad.tone(1000.0,0.1);
        ff_pos.x = rand() % 82;
        ff_pos.y = -2;
        if(blockbuff<25)  { //change this while changing the block drop gap
            f_pos.y = -30;
        }
        length+=1;
        
    }
    
    if (
        ((snake_pos.y == fff_pos.y) ||
        (snake_pos.y == fff_pos.y + 1) ||
        (snake_pos.y == fff_pos.y + 2) ||
        (snake_pos.y + 1== fff_pos.y) ||
        (snake_pos.y  + 1== fff_pos.y + 1) ||
        (snake_pos.y  + 1== fff_pos.y + 2) ||
        (snake_pos.y + 2 == fff_pos.y) ||
        (snake_pos.y + 2 == fff_pos.y + 1) ||
        (snake_pos.y + 2 == fff_pos.y + 2)) &&
        ((snake_pos.x == fff_pos.x) ||
        (snake_pos.x == fff_pos.x + 1) ||
        (snake_pos.x == fff_pos.x + 2) ||
        (snake_pos.x + 1 == fff_pos.x) ||
        (snake_pos.x + 1== fff_pos.x + 1) ||
        (snake_pos.x + 1 == fff_pos.x + 2) ||
        (snake_pos.x + 2 == fff_pos.x) ||
        (snake_pos.x + 2 == fff_pos.x + 1) ||
        (snake_pos.x + 2 == fff_pos.x + 2))
    ) {
        
        //printf("snake feast working \n");
        // audio feedback
        pad.tone(1000.0,0.1);
        fff_pos.x = rand() % 82;
        fff_pos.y = -2;
        if(blockbuff<25)  { //change this while changing the block drop gap
            f_pos.y = -30;
        }
        length+=1;
        
    }


    _f.set_pos(f_pos);
    _ff.set_pos(ff_pos);
    _fff.set_pos(fff_pos);
    
    }
    
    void SnakevsBlock::CheckSnakeBlockCollision(Gamepad &pad)
    {
        //Obtains all required coordinates.
        Vector2D b_pos = _b.get_pos();
        int *b_number;
        b_number = _b.get_number();
        Vector2D snake_pos = _s.get_pos(length);
        
        //If statements check if the snake sprite has collided with any
        //of the blocks which are a maximum of 5, if so then the snake length reduces and the block number reduces
        //the block has to move slower and come down after every 2/3 iterations(dependent on the snake size.(think about this)
        
    if (
        ((snake_pos.y == b_pos.y + 10) ||
        (snake_pos.y == b_pos.y + 10) ||
        (snake_pos.y == b_pos.y + 10)) &&
        ((snake_pos.x + 1 == b_pos.x + 1) ||
        (snake_pos.x + 1 == b_pos.x + 2) ||
        (snake_pos.x + 1 == b_pos.x + 3) ||
        (snake_pos.x + 1 == b_pos.x + 4) ||
        (snake_pos.x + 1 == b_pos.x + 5) ||
        (snake_pos.x + 1 == b_pos.x + 6) ||
        (snake_pos.x + 1 == b_pos.x + 7) ||
        (snake_pos.x + 1 == b_pos.x + 8) ||
        (snake_pos.x + 1 == b_pos.x + 9) ||
        (snake_pos.x + 1 == b_pos.x + 10) ||
        (snake_pos.x + 1 == b_pos.x + 11) ||
        (snake_pos.x + 1 == b_pos.x + 12) ||
        (snake_pos.x + 1 == b_pos.x + 13) ||
        (snake_pos.x + 1 == b_pos.x + 14) ||
        (snake_pos.x + 1 == b_pos.x + 15) ||
        (snake_pos.x + 1 == b_pos.x + 16) ||
        (snake_pos.x + 1 == b_pos.x + 17) ||
        (snake_pos.x + 1 == b_pos.x + 18))
    ) {
        
        //printf("snake collision working \n");
        //audio feedback
        if(blocknum > 0)  {
            b_pos.y = 0;
        }
        srn = 0;
        blocknum = b_number[srn];
        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.05);
        }
        else  {
            speed = 1;
        }
    }
    
    if (
        ((snake_pos.y == b_pos.y + 10) ||
        (snake_pos.y == b_pos.y + 10) ||
        (snake_pos.y == b_pos.y + 10)) &&
        ((snake_pos.x + 1 == b_pos.x + 19) ||
        (snake_pos.x + 1 == b_pos.x + 20) ||
        (snake_pos.x + 1 == b_pos.x + 21) ||
        (snake_pos.x + 1 == b_pos.x + 22) ||
        (snake_pos.x + 1 == b_pos.x + 23) ||
        (snake_pos.x + 1 == b_pos.x + 24) ||
        (snake_pos.x + 1 == b_pos.x + 25) ||
        (snake_pos.x + 1 == b_pos.x + 26) ||
        (snake_pos.x + 1 == b_pos.x + 27) ||
        (snake_pos.x + 1 == b_pos.x + 28) ||
        (snake_pos.x + 1 == b_pos.x + 29) ||
        (snake_pos.x + 1 == b_pos.x + 30) ||
        (snake_pos.x + 1 == b_pos.x + 31) ||
        (snake_pos.x + 1 == b_pos.x + 32) ||
        (snake_pos.x + 1 == b_pos.x + 33) ||
        (snake_pos.x + 1 == b_pos.x + 34))
    ) {
        
        //printf("snake collision working \n");
        //audio feedback
        if(blocknum > 0)  {
            b_pos.y = 0;
        }
        srn = 1;
        blocknum = b_number[srn];
        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.05);
        }
        else  {
            speed = 1;
        }
        
    }
    
    if (
        ((snake_pos.y == b_pos.y + 10) ||
        (snake_pos.y == b_pos.y + 10) ||
        (snake_pos.y == b_pos.y + 10)) &&
        ((snake_pos.x + 1 == b_pos.x + 35) ||
        (snake_pos.x + 1 == b_pos.x + 36) ||
        (snake_pos.x + 1 == b_pos.x + 37) ||
        (snake_pos.x + 1 == b_pos.x + 38) ||
        (snake_pos.x + 1 == b_pos.x + 39) ||
        (snake_pos.x + 1 == b_pos.x + 40) ||
        (snake_pos.x + 1 == b_pos.x + 41) ||
        (snake_pos.x + 1 == b_pos.x + 42) ||
        (snake_pos.x + 1 == b_pos.x + 43) ||
        (snake_pos.x + 1 == b_pos.x + 44) ||
        (snake_pos.x + 1 == b_pos.x + 45) ||
        (snake_pos.x + 1 == b_pos.x + 46) ||
        (snake_pos.x + 1 == b_pos.x + 47) ||
        (snake_pos.x + 1 == b_pos.x + 48) ||
        (snake_pos.x + 1 == b_pos.x + 49) ||
        (snake_pos.x + 1 == b_pos.x + 50))
    ) {
        
        //printf("snake collision working \n");
        //audio feedback
        if(blocknum > 0)  {
            b_pos.y = 0;
        }
        srn = 2;
        blocknum = b_number[srn];
        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.05);
        }
        else  {
            speed = 1;
        }
        
    }
    
    if (
        ((snake_pos.y == b_pos.y + 10) ||
        (snake_pos.y == b_pos.y + 10) ||
        (snake_pos.y == b_pos.y + 10)) &&
        ((snake_pos.x + 1 == b_pos.x + 51) ||
        (snake_pos.x + 1 == b_pos.x + 52) ||
        (snake_pos.x + 1 == b_pos.x + 53) ||
        (snake_pos.x + 1 == b_pos.x + 54) ||
        (snake_pos.x + 1 == b_pos.x + 55) ||
        (snake_pos.x + 1 == b_pos.x + 56) ||
        (snake_pos.x + 1 == b_pos.x + 57) ||
        (snake_pos.x + 1 == b_pos.x + 58) ||
        (snake_pos.x + 1 == b_pos.x + 59) ||
        (snake_pos.x + 1 == b_pos.x + 60) ||
        (snake_pos.x + 1 == b_pos.x + 61) ||
        (snake_pos.x + 1 == b_pos.x + 62) ||
        (snake_pos.x + 1 == b_pos.x + 63) ||
        (snake_pos.x + 1 == b_pos.x + 64) ||
        (snake_pos.x + 1 == b_pos.x + 65) ||
        (snake_pos.x + 1 == b_pos.x + 66))
    ) {
        
        //printf("snake collision working \n");
        //audio feedback
        if(blocknum > 0)  {
            b_pos.y = 0;
        }
        srn = 3;
        blocknum = b_number[srn];
        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;
            length-=1;
            pad.tone(1000.0,0.1);
            wait(0.05);
        }
        else  {
            speed = 1;
        }
        
    }
    
    if (
        ((snake_pos.y == b_pos.y + 10) ||
        (snake_pos.y == b_pos.y + 10) ||
        (snake_pos.y == b_pos.y + 10)) &&
        ((snake_pos.x + 1 == b_pos.x + 67) ||
        (snake_pos.x + 1 == b_pos.x + 68) ||
        (snake_pos.x + 1 == b_pos.x + 69) ||
        (snake_pos.x + 1 == b_pos.x + 70) ||
        (snake_pos.x + 1 == b_pos.x + 71) ||
        (snake_pos.x + 1 == b_pos.x + 72) ||
        (snake_pos.x + 1 == b_pos.x + 73) ||
        (snake_pos.x + 1 == b_pos.x + 74) ||
        (snake_pos.x + 1 == b_pos.x + 75) ||
        (snake_pos.x + 1 == b_pos.x + 76) ||
        (snake_pos.x + 1 == b_pos.x + 77) ||
        (snake_pos.x + 1 == b_pos.x + 78) ||
        (snake_pos.x + 1 == b_pos.x + 79) ||
        (snake_pos.x + 1 == b_pos.x + 80) ||
        (snake_pos.x + 1 == b_pos.x + 81) ||
        (snake_pos.x + 1 == b_pos.x + 82) ||
        (snake_pos.x + 1 == b_pos.x + 83))
    ) {
        
        //printf("snake collision working \n");
        //audio feedback
        if(blocknum > 0)  {
            b_pos.y = 0;
        }
        srn = 4;
        blocknum = b_number[srn];
        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.05);
        }
        else  {
            speed = 1;
        }
    }
    
}

void SnakevsBlock::CheckSnakeBlockSidesCollision(Gamepad &pad, Direction d)
    {
        //Obtains all required coordinates.
        Vector2D b_pos = _b.get_pos();
        Vector2D snake_pos = _s.get_pos(length);
        Vector2D snake_posb1 = _s.get_pos_before1(length);
        Vector2D snake_posb2 = _s.get_pos_before2(length);
        Vector2D snake_posb3 = _s.get_pos_before3(length);
        Vector2D snake_posb4 = _s.get_pos_before4(length);
        Vector2D snake_posb5 = _s.get_pos_before5(length);
        Vector2D snake_posb6 = _s.get_pos_before6(length);
        Vector2D snake_posb7 = _s.get_pos_before7(length);
        Vector2D snake_posb8 = _s.get_pos_before8(length);
        Vector2D snake_posb9 = _s.get_pos_before9(length);
        Vector2D snake_posb10 = _s.get_pos_before10(length);
        Vector2D snake_posb11 = _s.get_pos_before11(length);
        Vector2D snake_posb12 = _s.get_pos_before12(length);
        Vector2D snake_posb13 = _s.get_pos_before13(length);
        Vector2D snake_posb14 = _s.get_pos_before14(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 + 1) ||
            (snake_pos.y == b_pos.y + 1) ||
            (snake_pos.y == b_pos.y + 2) ||
            (snake_pos.y == b_pos.y + 3) ||
            (snake_pos.y == b_pos.y + 4) ||
            (snake_pos.y == b_pos.y + 5) ||
            (snake_pos.y == b_pos.y + 6) ||
            (snake_pos.y == b_pos.y + 7) ||
            (snake_pos.y == b_pos.y + 8) ||
            (snake_pos.y == b_pos.y + 9) ||
            (snake_pos.y == b_pos.y + 10) ||
            (snake_pos.y + 1 == b_pos.y) ||
            (snake_pos.y + 1 == b_pos.y + 1) ||
            (snake_pos.y + 1 == b_pos.y + 2) ||
            (snake_pos.y + 1 == b_pos.y + 3) ||
            (snake_pos.y + 1 == b_pos.y + 4) ||
            (snake_pos.y + 1 == b_pos.y + 5) ||
            (snake_pos.y + 1 == b_pos.y + 6) ||
            (snake_pos.y + 1 == b_pos.y + 7) ||
            (snake_pos.y + 1 == b_pos.y + 8) ||
            (snake_pos.y + 1 == b_pos.y + 9) ||
            (snake_pos.y + 1 == b_pos.y + 10) ||
            (snake_pos.y + 2 == b_pos.y) ||
            (snake_pos.y + 2 == b_pos.y + 1) ||
            (snake_pos.y + 2 == b_pos.y + 2) ||
            (snake_pos.y + 2 == b_pos.y + 3) ||
            (snake_pos.y + 2 == b_pos.y + 4) ||
            (snake_pos.y + 2 == b_pos.y + 5) ||
            (snake_pos.y + 2 == b_pos.y + 6) ||
            (snake_pos.y + 2 == b_pos.y + 7) ||
            (snake_pos.y + 2 == b_pos.y + 8) ||
            (snake_pos.y + 2 == b_pos.y + 9) ||
            (snake_pos.y + 2 == b_pos.y + 10)) &&
            ((snake_pos.x == b_pos.x + 4) ||  //W
            (snake_pos.x == b_pos.x + 36) ||  //W
            (snake_pos.x == b_pos.x + 68) ||  //W
            (snake_pos.x + 1 == b_pos.x + 4) ||  //W
            (snake_pos.x + 1 == b_pos.x + 36) ||  //W
            (snake_pos.x + 1 == b_pos.x + 68) ||  //W
            (snake_pos.x + 2 == b_pos.x + 4) ||  //W
            (snake_pos.x + 2 == b_pos.x + 36) ||  //W
            (snake_pos.x + 2 == b_pos.x + 68) ||  //W
            (snake_pos.x == b_pos.x + 20) ||  //W
            (snake_pos.x == b_pos.x + 52) ||  //W
            (snake_pos.x == b_pos.x + 84) ||  //W
            (snake_pos.x + 1 == b_pos.x + 20) ||  //W
            (snake_pos.x + 1 == b_pos.x + 52) ||  //W
            (snake_pos.x + 1 == b_pos.x + 84) ||  //W
            (snake_pos.x + 2 == b_pos.x + 20) ||  //W
            (snake_pos.x + 2 == b_pos.x + 52) ||  //W
            (snake_pos.x + 2 == b_pos.x + 84)))&&(d != E)) //W
        ) {
        //add some code that it doesn't move
        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 (
            ((((snake_posb1.y == b_pos.y) ||
            (snake_posb1.y == b_pos.y + 1) ||
            (snake_posb1.y == b_pos.y + 2) ||
            (snake_posb1.y == b_pos.y + 3) ||
            (snake_posb1.y == b_pos.y + 4) ||
            (snake_posb1.y == b_pos.y + 5) ||
            (snake_posb1.y == b_pos.y + 6) ||
            (snake_posb1.y == b_pos.y + 7) ||
            (snake_posb1.y == b_pos.y + 8) ||
            (snake_posb1.y == b_pos.y + 9) ||
            (snake_posb1.y == b_pos.y + 10) ||
            (snake_posb1.y + 1 == b_pos.y) ||
            (snake_posb1.y + 1 == b_pos.y + 1) ||
            (snake_posb1.y + 1 == b_pos.y + 2) ||
            (snake_posb1.y + 1 == b_pos.y + 3) ||
            (snake_posb1.y + 1 == b_pos.y + 4) ||
            (snake_posb1.y + 1 == b_pos.y + 5) ||
            (snake_posb1.y + 1 == b_pos.y + 6) ||
            (snake_posb1.y + 1 == b_pos.y + 7) ||
            (snake_posb1.y + 1 == b_pos.y + 8) ||
            (snake_posb1.y + 1 == b_pos.y + 9) ||
            (snake_posb1.y + 1 == b_pos.y + 10) ||
            (snake_posb1.y + 2 == b_pos.y) ||
            (snake_posb1.y + 2 == b_pos.y + 1) ||
            (snake_posb1.y + 2 == b_pos.y + 2) ||
            (snake_posb1.y + 2 == b_pos.y + 3) ||
            (snake_posb1.y + 2 == b_pos.y + 4) ||
            (snake_posb1.y + 2 == b_pos.y + 5) ||
            (snake_posb1.y + 2 == b_pos.y + 6) ||
            (snake_posb1.y + 2 == b_pos.y + 7) ||
            (snake_posb1.y + 2 == b_pos.y + 8) ||
            (snake_posb1.y + 2 == b_pos.y + 9) ||
            (snake_posb1.y + 2 == b_pos.y + 10)) &&
            ((snake_posb1.x == b_pos.x + 4) ||  //W
            (snake_posb1.x == b_pos.x + 36) ||  //W
            (snake_posb1.x == b_pos.x + 68) ||  //W
            (snake_posb1.x + 1 == b_pos.x + 4) ||  //W
            (snake_posb1.x + 1 == b_pos.x + 36) ||  //W
            (snake_posb1.x + 1 == b_pos.x + 68) ||  //W
            (snake_posb1.x + 2 == b_pos.x + 4) ||  //W
            (snake_posb1.x + 2 == b_pos.x + 36) ||  //W
            (snake_posb1.x + 2 == b_pos.x + 68) ||  //W
            (snake_posb1.x == b_pos.x + 20) ||  //W
            (snake_posb1.x == b_pos.x + 52) ||  //W
            (snake_posb1.x == b_pos.x + 84) ||  //W
            (snake_posb1.x + 1 == b_pos.x + 20) ||  //W
            (snake_posb1.x + 1 == b_pos.x + 52) ||  //W
            (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)&&(length !=1)) //W
        ) {
        //add some code that it doesn't move
        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 (
            ((((snake_posb2.y == b_pos.y) ||
            (snake_posb2.y == b_pos.y + 1) ||
            (snake_posb2.y == b_pos.y + 2) ||
            (snake_posb2.y == b_pos.y + 3) ||
            (snake_posb2.y == b_pos.y + 4) ||
            (snake_posb2.y == b_pos.y + 5) ||
            (snake_posb2.y == b_pos.y + 6) ||
            (snake_posb2.y == b_pos.y + 7) ||
            (snake_posb2.y == b_pos.y + 8) ||
            (snake_posb2.y == b_pos.y + 9) ||
            (snake_posb2.y == b_pos.y + 10) ||
            (snake_posb2.y + 1 == b_pos.y) ||
            (snake_posb2.y + 1 == b_pos.y + 1) ||
            (snake_posb2.y + 1 == b_pos.y + 2) ||
            (snake_posb2.y + 1 == b_pos.y + 3) ||
            (snake_posb2.y + 1 == b_pos.y + 4) ||
            (snake_posb2.y + 1 == b_pos.y + 5) ||
            (snake_posb2.y + 1 == b_pos.y + 6) ||
            (snake_posb2.y + 1 == b_pos.y + 7) ||
            (snake_posb2.y + 1 == b_pos.y + 8) ||
            (snake_posb2.y + 1 == b_pos.y + 9) ||
            (snake_posb2.y + 1 == b_pos.y + 10) ||
            (snake_posb2.y + 2 == b_pos.y) ||
            (snake_posb2.y + 2 == b_pos.y + 1) ||
            (snake_posb2.y + 2 == b_pos.y + 2) ||
            (snake_posb2.y + 2 == b_pos.y + 3) ||
            (snake_posb2.y + 2 == b_pos.y + 4) ||
            (snake_posb2.y + 2 == b_pos.y + 5) ||
            (snake_posb2.y + 2 == b_pos.y + 6) ||
            (snake_posb2.y + 2 == b_pos.y + 7) ||
            (snake_posb2.y + 2 == b_pos.y + 8) ||
            (snake_posb2.y + 2 == b_pos.y + 9) ||
            (snake_posb2.y + 2 == b_pos.y + 10)) &&
            ((snake_posb2.x == b_pos.x + 4) ||  //W
            (snake_posb2.x == b_pos.x + 36) ||  //W
            (snake_posb2.x == b_pos.x + 68) ||  //W
            (snake_posb2.x + 1 == b_pos.x + 4) ||  //W
            (snake_posb2.x + 1 == b_pos.x + 36) ||  //W
            (snake_posb2.x + 1 == b_pos.x + 68) ||  //W
            (snake_posb2.x + 2 == b_pos.x + 4) ||  //W
            (snake_posb2.x + 2 == b_pos.x + 36) ||  //W
            (snake_posb2.x + 2 == b_pos.x + 68) ||  //W
            (snake_posb2.x == b_pos.x + 20) ||  //W
            (snake_posb2.x == b_pos.x + 52) ||  //W
            (snake_posb2.x == b_pos.x + 84) ||  //W
            (snake_posb2.x + 1 == b_pos.x + 20) ||  //W
            (snake_posb2.x + 1 == b_pos.x + 52) ||  //W
            (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)&&(length !=1)&&(length !=2)) //W
        ) {
        //add some code that it doesn't move
        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 (
            ((((snake_posb3.y == b_pos.y) ||
            (snake_posb3.y == b_pos.y + 1) ||
            (snake_posb3.y == b_pos.y + 2) ||
            (snake_posb3.y == b_pos.y + 3) ||
            (snake_posb3.y == b_pos.y + 4) ||
            (snake_posb3.y == b_pos.y + 5) ||
            (snake_posb3.y == b_pos.y + 6) ||
            (snake_posb3.y == b_pos.y + 7) ||
            (snake_posb3.y == b_pos.y + 8) ||
            (snake_posb3.y == b_pos.y + 9) ||
            (snake_posb3.y == b_pos.y + 10) ||
            (snake_posb3.y + 1 == b_pos.y) ||
            (snake_posb3.y + 1 == b_pos.y + 1) ||
            (snake_posb3.y + 1 == b_pos.y + 2) ||
            (snake_posb3.y + 1 == b_pos.y + 3) ||
            (snake_posb3.y + 1 == b_pos.y + 4) ||
            (snake_posb3.y + 1 == b_pos.y + 5) ||
            (snake_posb3.y + 1 == b_pos.y + 6) ||
            (snake_posb3.y + 1 == b_pos.y + 7) ||
            (snake_posb3.y + 1 == b_pos.y + 8) ||
            (snake_posb3.y + 1 == b_pos.y + 9) ||
            (snake_posb3.y + 1 == b_pos.y + 10) ||
            (snake_posb3.y + 2 == b_pos.y) ||
            (snake_posb3.y + 2 == b_pos.y + 1) ||
            (snake_posb3.y + 2 == b_pos.y + 2) ||
            (snake_posb3.y + 2 == b_pos.y + 3) ||
            (snake_posb3.y + 2 == b_pos.y + 4) ||
            (snake_posb3.y + 2 == b_pos.y + 5) ||
            (snake_posb3.y + 2 == b_pos.y + 6) ||
            (snake_posb3.y + 2 == b_pos.y + 7) ||
            (snake_posb3.y + 2 == b_pos.y + 8) ||
            (snake_posb3.y + 2 == b_pos.y + 9) ||
            (snake_posb3.y + 2 == b_pos.y + 10)) &&
            ((snake_posb3.x == b_pos.x + 4) ||  //W
            (snake_posb3.x == b_pos.x + 36) ||  //W
            (snake_posb3.x == b_pos.x + 68) ||  //W
            (snake_posb3.x + 1 == b_pos.x + 4) ||  //W
            (snake_posb3.x + 1 == b_pos.x + 36) ||  //W
            (snake_posb3.x + 1 == b_pos.x + 68) ||  //W
            (snake_posb3.x + 2 == b_pos.x + 4) ||  //W
            (snake_posb3.x + 2 == b_pos.x + 36) ||  //W
            (snake_posb3.x + 2 == b_pos.x + 68) ||  //W
            (snake_posb3.x == b_pos.x + 20) ||  //W
            (snake_posb3.x == b_pos.x + 52) ||  //W
            (snake_posb3.x == b_pos.x + 84) ||  //W
            (snake_posb3.x + 1 == b_pos.x + 20) ||  //W
            (snake_posb3.x + 1 == b_pos.x + 52) ||  //W
            (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)&&(length !=1)&&(length !=2)&&(length !=3)) //W
        ) {
        //add some code that it doesn't move
        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 (
            ((((snake_posb4.y == b_pos.y) ||
            (snake_posb4.y == b_pos.y + 1) ||
            (snake_posb4.y == b_pos.y + 2) ||
            (snake_posb4.y == b_pos.y + 3) ||
            (snake_posb4.y == b_pos.y + 4) ||
            (snake_posb4.y == b_pos.y + 5) ||
            (snake_posb4.y == b_pos.y + 6) ||
            (snake_posb4.y == b_pos.y + 7) ||
            (snake_posb4.y == b_pos.y + 8) ||
            (snake_posb4.y == b_pos.y + 9) ||
            (snake_posb4.y == b_pos.y + 10) ||
            (snake_posb4.y + 1 == b_pos.y) ||
            (snake_posb4.y + 1 == b_pos.y + 1) ||
            (snake_posb4.y + 1 == b_pos.y + 2) ||
            (snake_posb4.y + 1 == b_pos.y + 3) ||
            (snake_posb4.y + 1 == b_pos.y + 4) ||
            (snake_posb4.y + 1 == b_pos.y + 5) ||
            (snake_posb4.y + 1 == b_pos.y + 6) ||
            (snake_posb4.y + 1 == b_pos.y + 7) ||
            (snake_posb4.y + 1 == b_pos.y + 8) ||
            (snake_posb4.y + 1 == b_pos.y + 9) ||
            (snake_posb4.y + 1 == b_pos.y + 10) ||
            (snake_posb4.y + 2 == b_pos.y) ||
            (snake_posb4.y + 2 == b_pos.y + 1) ||
            (snake_posb4.y + 2 == b_pos.y + 2) ||
            (snake_posb4.y + 2 == b_pos.y + 3) ||
            (snake_posb4.y + 2 == b_pos.y + 4) ||
            (snake_posb4.y + 2 == b_pos.y + 5) ||
            (snake_posb4.y + 2 == b_pos.y + 6) ||
            (snake_posb4.y + 2 == b_pos.y + 7) ||
            (snake_posb4.y + 2 == b_pos.y + 8) ||
            (snake_posb4.y + 2 == b_pos.y + 9) ||
            (snake_posb4.y + 2 == b_pos.y + 10)) &&
            ((snake_posb4.x == b_pos.x + 4) ||  //W
            (snake_posb4.x == b_pos.x + 36) ||  //W
            (snake_posb4.x == b_pos.x + 68) ||  //W
            (snake_posb4.x + 1 == b_pos.x + 4) ||  //W
            (snake_posb4.x + 1 == b_pos.x + 36) ||  //W
            (snake_posb4.x + 1 == b_pos.x + 68) ||  //W
            (snake_posb4.x + 2 == b_pos.x + 4) ||  //W
            (snake_posb4.x + 2 == b_pos.x + 36) ||  //W
            (snake_posb4.x + 2 == b_pos.x + 68) ||  //W
            (snake_posb4.x == b_pos.x + 20) ||  //W
            (snake_posb4.x == b_pos.x + 52) ||  //W
            (snake_posb4.x == b_pos.x + 84) ||  //W
            (snake_posb4.x + 1 == b_pos.x + 20) ||  //W
            (snake_posb4.x + 1 == b_pos.x + 52) ||  //W
            (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)&&(length !=1)&&(length !=2)&&(length !=3)&&(length !=4)) //W
        ) {
        //add some code that it doesn't move
        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 (
            ((((snake_posb5.y == b_pos.y) ||
            (snake_posb5.y == b_pos.y + 1) ||
            (snake_posb5.y == b_pos.y + 2) ||
            (snake_posb5.y == b_pos.y + 3) ||
            (snake_posb5.y == b_pos.y + 4) ||
            (snake_posb5.y == b_pos.y + 5) ||
            (snake_posb5.y == b_pos.y + 6) ||
            (snake_posb5.y == b_pos.y + 7) ||
            (snake_posb5.y == b_pos.y + 8) ||
            (snake_posb5.y == b_pos.y + 9) ||
            (snake_posb5.y == b_pos.y + 10) ||
            (snake_posb5.y + 1 == b_pos.y) ||
            (snake_posb5.y + 1 == b_pos.y + 1) ||
            (snake_posb5.y + 1 == b_pos.y + 2) ||
            (snake_posb5.y + 1 == b_pos.y + 3) ||
            (snake_posb5.y + 1 == b_pos.y + 4) ||
            (snake_posb5.y + 1 == b_pos.y + 5) ||
            (snake_posb5.y + 1 == b_pos.y + 6) ||
            (snake_posb5.y + 1 == b_pos.y + 7) ||
            (snake_posb5.y + 1 == b_pos.y + 8) ||
            (snake_posb5.y + 1 == b_pos.y + 9) ||
            (snake_posb5.y + 1 == b_pos.y + 10) ||
            (snake_posb5.y + 2 == b_pos.y) ||
            (snake_posb5.y + 2 == b_pos.y + 1) ||
            (snake_posb5.y + 2 == b_pos.y + 2) ||
            (snake_posb5.y + 2 == b_pos.y + 3) ||
            (snake_posb5.y + 2 == b_pos.y + 4) ||
            (snake_posb5.y + 2 == b_pos.y + 5) ||
            (snake_posb5.y + 2 == b_pos.y + 6) ||
            (snake_posb5.y + 2 == b_pos.y + 7) ||
            (snake_posb5.y + 2 == b_pos.y + 8) ||
            (snake_posb5.y + 2 == b_pos.y + 9) ||
            (snake_posb5.y + 2 == b_pos.y + 10)) &&
            ((snake_posb5.x == b_pos.x + 4) ||  //W
            (snake_posb5.x == b_pos.x + 36) ||  //W
            (snake_posb5.x == b_pos.x + 68) ||  //W
            (snake_posb5.x + 1 == b_pos.x + 4) ||  //W
            (snake_posb5.x + 1 == b_pos.x + 36) ||  //W
            (snake_posb5.x + 1 == b_pos.x + 68) ||  //W
            (snake_posb5.x + 2 == b_pos.x + 4) ||  //W
            (snake_posb5.x + 2 == b_pos.x + 36) ||  //W
            (snake_posb5.x + 2 == b_pos.x + 68) ||  //W
            (snake_posb5.x == b_pos.x + 20) ||  //W
            (snake_posb5.x == b_pos.x + 52) ||  //W
            (snake_posb5.x == b_pos.x + 84) ||  //W
            (snake_posb5.x + 1 == b_pos.x + 20) ||  //W
            (snake_posb5.x + 1 == b_pos.x + 52) ||  //W
            (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)&&(length !=1)&&(length !=2)&&(length !=3)&&(length !=4)&&(length !=5)) //W
        ) {
        //add some code that it doesn't move
        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 (
            ((((snake_posb6.y == b_pos.y) ||
            (snake_posb6.y == b_pos.y + 1) ||
            (snake_posb6.y == b_pos.y + 2) ||
            (snake_posb6.y == b_pos.y + 3) ||
            (snake_posb6.y == b_pos.y + 4) ||
            (snake_posb6.y == b_pos.y + 5) ||
            (snake_posb6.y == b_pos.y + 6) ||
            (snake_posb6.y == b_pos.y + 7) ||
            (snake_posb6.y == b_pos.y + 8) ||
            (snake_posb6.y == b_pos.y + 9) ||
            (snake_posb6.y == b_pos.y + 10) ||
            (snake_posb6.y + 1 == b_pos.y) ||
            (snake_posb6.y + 1 == b_pos.y + 1) ||
            (snake_posb6.y + 1 == b_pos.y + 2) ||
            (snake_posb6.y + 1 == b_pos.y + 3) ||
            (snake_posb6.y + 1 == b_pos.y + 4) ||
            (snake_posb6.y + 1 == b_pos.y + 5) ||
            (snake_posb6.y + 1 == b_pos.y + 6) ||
            (snake_posb6.y + 1 == b_pos.y + 7) ||
            (snake_posb6.y + 1 == b_pos.y + 8) ||
            (snake_posb6.y + 1 == b_pos.y + 9) ||
            (snake_posb6.y + 1 == b_pos.y + 10) ||
            (snake_posb6.y + 2 == b_pos.y) ||
            (snake_posb6.y + 2 == b_pos.y + 1) ||
            (snake_posb6.y + 2 == b_pos.y + 2) ||
            (snake_posb6.y + 2 == b_pos.y + 3) ||
            (snake_posb6.y + 2 == b_pos.y + 4) ||
            (snake_posb6.y + 2 == b_pos.y + 5) ||
            (snake_posb6.y + 2 == b_pos.y + 6) ||
            (snake_posb6.y + 2 == b_pos.y + 7) ||
            (snake_posb6.y + 2 == b_pos.y + 8) ||
            (snake_posb6.y + 2 == b_pos.y + 9) ||
            (snake_posb6.y + 2 == b_pos.y + 10)) &&
            ((snake_posb6.x == b_pos.x + 4) ||  //W
            (snake_posb6.x == b_pos.x + 36) ||  //W
            (snake_posb6.x == b_pos.x + 68) ||  //W
            (snake_posb6.x + 1 == b_pos.x + 4) ||  //W
            (snake_posb6.x + 1 == b_pos.x + 36) ||  //W
            (snake_posb6.x + 1 == b_pos.x + 68) ||  //W
            (snake_posb6.x + 2 == b_pos.x + 4) ||  //W
            (snake_posb6.x + 2 == b_pos.x + 36) ||  //W
            (snake_posb6.x + 2 == b_pos.x + 68) ||  //W
            (snake_posb6.x == b_pos.x + 20) ||  //W
            (snake_posb6.x == b_pos.x + 52) ||  //W
            (snake_posb6.x == b_pos.x + 84) ||  //W
            (snake_posb6.x + 1 == b_pos.x + 20) ||  //W
            (snake_posb6.x + 1 == b_pos.x + 52) ||  //W
            (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)&&(length !=1)&&(length !=2)&&(length !=3)&&(length !=4)&&(length !=5)&&(length !=6)) //W
        ) {
        //add some code that it doesn't move
        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 (
            ((((snake_posb7.y == b_pos.y) ||
            (snake_posb7.y == b_pos.y + 1) ||
            (snake_posb7.y == b_pos.y + 2) ||
            (snake_posb7.y == b_pos.y + 3) ||
            (snake_posb7.y == b_pos.y + 4) ||
            (snake_posb7.y == b_pos.y + 5) ||
            (snake_posb7.y == b_pos.y + 6) ||
            (snake_posb7.y == b_pos.y + 7) ||
            (snake_posb7.y == b_pos.y + 8) ||
            (snake_posb7.y == b_pos.y + 9) ||
            (snake_posb7.y == b_pos.y + 10) ||
            (snake_posb7.y + 1 == b_pos.y) ||
            (snake_posb7.y + 1 == b_pos.y + 1) ||
            (snake_posb7.y + 1 == b_pos.y + 2) ||
            (snake_posb7.y + 1 == b_pos.y + 3) ||
            (snake_posb7.y + 1 == b_pos.y + 4) ||
            (snake_posb7.y + 1 == b_pos.y + 5) ||
            (snake_posb7.y + 1 == b_pos.y + 6) ||
            (snake_posb7.y + 1 == b_pos.y + 7) ||
            (snake_posb7.y + 1 == b_pos.y + 8) ||
            (snake_posb7.y + 1 == b_pos.y + 9) ||
            (snake_posb7.y + 1 == b_pos.y + 10) ||
            (snake_posb7.y + 2 == b_pos.y) ||
            (snake_posb7.y + 2 == b_pos.y + 1) ||
            (snake_posb7.y + 2 == b_pos.y + 2) ||
            (snake_posb7.y + 2 == b_pos.y + 3) ||
            (snake_posb7.y + 2 == b_pos.y + 4) ||
            (snake_posb7.y + 2 == b_pos.y + 5) ||
            (snake_posb7.y + 2 == b_pos.y + 6) ||
            (snake_posb7.y + 2 == b_pos.y + 7) ||
            (snake_posb7.y + 2 == b_pos.y + 8) ||
            (snake_posb7.y + 2 == b_pos.y + 9) ||
            (snake_posb7.y + 2 == b_pos.y + 10)) &&
            ((snake_posb7.x == b_pos.x + 4) ||  //W
            (snake_posb7.x == b_pos.x + 36) ||  //W
            (snake_posb7.x == b_pos.x + 68) ||  //W
            (snake_posb7.x + 1 == b_pos.x + 4) ||  //W
            (snake_posb7.x + 1 == b_pos.x + 36) ||  //W
            (snake_posb7.x + 1 == b_pos.x + 68) ||  //W
            (snake_posb7.x + 2 == b_pos.x + 4) ||  //W
            (snake_posb7.x + 2 == b_pos.x + 36) ||  //W
            (snake_posb7.x + 2 == b_pos.x + 68) ||  //W
            (snake_posb7.x == b_pos.x + 20) ||  //W
            (snake_posb7.x == b_pos.x + 52) ||  //W
            (snake_posb7.x == b_pos.x + 84) ||  //W
            (snake_posb7.x + 1 == b_pos.x + 20) ||  //W
            (snake_posb7.x + 1 == b_pos.x + 52) ||  //W
            (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)&&(length !=1)&&(length !=2)&&(length !=3)&&(length !=4)&&(length !=5)&&(length !=6)&&(length !=7)) //W
        ) {
        //add some code that it doesn't move
        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 (
            ((((snake_posb8.y == b_pos.y) ||
            (snake_posb8.y == b_pos.y + 1) ||
            (snake_posb8.y == b_pos.y + 2) ||
            (snake_posb8.y == b_pos.y + 3) ||
            (snake_posb8.y == b_pos.y + 4) ||
            (snake_posb8.y == b_pos.y + 5) ||
            (snake_posb8.y == b_pos.y + 6) ||
            (snake_posb8.y == b_pos.y + 7) ||
            (snake_posb8.y == b_pos.y + 8) ||
            (snake_posb8.y == b_pos.y + 9) ||
            (snake_posb8.y == b_pos.y + 10) ||
            (snake_posb8.y + 1 == b_pos.y) ||
            (snake_posb8.y + 1 == b_pos.y + 1) ||
            (snake_posb8.y + 1 == b_pos.y + 2) ||
            (snake_posb8.y + 1 == b_pos.y + 3) ||
            (snake_posb8.y + 1 == b_pos.y + 4) ||
            (snake_posb8.y + 1 == b_pos.y + 5) ||
            (snake_posb8.y + 1 == b_pos.y + 6) ||
            (snake_posb8.y + 1 == b_pos.y + 7) ||
            (snake_posb8.y + 1 == b_pos.y + 8) ||
            (snake_posb8.y + 1 == b_pos.y + 9) ||
            (snake_posb8.y + 1 == b_pos.y + 10) ||
            (snake_posb8.y + 2 == b_pos.y) ||
            (snake_posb8.y + 2 == b_pos.y + 1) ||
            (snake_posb8.y + 2 == b_pos.y + 2) ||
            (snake_posb8.y + 2 == b_pos.y + 3) ||
            (snake_posb8.y + 2 == b_pos.y + 4) ||
            (snake_posb8.y + 2 == b_pos.y + 5) ||
            (snake_posb8.y + 2 == b_pos.y + 6) ||
            (snake_posb8.y + 2 == b_pos.y + 7) ||
            (snake_posb8.y + 2 == b_pos.y + 8) ||
            (snake_posb8.y + 2 == b_pos.y + 9) ||
            (snake_posb8.y + 2 == b_pos.y + 10)) &&
            ((snake_posb8.x == b_pos.x + 4) ||  //W
            (snake_posb8.x == b_pos.x + 36) ||  //W
            (snake_posb8.x == b_pos.x + 68) ||  //W
            (snake_posb8.x + 1 == b_pos.x + 4) ||  //W
            (snake_posb8.x + 1 == b_pos.x + 36) ||  //W
            (snake_posb8.x + 1 == b_pos.x + 68) ||  //W
            (snake_posb8.x + 2 == b_pos.x + 4) ||  //W
            (snake_posb8.x + 2 == b_pos.x + 36) ||  //W
            (snake_posb8.x + 2 == b_pos.x + 68) ||  //W
            (snake_posb8.x == b_pos.x + 20) ||  //W
            (snake_posb8.x == b_pos.x + 52) ||  //W
            (snake_posb8.x == b_pos.x + 84) ||  //W
            (snake_posb8.x + 1 == b_pos.x + 20) ||  //W
            (snake_posb8.x + 1 == b_pos.x + 52) ||  //W
            (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)&&(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
        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 (
            ((((snake_posb9.y == b_pos.y) ||
            (snake_posb9.y == b_pos.y + 1) ||
            (snake_posb9.y == b_pos.y + 2) ||
            (snake_posb9.y == b_pos.y + 3) ||
            (snake_posb9.y == b_pos.y + 4) ||
            (snake_posb9.y == b_pos.y + 5) ||
            (snake_posb9.y == b_pos.y + 6) ||
            (snake_posb9.y == b_pos.y + 7) ||
            (snake_posb9.y == b_pos.y + 8) ||
            (snake_posb9.y == b_pos.y + 9) ||
            (snake_posb9.y == b_pos.y + 10) ||
            (snake_posb9.y + 1 == b_pos.y) ||
            (snake_posb9.y + 1 == b_pos.y + 1) ||
            (snake_posb9.y + 1 == b_pos.y + 2) ||
            (snake_posb9.y + 1 == b_pos.y + 3) ||
            (snake_posb9.y + 1 == b_pos.y + 4) ||
            (snake_posb9.y + 1 == b_pos.y + 5) ||
            (snake_posb9.y + 1 == b_pos.y + 6) ||
            (snake_posb9.y + 1 == b_pos.y + 7) ||
            (snake_posb9.y + 1 == b_pos.y + 8) ||
            (snake_posb9.y + 1 == b_pos.y + 9) ||
            (snake_posb9.y + 1 == b_pos.y + 10) ||
            (snake_posb9.y + 2 == b_pos.y) ||
            (snake_posb9.y + 2 == b_pos.y + 1) ||
            (snake_posb9.y + 2 == b_pos.y + 2) ||
            (snake_posb9.y + 2 == b_pos.y + 3) ||
            (snake_posb9.y + 2 == b_pos.y + 4) ||
            (snake_posb9.y + 2 == b_pos.y + 5) ||
            (snake_posb9.y + 2 == b_pos.y + 6) ||
            (snake_posb9.y + 2 == b_pos.y + 7) ||
            (snake_posb9.y + 2 == b_pos.y + 8) ||
            (snake_posb9.y + 2 == b_pos.y + 9) ||
            (snake_posb9.y + 2 == b_pos.y + 10)) &&
            ((snake_posb9.x == b_pos.x + 4) ||  //W
            (snake_posb9.x == b_pos.x + 36) ||  //W
            (snake_posb9.x == b_pos.x + 68) ||  //W
            (snake_posb9.x + 1 == b_pos.x + 4) ||  //W
            (snake_posb9.x + 1 == b_pos.x + 36) ||  //W
            (snake_posb9.x + 1 == b_pos.x + 68) ||  //W
            (snake_posb9.x + 2 == b_pos.x + 4) ||  //W
            (snake_posb9.x + 2 == b_pos.x + 36) ||  //W
            (snake_posb9.x + 2 == b_pos.x + 68) ||  //W
            (snake_posb9.x == b_pos.x + 20) ||  //W
            (snake_posb9.x == b_pos.x + 52) ||  //W
            (snake_posb9.x == b_pos.x + 84) ||  //W
            (snake_posb9.x + 1 == b_pos.x + 20) ||  //W
            (snake_posb9.x + 1 == b_pos.x + 52) ||  //W
            (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)&&(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
        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 (
            ((((snake_posb10.y == b_pos.y) ||
            (snake_posb10.y == b_pos.y + 1) ||
            (snake_posb10.y == b_pos.y + 2) ||
            (snake_posb10.y == b_pos.y + 3) ||
            (snake_posb10.y == b_pos.y + 4) ||
            (snake_posb10.y == b_pos.y + 5) ||
            (snake_posb10.y == b_pos.y + 6) ||
            (snake_posb10.y == b_pos.y + 7) ||
            (snake_posb10.y == b_pos.y + 8) ||
            (snake_posb10.y == b_pos.y + 9) ||
            (snake_posb10.y == b_pos.y + 10) ||
            (snake_posb10.y + 1 == b_pos.y) ||
            (snake_posb10.y + 1 == b_pos.y + 1) ||
            (snake_posb10.y + 1 == b_pos.y + 2) ||
            (snake_posb10.y + 1 == b_pos.y + 3) ||
            (snake_posb10.y + 1 == b_pos.y + 4) ||
            (snake_posb10.y + 1 == b_pos.y + 5) ||
            (snake_posb10.y + 1 == b_pos.y + 6) ||
            (snake_posb10.y + 1 == b_pos.y + 7) ||
            (snake_posb10.y + 1 == b_pos.y + 8) ||
            (snake_posb10.y + 1 == b_pos.y + 9) ||
            (snake_posb10.y + 1 == b_pos.y + 10) ||
            (snake_posb10.y + 2 == b_pos.y) ||
            (snake_posb10.y + 2 == b_pos.y + 1) ||
            (snake_posb10.y + 2 == b_pos.y + 2) ||
            (snake_posb10.y + 2 == b_pos.y + 3) ||
            (snake_posb10.y + 2 == b_pos.y + 4) ||
            (snake_posb10.y + 2 == b_pos.y + 5) ||
            (snake_posb10.y + 2 == b_pos.y + 6) ||
            (snake_posb10.y + 2 == b_pos.y + 7) ||
            (snake_posb10.y + 2 == b_pos.y + 8) ||
            (snake_posb10.y + 2 == b_pos.y + 9) ||
            (snake_posb10.y + 2 == b_pos.y + 10)) &&
            ((snake_posb10.x == b_pos.x + 4) ||  //W
            (snake_posb10.x == b_pos.x + 36) ||  //W
            (snake_posb10.x == b_pos.x + 68) ||  //W
            (snake_posb10.x + 1 == b_pos.x + 4) ||  //W
            (snake_posb10.x + 1 == b_pos.x + 36) ||  //W
            (snake_posb10.x + 1 == b_pos.x + 68) ||  //W
            (snake_posb10.x + 2 == b_pos.x + 4) ||  //W
            (snake_posb10.x + 2 == b_pos.x + 36) ||  //W
            (snake_posb10.x + 2 == b_pos.x + 68) ||  //W
            (snake_posb10.x == b_pos.x + 20) ||  //W
            (snake_posb10.x == b_pos.x + 52) ||  //W
            (snake_posb10.x == b_pos.x + 84) ||  //W
            (snake_posb10.x + 1 == b_pos.x + 20) ||  //W
            (snake_posb10.x + 1 == b_pos.x + 52) ||  //W
            (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)&&(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
        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 (
            ((((snake_posb11.y == b_pos.y) ||
            (snake_posb11.y == b_pos.y + 1) ||
            (snake_posb11.y == b_pos.y + 2) ||
            (snake_posb11.y == b_pos.y + 3) ||
            (snake_posb11.y == b_pos.y + 4) ||
            (snake_posb11.y == b_pos.y + 5) ||
            (snake_posb11.y == b_pos.y + 6) ||
            (snake_posb11.y == b_pos.y + 7) ||
            (snake_posb11.y == b_pos.y + 8) ||
            (snake_posb11.y == b_pos.y + 9) ||
            (snake_posb11.y == b_pos.y + 10) ||
            (snake_posb11.y + 1 == b_pos.y) ||
            (snake_posb11.y + 1 == b_pos.y + 1) ||
            (snake_posb11.y + 1 == b_pos.y + 2) ||
            (snake_posb11.y + 1 == b_pos.y + 3) ||
            (snake_posb11.y + 1 == b_pos.y + 4) ||
            (snake_posb11.y + 1 == b_pos.y + 5) ||
            (snake_posb11.y + 1 == b_pos.y + 6) ||
            (snake_posb11.y + 1 == b_pos.y + 7) ||
            (snake_posb11.y + 1 == b_pos.y + 8) ||
            (snake_posb11.y + 1 == b_pos.y + 9) ||
            (snake_posb11.y + 1 == b_pos.y + 10) ||
            (snake_posb11.y + 2 == b_pos.y) ||
            (snake_posb11.y + 2 == b_pos.y + 1) ||
            (snake_posb11.y + 2 == b_pos.y + 2) ||
            (snake_posb11.y + 2 == b_pos.y + 3) ||
            (snake_posb11.y + 2 == b_pos.y + 4) ||
            (snake_posb11.y + 2 == b_pos.y + 5) ||
            (snake_posb11.y + 2 == b_pos.y + 6) ||
            (snake_posb11.y + 2 == b_pos.y + 7) ||
            (snake_posb11.y + 2 == b_pos.y + 8) ||
            (snake_posb11.y + 2 == b_pos.y + 9) ||
            (snake_posb11.y + 2 == b_pos.y + 10)) &&
            ((snake_posb11.x == b_pos.x + 4) ||  //W
            (snake_posb11.x == b_pos.x + 36) ||  //W
            (snake_posb11.x == b_pos.x + 68) ||  //W
            (snake_posb11.x + 1 == b_pos.x + 4) ||  //W
            (snake_posb11.x + 1 == b_pos.x + 36) ||  //W
            (snake_posb11.x + 1 == b_pos.x + 68) ||  //W
            (snake_posb11.x + 2 == b_pos.x + 4) ||  //W
            (snake_posb11.x + 2 == b_pos.x + 36) ||  //W
            (snake_posb11.x + 2 == b_pos.x + 68) ||  //W
            (snake_posb11.x == b_pos.x + 20) ||  //W
            (snake_posb11.x == b_pos.x + 52) ||  //W
            (snake_posb11.x == b_pos.x + 84) ||  //W
            (snake_posb11.x + 1 == b_pos.x + 20) ||  //W
            (snake_posb11.x + 1 == b_pos.x + 52) ||  //W
            (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)&&(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
        if(length == 12)  {
            b0 = 0;
        }
         if(length == 13)  {
            b1 = 0;
        }
         if(length == 14)  {
            b2 = 0;
        }
         if(length == 15)  {
            b3 = 0;
        }
    }
    
    else if (
            ((((snake_posb12.y == b_pos.y) ||
            (snake_posb12.y == b_pos.y + 1) ||
            (snake_posb12.y == b_pos.y + 2) ||
            (snake_posb12.y == b_pos.y + 3) ||
            (snake_posb12.y == b_pos.y + 4) ||
            (snake_posb12.y == b_pos.y + 5) ||
            (snake_posb12.y == b_pos.y + 6) ||
            (snake_posb12.y == b_pos.y + 7) ||
            (snake_posb12.y == b_pos.y + 8) ||
            (snake_posb12.y == b_pos.y + 9) ||
            (snake_posb12.y == b_pos.y + 10) ||
            (snake_posb12.y + 1 == b_pos.y) ||
            (snake_posb12.y + 1 == b_pos.y + 1) ||
            (snake_posb12.y + 1 == b_pos.y + 2) ||
            (snake_posb12.y + 1 == b_pos.y + 3) ||
            (snake_posb12.y + 1 == b_pos.y + 4) ||
            (snake_posb12.y + 1 == b_pos.y + 5) ||
            (snake_posb12.y + 1 == b_pos.y + 6) ||
            (snake_posb12.y + 1 == b_pos.y + 7) ||
            (snake_posb12.y + 1 == b_pos.y + 8) ||
            (snake_posb12.y + 1 == b_pos.y + 9) ||
            (snake_posb12.y + 1 == b_pos.y + 10) ||
            (snake_posb12.y + 2 == b_pos.y) ||
            (snake_posb12.y + 2 == b_pos.y + 1) ||
            (snake_posb12.y + 2 == b_pos.y + 2) ||
            (snake_posb12.y + 2 == b_pos.y + 3) ||
            (snake_posb12.y + 2 == b_pos.y + 4) ||
            (snake_posb12.y + 2 == b_pos.y + 5) ||
            (snake_posb12.y + 2 == b_pos.y + 6) ||
            (snake_posb12.y + 2 == b_pos.y + 7) ||
            (snake_posb12.y + 2 == b_pos.y + 8) ||
            (snake_posb12.y + 2 == b_pos.y + 9) ||
            (snake_posb12.y + 2 == b_pos.y + 10)) &&
            ((snake_posb12.x == b_pos.x + 4) ||  //W
            (snake_posb12.x == b_pos.x + 36) ||  //W
            (snake_posb12.x == b_pos.x + 68) ||  //W
            (snake_posb12.x + 1 == b_pos.x + 4) ||  //W
            (snake_posb12.x + 1 == b_pos.x + 36) ||  //W
            (snake_posb12.x + 1 == b_pos.x + 68) ||  //W
            (snake_posb12.x + 2 == b_pos.x + 4) ||  //W
            (snake_posb12.x + 2 == b_pos.x + 36) ||  //W
            (snake_posb12.x + 2 == b_pos.x + 68) ||  //W
            (snake_posb12.x == b_pos.x + 20) ||  //W
            (snake_posb12.x == b_pos.x + 52) ||  //W
            (snake_posb12.x == b_pos.x + 84) ||  //W
            (snake_posb12.x + 1 == b_pos.x + 20) ||  //W
            (snake_posb12.x + 1 == b_pos.x + 52) ||  //W
            (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)&&(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
        if(length == 13)  {
            b0 = 0;
        }
         if(length == 14)  {
            b1 = 0;
        }
         if(length == 15)  {
            b2 = 0;
        }
        speed = speed/2;
    }
    
    else if (
            ((((snake_posb13.y == b_pos.y) ||
            (snake_posb13.y == b_pos.y + 1) ||
            (snake_posb13.y == b_pos.y + 2) ||
            (snake_posb13.y == b_pos.y + 3) ||
            (snake_posb13.y == b_pos.y + 4) ||
            (snake_posb13.y == b_pos.y + 5) ||
            (snake_posb13.y == b_pos.y + 6) ||
            (snake_posb13.y == b_pos.y + 7) ||
            (snake_posb13.y == b_pos.y + 8) ||
            (snake_posb13.y == b_pos.y + 9) ||
            (snake_posb13.y == b_pos.y + 10) ||
            (snake_posb13.y + 1 == b_pos.y) ||
            (snake_posb13.y + 1 == b_pos.y + 1) ||
            (snake_posb13.y + 1 == b_pos.y + 2) ||
            (snake_posb13.y + 1 == b_pos.y + 3) ||
            (snake_posb13.y + 1 == b_pos.y + 4) ||
            (snake_posb13.y + 1 == b_pos.y + 5) ||
            (snake_posb13.y + 1 == b_pos.y + 6) ||
            (snake_posb13.y + 1 == b_pos.y + 7) ||
            (snake_posb13.y + 1 == b_pos.y + 8) ||
            (snake_posb13.y + 1 == b_pos.y + 9) ||
            (snake_posb13.y + 1 == b_pos.y + 10) ||
            (snake_posb13.y + 2 == b_pos.y) ||
            (snake_posb13.y + 2 == b_pos.y + 1) ||
            (snake_posb13.y + 2 == b_pos.y + 2) ||
            (snake_posb13.y + 2 == b_pos.y + 3) ||
            (snake_posb13.y + 2 == b_pos.y + 4) ||
            (snake_posb13.y + 2 == b_pos.y + 5) ||
            (snake_posb13.y + 2 == b_pos.y + 6) ||
            (snake_posb13.y + 2 == b_pos.y + 7) ||
            (snake_posb13.y + 2 == b_pos.y + 8) ||
            (snake_posb13.y + 2 == b_pos.y + 9) ||
            (snake_posb13.y + 2 == b_pos.y + 10)) &&
            ((snake_posb13.x == b_pos.x + 4) ||  //W
            (snake_posb13.x == b_pos.x + 36) ||  //W
            (snake_posb13.x == b_pos.x + 68) ||  //W
            (snake_posb13.x + 1 == b_pos.x + 4) ||  //W
            (snake_posb13.x + 1 == b_pos.x + 36) ||  //W
            (snake_posb13.x + 1 == b_pos.x + 68) ||  //W
            (snake_posb13.x + 2 == b_pos.x + 4) ||  //W
            (snake_posb13.x + 2 == b_pos.x + 36) ||  //W
            (snake_posb13.x + 2 == b_pos.x + 68) ||  //W
            (snake_posb13.x == b_pos.x + 20) ||  //W
            (snake_posb13.x == b_pos.x + 52) ||  //W
            (snake_posb13.x == b_pos.x + 84) ||  //W
            (snake_posb13.x + 1 == b_pos.x + 20) ||  //W
            (snake_posb13.x + 1 == b_pos.x + 52) ||  //W
            (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)&&(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
        if(length == 14)  {
            b0 = 0;
        }
         if(length == 15)  {
            b1 = 0;
        }
    }
    
    else if (
            ((((snake_posb14.y == b_pos.y) ||
            (snake_posb14.y == b_pos.y + 1) ||
            (snake_posb14.y == b_pos.y + 2) ||
            (snake_posb14.y == b_pos.y + 3) ||
            (snake_posb14.y == b_pos.y + 4) ||
            (snake_posb14.y == b_pos.y + 5) ||
            (snake_posb14.y == b_pos.y + 6) ||
            (snake_posb14.y == b_pos.y + 7) ||
            (snake_posb14.y == b_pos.y + 8) ||
            (snake_posb14.y == b_pos.y + 9) ||
            (snake_posb14.y == b_pos.y + 10) ||
            (snake_posb14.y + 1 == b_pos.y) ||
            (snake_posb14.y + 1 == b_pos.y + 1) ||
            (snake_posb14.y + 1 == b_pos.y + 2) ||
            (snake_posb14.y + 1 == b_pos.y + 3) ||
            (snake_posb14.y + 1 == b_pos.y + 4) ||
            (snake_posb14.y + 1 == b_pos.y + 5) ||
            (snake_posb14.y + 1 == b_pos.y + 6) ||
            (snake_posb14.y + 1 == b_pos.y + 7) ||
            (snake_posb14.y + 1 == b_pos.y + 8) ||
            (snake_posb14.y + 1 == b_pos.y + 9) ||
            (snake_posb14.y + 1 == b_pos.y + 10) ||
            (snake_posb14.y + 2 == b_pos.y) ||
            (snake_posb14.y + 2 == b_pos.y + 1) ||
            (snake_posb14.y + 2 == b_pos.y + 2) ||
            (snake_posb14.y + 2 == b_pos.y + 3) ||
            (snake_posb14.y + 2 == b_pos.y + 4) ||
            (snake_posb14.y + 2 == b_pos.y + 5) ||
            (snake_posb14.y + 2 == b_pos.y + 6) ||
            (snake_posb14.y + 2 == b_pos.y + 7) ||
            (snake_posb14.y + 2 == b_pos.y + 8) ||
            (snake_posb14.y + 2 == b_pos.y + 9) ||
            (snake_posb14.y + 2 == b_pos.y + 10)) &&
            ((snake_posb14.x == b_pos.x + 4) ||  //W
            (snake_posb14.x == b_pos.x + 36) ||  //W
            (snake_posb14.x == b_pos.x + 68) ||  //W
            (snake_posb14.x + 1 == b_pos.x + 4) ||  //W
            (snake_posb14.x + 1 == b_pos.x + 36) ||  //W
            (snake_posb14.x + 1 == b_pos.x + 68) ||  //W
            (snake_posb14.x + 2 == b_pos.x + 4) ||  //W
            (snake_posb14.x + 2 == b_pos.x + 36) ||  //W
            (snake_posb14.x + 2 == b_pos.x + 68) ||  //W
            (snake_posb14.x == b_pos.x + 20) ||  //W
            (snake_posb14.x == b_pos.x + 52) ||  //W
            (snake_posb14.x == b_pos.x + 84) ||  //W
            (snake_posb14.x + 1 == b_pos.x + 20) ||  //W
            (snake_posb14.x + 1 == b_pos.x + 52) ||  //W
            (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)&&(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
        if(length == 15)  {
            b0 = 0;
        }
    }
    
    //for East
    else if (
            ((((snake_pos.y == b_pos.y) ||
            (snake_pos.y == b_pos.y + 1) ||
            (snake_pos.y == b_pos.y + 2) ||
            (snake_pos.y == b_pos.y + 3) ||
            (snake_pos.y == b_pos.y + 4) ||
            (snake_pos.y == b_pos.y + 5) ||
            (snake_pos.y == b_pos.y + 6) ||
            (snake_pos.y == b_pos.y + 7) ||
            (snake_pos.y == b_pos.y + 8) ||
            (snake_pos.y == b_pos.y + 9) ||
            (snake_pos.y == b_pos.y + 10) ||
            (snake_pos.y + 1 == b_pos.y) ||
            (snake_pos.y + 1 == b_pos.y + 1) ||
            (snake_pos.y + 1 == b_pos.y + 2) ||
            (snake_pos.y + 1 == b_pos.y + 3) ||
            (snake_pos.y + 1 == b_pos.y + 4) ||
            (snake_pos.y + 1 == b_pos.y + 5) ||
            (snake_pos.y + 1 == b_pos.y + 6) ||
            (snake_pos.y + 1 == b_pos.y + 7) ||
            (snake_pos.y + 1 == b_pos.y + 8) ||
            (snake_pos.y + 1 == b_pos.y + 9) ||
            (snake_pos.y + 1 == b_pos.y + 10) ||
            (snake_pos.y + 2 == b_pos.y) ||
            (snake_pos.y + 2 == b_pos.y + 1) ||
            (snake_pos.y + 2 == b_pos.y + 2) ||
            (snake_pos.y + 2 == b_pos.y + 3) ||
            (snake_pos.y + 2 == b_pos.y + 4) ||
            (snake_pos.y + 2 == b_pos.y + 5) ||
            (snake_pos.y + 2 == b_pos.y + 6) ||
            (snake_pos.y + 2 == b_pos.y + 7) ||
            (snake_pos.y + 2 == b_pos.y + 8) ||
            (snake_pos.y + 2 == b_pos.y + 9) ||
            (snake_pos.y + 2 == b_pos.y + 10)) &&
            ((snake_pos.x == b_pos.x + 18) ||  //E
            (snake_pos.x == b_pos.x + 50) ||  //E
            (snake_pos.x == b_pos.x + 82) ||  //E
            (snake_pos.x + 1 == b_pos.x + 18) ||  //E
            (snake_pos.x + 1 == b_pos.x + 50) ||  //E
            (snake_pos.x + 1 == b_pos.x + 82) ||  //E
            (snake_pos.x + 2 == b_pos.x + 18) ||  //E
            (snake_pos.x + 2 == b_pos.x + 50) ||  //E
            (snake_pos.x + 2 == b_pos.x + 82) ||  //E
            (snake_pos.x == b_pos.x + 2) ||  //E
            (snake_pos.x == b_pos.x + 34) ||  //E
            (snake_pos.x == b_pos.x + 66) ||  //E
            (snake_pos.x + 1 == b_pos.x + 2) ||  //E
            (snake_pos.x + 1 == b_pos.x + 34) ||  //E
            (snake_pos.x + 1 == b_pos.x + 66) ||  //E
            (snake_pos.x + 2 == b_pos.x + 2) ||  //E
            (snake_pos.x + 2 == b_pos.x + 34) ||  //E
            (snake_pos.x + 2 == b_pos.x + 66)))&&(d != W)) //E
        ) {
            //add some code that it doesn't move through
            speed = 0;
        }
        
        else if (
            ((((snake_posb1.y == b_pos.y) ||
            (snake_posb1.y == b_pos.y + 1) ||
            (snake_posb1.y == b_pos.y + 2) ||
            (snake_posb1.y == b_pos.y + 3) ||
            (snake_posb1.y == b_pos.y + 4) ||
            (snake_posb1.y == b_pos.y + 5) ||
            (snake_posb1.y == b_pos.y + 6) ||
            (snake_posb1.y == b_pos.y + 7) ||
            (snake_posb1.y == b_pos.y + 8) ||
            (snake_posb1.y == b_pos.y + 9) ||
            (snake_posb1.y == b_pos.y + 10) ||
            (snake_posb1.y + 1 == b_pos.y) ||
            (snake_posb1.y + 1 == b_pos.y + 1) ||
            (snake_posb1.y + 1 == b_pos.y + 2) ||
            (snake_posb1.y + 1 == b_pos.y + 3) ||
            (snake_posb1.y + 1 == b_pos.y + 4) ||
            (snake_posb1.y + 1 == b_pos.y + 5) ||
            (snake_posb1.y + 1 == b_pos.y + 6) ||
            (snake_posb1.y + 1 == b_pos.y + 7) ||
            (snake_posb1.y + 1 == b_pos.y + 8) ||
            (snake_posb1.y + 1 == b_pos.y + 9) ||
            (snake_posb1.y + 1 == b_pos.y + 10) ||
            (snake_posb1.y + 2 == b_pos.y) ||
            (snake_posb1.y + 2 == b_pos.y + 1) ||
            (snake_posb1.y + 2 == b_pos.y + 2) ||
            (snake_posb1.y + 2 == b_pos.y + 3) ||
            (snake_posb1.y + 2 == b_pos.y + 4) ||
            (snake_posb1.y + 2 == b_pos.y + 5) ||
            (snake_posb1.y + 2 == b_pos.y + 6) ||
            (snake_posb1.y + 2 == b_pos.y + 7) ||
            (snake_posb1.y + 2 == b_pos.y + 8) ||
            (snake_posb1.y + 2 == b_pos.y + 9) ||
            (snake_posb1.y + 2 == b_pos.y + 10)) &&
            ((snake_posb1.x == b_pos.x + 2) ||  //E
            (snake_posb1.x == b_pos.x + 34) ||  //E
            (snake_posb1.x == b_pos.x + 66) ||  //E
            (snake_posb1.x + 1 == b_pos.x + 2) ||  //E
            (snake_posb1.x + 1 == b_pos.x + 34) ||  //E
            (snake_posb1.x + 1 == b_pos.x + 66) ||  //E
            (snake_posb1.x + 2 == b_pos.x + 2) ||  //E
            (snake_posb1.x + 2 == b_pos.x + 34) ||  //E
            (snake_posb1.x + 2 == b_pos.x + 66) ||  //E
            (snake_posb1.x == b_pos.x + 20) ||  //E
            (snake_posb1.x == b_pos.x + 50) ||  //E
            (snake_posb1.x == b_pos.x + 82) ||  //E
            (snake_posb1.x + 1 == b_pos.x + 20) ||  //E
            (snake_posb1.x + 1 == b_pos.x + 50) ||  //E
            (snake_posb1.x + 1 == b_pos.x + 82) ||  //E
            (snake_posb1.x + 2 == b_pos.x + 20) ||  //E
            (snake_posb1.x + 2 == b_pos.x + 50) ||  //E
            (snake_posb1.x + 2 == b_pos.x + 82)))&&(d != W)) //E
        ) {
        //add some code that it doesn't move
        speed = 0;
    }
    
    else if (
            ((((snake_posb2.y == b_pos.y) ||
            (snake_posb2.y == b_pos.y + 1) ||
            (snake_posb2.y == b_pos.y + 2) ||
            (snake_posb2.y == b_pos.y + 3) ||
            (snake_posb2.y == b_pos.y + 4) ||
            (snake_posb2.y == b_pos.y + 5) ||
            (snake_posb2.y == b_pos.y + 6) ||
            (snake_posb2.y == b_pos.y + 7) ||
            (snake_posb2.y == b_pos.y + 8) ||
            (snake_posb2.y == b_pos.y + 9) ||
            (snake_posb2.y == b_pos.y + 10) ||
            (snake_posb2.y + 1 == b_pos.y) ||
            (snake_posb2.y + 1 == b_pos.y + 1) ||
            (snake_posb2.y + 1 == b_pos.y + 2) ||
            (snake_posb2.y + 1 == b_pos.y + 3) ||
            (snake_posb2.y + 1 == b_pos.y + 4) ||
            (snake_posb2.y + 1 == b_pos.y + 5) ||
            (snake_posb2.y + 1 == b_pos.y + 6) ||
            (snake_posb2.y + 1 == b_pos.y + 7) ||
            (snake_posb2.y + 1 == b_pos.y + 8) ||
            (snake_posb2.y + 1 == b_pos.y + 9) ||
            (snake_posb2.y + 1 == b_pos.y + 10) ||
            (snake_posb2.y + 2 == b_pos.y) ||
            (snake_posb2.y + 2 == b_pos.y + 1) ||
            (snake_posb2.y + 2 == b_pos.y + 2) ||
            (snake_posb2.y + 2 == b_pos.y + 3) ||
            (snake_posb2.y + 2 == b_pos.y + 4) ||
            (snake_posb2.y + 2 == b_pos.y + 5) ||
            (snake_posb2.y + 2 == b_pos.y + 6) ||
            (snake_posb2.y + 2 == b_pos.y + 7) ||
            (snake_posb2.y + 2 == b_pos.y + 8) ||
            (snake_posb2.y + 2 == b_pos.y + 9) ||
            (snake_posb2.y + 2 == b_pos.y + 10)) &&
            ((snake_posb2.x == b_pos.x + 2) ||  //E
            (snake_posb2.x == b_pos.x + 34) ||  //E
            (snake_posb2.x == b_pos.x + 66) ||  //E
            (snake_posb2.x + 1 == b_pos.x + 2) ||  //E
            (snake_posb2.x + 1 == b_pos.x + 34) ||  //E
            (snake_posb2.x + 1 == b_pos.x + 66) ||  //E
            (snake_posb2.x + 2 == b_pos.x + 2) ||  //E
            (snake_posb2.x + 2 == b_pos.x + 34) ||  //E
            (snake_posb2.x + 2 == b_pos.x + 66) ||  //E
            (snake_posb2.x == b_pos.x + 20) ||  //E
            (snake_posb2.x == b_pos.x + 50) ||  //E
            (snake_posb2.x == b_pos.x + 82) ||  //E
            (snake_posb2.x + 1 == b_pos.x + 20) ||  //E
            (snake_posb2.x + 1 == b_pos.x + 50) ||  //E
            (snake_posb2.x + 1 == b_pos.x + 82) ||  //E
            (snake_posb2.x + 2 == b_pos.x + 20) ||  //E
            (snake_posb2.x + 2 == b_pos.x + 50) ||  //E
            (snake_posb2.x + 2 == b_pos.x + 82)))&&(d != W)) //E
        ) {
        //add some code that it doesn't move
        speed = 0;
    }
    
    else if (
            ((((snake_posb3.y == b_pos.y) ||
            (snake_posb3.y == b_pos.y + 1) ||
            (snake_posb3.y == b_pos.y + 2) ||
            (snake_posb3.y == b_pos.y + 3) ||
            (snake_posb3.y == b_pos.y + 4) ||
            (snake_posb3.y == b_pos.y + 5) ||
            (snake_posb3.y == b_pos.y + 6) ||
            (snake_posb3.y == b_pos.y + 7) ||
            (snake_posb3.y == b_pos.y + 8) ||
            (snake_posb3.y == b_pos.y + 9) ||
            (snake_posb3.y == b_pos.y + 10) ||
            (snake_posb3.y + 1 == b_pos.y) ||
            (snake_posb3.y + 1 == b_pos.y + 1) ||
            (snake_posb3.y + 1 == b_pos.y + 2) ||
            (snake_posb3.y + 1 == b_pos.y + 3) ||
            (snake_posb3.y + 1 == b_pos.y + 4) ||
            (snake_posb3.y + 1 == b_pos.y + 5) ||
            (snake_posb3.y + 1 == b_pos.y + 6) ||
            (snake_posb3.y + 1 == b_pos.y + 7) ||
            (snake_posb3.y + 1 == b_pos.y + 8) ||
            (snake_posb3.y + 1 == b_pos.y + 9) ||
            (snake_posb3.y + 1 == b_pos.y + 10) ||
            (snake_posb3.y + 2 == b_pos.y) ||
            (snake_posb3.y + 2 == b_pos.y + 1) ||
            (snake_posb3.y + 2 == b_pos.y + 2) ||
            (snake_posb3.y + 2 == b_pos.y + 3) ||
            (snake_posb3.y + 2 == b_pos.y + 4) ||
            (snake_posb3.y + 2 == b_pos.y + 5) ||
            (snake_posb3.y + 2 == b_pos.y + 6) ||
            (snake_posb3.y + 2 == b_pos.y + 7) ||
            (snake_posb3.y + 2 == b_pos.y + 8) ||
            (snake_posb3.y + 2 == b_pos.y + 9) ||
            (snake_posb3.y + 2 == b_pos.y + 10)) &&
            ((snake_posb3.x == b_pos.x + 2) ||  //E
            (snake_posb3.x == b_pos.x + 34) ||  //E
            (snake_posb3.x == b_pos.x + 66) ||  //E
            (snake_posb3.x + 1 == b_pos.x + 2) ||  //E
            (snake_posb3.x + 1 == b_pos.x + 34) ||  //E
            (snake_posb3.x + 1 == b_pos.x + 66) ||  //E
            (snake_posb3.x + 2 == b_pos.x + 2) ||  //E
            (snake_posb3.x + 2 == b_pos.x + 34) ||  //E
            (snake_posb3.x + 2 == b_pos.x + 66) ||  //E
            (snake_posb3.x == b_pos.x + 20) ||  //E
            (snake_posb3.x == b_pos.x + 50) ||  //E
            (snake_posb3.x == b_pos.x + 82) ||  //E
            (snake_posb3.x + 1 == b_pos.x + 20) ||  //E
            (snake_posb3.x + 1 == b_pos.x + 50) ||  //E
            (snake_posb3.x + 1 == b_pos.x + 82) ||  //E
            (snake_posb3.x + 2 == b_pos.x + 20) ||  //E
            (snake_posb3.x + 2 == b_pos.x + 50) ||  //E
            (snake_posb3.x + 2 == b_pos.x + 82)))&&(d != W)) //E
        ) {
        //add some code that it doesn't move
        speed = 0;
    }
    
    else if (
            ((((snake_posb4.y == b_pos.y) ||
            (snake_posb4.y == b_pos.y + 1) ||
            (snake_posb4.y == b_pos.y + 2) ||
            (snake_posb4.y == b_pos.y + 3) ||
            (snake_posb4.y == b_pos.y + 4) ||
            (snake_posb4.y == b_pos.y + 5) ||
            (snake_posb4.y == b_pos.y + 6) ||
            (snake_posb4.y == b_pos.y + 7) ||
            (snake_posb4.y == b_pos.y + 8) ||
            (snake_posb4.y == b_pos.y + 9) ||
            (snake_posb4.y == b_pos.y + 10) ||
            (snake_posb4.y + 1 == b_pos.y) ||
            (snake_posb4.y + 1 == b_pos.y + 1) ||
            (snake_posb4.y + 1 == b_pos.y + 2) ||
            (snake_posb4.y + 1 == b_pos.y + 3) ||
            (snake_posb4.y + 1 == b_pos.y + 4) ||
            (snake_posb4.y + 1 == b_pos.y + 5) ||
            (snake_posb4.y + 1 == b_pos.y + 6) ||
            (snake_posb4.y + 1 == b_pos.y + 7) ||
            (snake_posb4.y + 1 == b_pos.y + 8) ||
            (snake_posb4.y + 1 == b_pos.y + 9) ||
            (snake_posb4.y + 1 == b_pos.y + 10) ||
            (snake_posb4.y + 2 == b_pos.y) ||
            (snake_posb4.y + 2 == b_pos.y + 1) ||
            (snake_posb4.y + 2 == b_pos.y + 2) ||
            (snake_posb4.y + 2 == b_pos.y + 3) ||
            (snake_posb4.y + 2 == b_pos.y + 4) ||
            (snake_posb4.y + 2 == b_pos.y + 5) ||
            (snake_posb4.y + 2 == b_pos.y + 6) ||
            (snake_posb4.y + 2 == b_pos.y + 7) ||
            (snake_posb4.y + 2 == b_pos.y + 8) ||
            (snake_posb4.y + 2 == b_pos.y + 9) ||
            (snake_posb4.y + 2 == b_pos.y + 10)) &&
            ((snake_posb4.x == b_pos.x + 2) ||  //E
            (snake_posb4.x == b_pos.x + 34) ||  //E
            (snake_posb4.x == b_pos.x + 66) ||  //E
            (snake_posb4.x + 1 == b_pos.x + 2) ||  //E
            (snake_posb4.x + 1 == b_pos.x + 34) ||  //E
            (snake_posb4.x + 1 == b_pos.x + 66) ||  //E
            (snake_posb4.x + 2 == b_pos.x + 2) ||  //E
            (snake_posb4.x + 2 == b_pos.x + 34) ||  //E
            (snake_posb4.x + 2 == b_pos.x + 66) ||  //E
            (snake_posb4.x == b_pos.x + 20) ||  //E
            (snake_posb4.x == b_pos.x + 50) ||  //E
            (snake_posb4.x == b_pos.x + 82) ||  //E
            (snake_posb4.x + 1 == b_pos.x + 20) ||  //E
            (snake_posb4.x + 1 == b_pos.x + 50) ||  //E
            (snake_posb4.x + 1 == b_pos.x + 82) ||  //E
            (snake_posb4.x + 2 == b_pos.x + 20) ||  //E
            (snake_posb4.x + 2 == b_pos.x + 50) ||  //E
            (snake_posb4.x + 2 == b_pos.x + 82)))&&(d != W)) //E
        ) {
        //add some code that it doesn't move
        speed = 0;
    }
    
    else if (
            ((((snake_posb5.y == b_pos.y) ||
            (snake_posb5.y == b_pos.y + 1) ||
            (snake_posb5.y == b_pos.y + 2) ||
            (snake_posb5.y == b_pos.y + 3) ||
            (snake_posb5.y == b_pos.y + 4) ||
            (snake_posb5.y == b_pos.y + 5) ||
            (snake_posb5.y == b_pos.y + 6) ||
            (snake_posb5.y == b_pos.y + 7) ||
            (snake_posb5.y == b_pos.y + 8) ||
            (snake_posb5.y == b_pos.y + 9) ||
            (snake_posb5.y == b_pos.y + 10) ||
            (snake_posb5.y + 1 == b_pos.y) ||
            (snake_posb5.y + 1 == b_pos.y + 1) ||
            (snake_posb5.y + 1 == b_pos.y + 2) ||
            (snake_posb5.y + 1 == b_pos.y + 3) ||
            (snake_posb5.y + 1 == b_pos.y + 4) ||
            (snake_posb5.y + 1 == b_pos.y + 5) ||
            (snake_posb5.y + 1 == b_pos.y + 6) ||
            (snake_posb5.y + 1 == b_pos.y + 7) ||
            (snake_posb5.y + 1 == b_pos.y + 8) ||
            (snake_posb5.y + 1 == b_pos.y + 9) ||
            (snake_posb5.y + 1 == b_pos.y + 10) ||
            (snake_posb5.y + 2 == b_pos.y) ||
            (snake_posb5.y + 2 == b_pos.y + 1) ||
            (snake_posb5.y + 2 == b_pos.y + 2) ||
            (snake_posb5.y + 2 == b_pos.y + 3) ||
            (snake_posb5.y + 2 == b_pos.y + 4) ||
            (snake_posb5.y + 2 == b_pos.y + 5) ||
            (snake_posb5.y + 2 == b_pos.y + 6) ||
            (snake_posb5.y + 2 == b_pos.y + 7) ||
            (snake_posb5.y + 2 == b_pos.y + 8) ||
            (snake_posb5.y + 2 == b_pos.y + 9) ||
            (snake_posb5.y + 2 == b_pos.y + 10)) &&
            ((snake_posb5.x == b_pos.x + 2) ||  //E
            (snake_posb5.x == b_pos.x + 34) ||  //E
            (snake_posb5.x == b_pos.x + 66) ||  //E
            (snake_posb5.x + 1 == b_pos.x + 2) ||  //E
            (snake_posb5.x + 1 == b_pos.x + 34) ||  //E
            (snake_posb5.x + 1 == b_pos.x + 66) ||  //E
            (snake_posb5.x + 2 == b_pos.x + 2) ||  //E
            (snake_posb5.x + 2 == b_pos.x + 34) ||  //E
            (snake_posb5.x + 2 == b_pos.x + 66) ||  //E
            (snake_posb5.x == b_pos.x + 20) ||  //E
            (snake_posb5.x == b_pos.x + 50) ||  //E
            (snake_posb5.x == b_pos.x + 82) ||  //E
            (snake_posb5.x + 1 == b_pos.x + 20) ||  //E
            (snake_posb5.x + 1 == b_pos.x + 50) ||  //E
            (snake_posb5.x + 1 == b_pos.x + 82) ||  //E
            (snake_posb5.x + 2 == b_pos.x + 20) ||  //E
            (snake_posb5.x + 2 == b_pos.x + 50) ||  //E
            (snake_posb5.x + 2 == b_pos.x + 82)))&&(d != W)) //E
        ) {
        //add some code that it doesn't move
        speed = 0;
    }
    
    else if (
            ((((snake_posb6.y == b_pos.y) ||
            (snake_posb6.y == b_pos.y + 1) ||
            (snake_posb6.y == b_pos.y + 2) ||
            (snake_posb6.y == b_pos.y + 3) ||
            (snake_posb6.y == b_pos.y + 4) ||
            (snake_posb6.y == b_pos.y + 5) ||
            (snake_posb6.y == b_pos.y + 6) ||
            (snake_posb6.y == b_pos.y + 7) ||
            (snake_posb6.y == b_pos.y + 8) ||
            (snake_posb6.y == b_pos.y + 9) ||
            (snake_posb6.y == b_pos.y + 10) ||
            (snake_posb6.y + 1 == b_pos.y) ||
            (snake_posb6.y + 1 == b_pos.y + 1) ||
            (snake_posb6.y + 1 == b_pos.y + 2) ||
            (snake_posb6.y + 1 == b_pos.y + 3) ||
            (snake_posb6.y + 1 == b_pos.y + 4) ||
            (snake_posb6.y + 1 == b_pos.y + 5) ||
            (snake_posb6.y + 1 == b_pos.y + 6) ||
            (snake_posb6.y + 1 == b_pos.y + 7) ||
            (snake_posb6.y + 1 == b_pos.y + 8) ||
            (snake_posb6.y + 1 == b_pos.y + 9) ||
            (snake_posb6.y + 1 == b_pos.y + 10) ||
            (snake_posb6.y + 2 == b_pos.y) ||
            (snake_posb6.y + 2 == b_pos.y + 1) ||
            (snake_posb6.y + 2 == b_pos.y + 2) ||
            (snake_posb6.y + 2 == b_pos.y + 3) ||
            (snake_posb6.y + 2 == b_pos.y + 4) ||
            (snake_posb6.y + 2 == b_pos.y + 5) ||
            (snake_posb6.y + 2 == b_pos.y + 6) ||
            (snake_posb6.y + 2 == b_pos.y + 7) ||
            (snake_posb6.y + 2 == b_pos.y + 8) ||
            (snake_posb6.y + 2 == b_pos.y + 9) ||
            (snake_posb6.y + 2 == b_pos.y + 10)) &&
            ((snake_posb6.x == b_pos.x + 2) ||  //E
            (snake_posb6.x == b_pos.x + 34) ||  //E
            (snake_posb6.x == b_pos.x + 66) ||  //E
            (snake_posb6.x + 1 == b_pos.x + 2) ||  //E
            (snake_posb6.x + 1 == b_pos.x + 34) ||  //E
            (snake_posb6.x + 1 == b_pos.x + 66) ||  //E
            (snake_posb6.x + 2 == b_pos.x + 2) ||  //E
            (snake_posb6.x + 2 == b_pos.x + 34) ||  //E
            (snake_posb6.x + 2 == b_pos.x + 66) ||  //E
            (snake_posb6.x == b_pos.x + 20) ||  //E
            (snake_posb6.x == b_pos.x + 50) ||  //E
            (snake_posb6.x == b_pos.x + 82) ||  //E
            (snake_posb6.x + 1 == b_pos.x + 20) ||  //E
            (snake_posb6.x + 1 == b_pos.x + 50) ||  //E
            (snake_posb6.x + 1 == b_pos.x + 82) ||  //E
            (snake_posb6.x + 2 == b_pos.x + 20) ||  //E
            (snake_posb6.x + 2 == b_pos.x + 50) ||  //E
            (snake_posb6.x + 2 == b_pos.x + 82)))&&(d != W)) //E
        ) {
        //add some code that it doesn't move
        speed = 0;
    }
    
    else if (
            ((((snake_posb7.y == b_pos.y) ||
            (snake_posb7.y == b_pos.y + 1) ||
            (snake_posb7.y == b_pos.y + 2) ||
            (snake_posb7.y == b_pos.y + 3) ||
            (snake_posb7.y == b_pos.y + 4) ||
            (snake_posb7.y == b_pos.y + 5) ||
            (snake_posb7.y == b_pos.y + 6) ||
            (snake_posb7.y == b_pos.y + 7) ||
            (snake_posb7.y == b_pos.y + 8) ||
            (snake_posb7.y == b_pos.y + 9) ||
            (snake_posb7.y == b_pos.y + 10) ||
            (snake_posb7.y + 1 == b_pos.y) ||
            (snake_posb7.y + 1 == b_pos.y + 1) ||
            (snake_posb7.y + 1 == b_pos.y + 2) ||
            (snake_posb7.y + 1 == b_pos.y + 3) ||
            (snake_posb7.y + 1 == b_pos.y + 4) ||
            (snake_posb7.y + 1 == b_pos.y + 5) ||
            (snake_posb7.y + 1 == b_pos.y + 6) ||
            (snake_posb7.y + 1 == b_pos.y + 7) ||
            (snake_posb7.y + 1 == b_pos.y + 8) ||
            (snake_posb7.y + 1 == b_pos.y + 9) ||
            (snake_posb7.y + 1 == b_pos.y + 10) ||
            (snake_posb7.y + 2 == b_pos.y) ||
            (snake_posb7.y + 2 == b_pos.y + 1) ||
            (snake_posb7.y + 2 == b_pos.y + 2) ||
            (snake_posb7.y + 2 == b_pos.y + 3) ||
            (snake_posb7.y + 2 == b_pos.y + 4) ||
            (snake_posb7.y + 2 == b_pos.y + 5) ||
            (snake_posb7.y + 2 == b_pos.y + 6) ||
            (snake_posb7.y + 2 == b_pos.y + 7) ||
            (snake_posb7.y + 2 == b_pos.y + 8) ||
            (snake_posb7.y + 2 == b_pos.y + 9) ||
            (snake_posb7.y + 2 == b_pos.y + 10)) &&
            ((snake_posb7.x == b_pos.x + 2) ||  //E
            (snake_posb7.x == b_pos.x + 34) ||  //E
            (snake_posb7.x == b_pos.x + 66) ||  //E
            (snake_posb7.x + 1 == b_pos.x + 2) ||  //E
            (snake_posb7.x + 1 == b_pos.x + 34) ||  //E
            (snake_posb7.x + 1 == b_pos.x + 66) ||  //E
            (snake_posb7.x + 2 == b_pos.x + 2) ||  //E
            (snake_posb7.x + 2 == b_pos.x + 34) ||  //E
            (snake_posb7.x + 2 == b_pos.x + 66) ||  //E
            (snake_posb7.x == b_pos.x + 20) ||  //E
            (snake_posb7.x == b_pos.x + 50) ||  //E
            (snake_posb7.x == b_pos.x + 82) ||  //E
            (snake_posb7.x + 1 == b_pos.x + 20) ||  //E
            (snake_posb7.x + 1 == b_pos.x + 50) ||  //E
            (snake_posb7.x + 1 == b_pos.x + 82) ||  //E
            (snake_posb7.x + 2 == b_pos.x + 20) ||  //E
            (snake_posb7.x + 2 == b_pos.x + 50) ||  //E
            (snake_posb7.x + 2 == b_pos.x + 82)))&&(d != W)) //E
        ) {
        //add some code that it doesn't move
        speed = 0;
    }
    
    else if (
            ((((snake_posb8.y == b_pos.y) ||
            (snake_posb8.y == b_pos.y + 1) ||
            (snake_posb8.y == b_pos.y + 2) ||
            (snake_posb8.y == b_pos.y + 3) ||
            (snake_posb8.y == b_pos.y + 4) ||
            (snake_posb8.y == b_pos.y + 5) ||
            (snake_posb8.y == b_pos.y + 6) ||
            (snake_posb8.y == b_pos.y + 7) ||
            (snake_posb8.y == b_pos.y + 8) ||
            (snake_posb8.y == b_pos.y + 9) ||
            (snake_posb8.y == b_pos.y + 10) ||
            (snake_posb8.y + 1 == b_pos.y) ||
            (snake_posb8.y + 1 == b_pos.y + 1) ||
            (snake_posb8.y + 1 == b_pos.y + 2) ||
            (snake_posb8.y + 1 == b_pos.y + 3) ||
            (snake_posb8.y + 1 == b_pos.y + 4) ||
            (snake_posb8.y + 1 == b_pos.y + 5) ||
            (snake_posb8.y + 1 == b_pos.y + 6) ||
            (snake_posb8.y + 1 == b_pos.y + 7) ||
            (snake_posb8.y + 1 == b_pos.y + 8) ||
            (snake_posb8.y + 1 == b_pos.y + 9) ||
            (snake_posb8.y + 1 == b_pos.y + 10) ||
            (snake_posb8.y + 2 == b_pos.y) ||
            (snake_posb8.y + 2 == b_pos.y + 1) ||
            (snake_posb8.y + 2 == b_pos.y + 2) ||
            (snake_posb8.y + 2 == b_pos.y + 3) ||
            (snake_posb8.y + 2 == b_pos.y + 4) ||
            (snake_posb8.y + 2 == b_pos.y + 5) ||
            (snake_posb8.y + 2 == b_pos.y + 6) ||
            (snake_posb8.y + 2 == b_pos.y + 7) ||
            (snake_posb8.y + 2 == b_pos.y + 8) ||
            (snake_posb8.y + 2 == b_pos.y + 9) ||
            (snake_posb8.y + 2 == b_pos.y + 10)) &&
            ((snake_posb8.x == b_pos.x + 2) ||  //E
            (snake_posb8.x == b_pos.x + 34) ||  //E
            (snake_posb8.x == b_pos.x + 66) ||  //E
            (snake_posb8.x + 1 == b_pos.x + 2) ||  //E
            (snake_posb8.x + 1 == b_pos.x + 34) ||  //E
            (snake_posb8.x + 1 == b_pos.x + 66) ||  //E
            (snake_posb8.x + 2 == b_pos.x + 2) ||  //E
            (snake_posb8.x + 2 == b_pos.x + 34) ||  //E
            (snake_posb8.x + 2 == b_pos.x + 66) ||  //E
            (snake_posb8.x == b_pos.x + 20) ||  //E
            (snake_posb8.x == b_pos.x + 50) ||  //E
            (snake_posb8.x == b_pos.x + 82) ||  //E
            (snake_posb8.x + 1 == b_pos.x + 20) ||  //E
            (snake_posb8.x + 1 == b_pos.x + 50) ||  //E
            (snake_posb8.x + 1 == b_pos.x + 82) ||  //E
            (snake_posb8.x + 2 == b_pos.x + 20) ||  //E
            (snake_posb8.x + 2 == b_pos.x + 50) ||  //E
            (snake_posb8.x + 2 == b_pos.x + 82)))&&(d != W)) //E
        ) {
        //add some code that it doesn't move
        speed = 0;
    }
    
    else if (
            ((((snake_posb9.y == b_pos.y) ||
            (snake_posb9.y == b_pos.y + 1) ||
            (snake_posb9.y == b_pos.y + 2) ||
            (snake_posb9.y == b_pos.y + 3) ||
            (snake_posb9.y == b_pos.y + 4) ||
            (snake_posb9.y == b_pos.y + 5) ||
            (snake_posb9.y == b_pos.y + 6) ||
            (snake_posb9.y == b_pos.y + 7) ||
            (snake_posb9.y == b_pos.y + 8) ||
            (snake_posb9.y == b_pos.y + 9) ||
            (snake_posb9.y == b_pos.y + 10) ||
            (snake_posb9.y + 1 == b_pos.y) ||
            (snake_posb9.y + 1 == b_pos.y + 1) ||
            (snake_posb9.y + 1 == b_pos.y + 2) ||
            (snake_posb9.y + 1 == b_pos.y + 3) ||
            (snake_posb9.y + 1 == b_pos.y + 4) ||
            (snake_posb9.y + 1 == b_pos.y + 5) ||
            (snake_posb9.y + 1 == b_pos.y + 6) ||
            (snake_posb9.y + 1 == b_pos.y + 7) ||
            (snake_posb9.y + 1 == b_pos.y + 8) ||
            (snake_posb9.y + 1 == b_pos.y + 9) ||
            (snake_posb9.y + 1 == b_pos.y + 10) ||
            (snake_posb9.y + 2 == b_pos.y) ||
            (snake_posb9.y + 2 == b_pos.y + 1) ||
            (snake_posb9.y + 2 == b_pos.y + 2) ||
            (snake_posb9.y + 2 == b_pos.y + 3) ||
            (snake_posb9.y + 2 == b_pos.y + 4) ||
            (snake_posb9.y + 2 == b_pos.y + 5) ||
            (snake_posb9.y + 2 == b_pos.y + 6) ||
            (snake_posb9.y + 2 == b_pos.y + 7) ||
            (snake_posb9.y + 2 == b_pos.y + 8) ||
            (snake_posb9.y + 2 == b_pos.y + 9) ||
            (snake_posb9.y + 2 == b_pos.y + 10)) &&
            ((snake_posb9.x == b_pos.x + 2) ||  //E
            (snake_posb9.x == b_pos.x + 34) ||  //E
            (snake_posb9.x == b_pos.x + 66) ||  //E
            (snake_posb9.x + 1 == b_pos.x + 2) ||  //E
            (snake_posb9.x + 1 == b_pos.x + 34) ||  //E
            (snake_posb9.x + 1 == b_pos.x + 66) ||  //E
            (snake_posb9.x + 2 == b_pos.x + 2) ||  //E
            (snake_posb9.x + 2 == b_pos.x + 34) ||  //E
            (snake_posb9.x + 2 == b_pos.x + 66) ||  //E
            (snake_posb9.x == b_pos.x + 20) ||  //E
            (snake_posb9.x == b_pos.x + 50) ||  //E
            (snake_posb9.x == b_pos.x + 82) ||  //E
            (snake_posb9.x + 1 == b_pos.x + 20) ||  //E
            (snake_posb9.x + 1 == b_pos.x + 50) ||  //E
            (snake_posb9.x + 1 == b_pos.x + 82) ||  //E
            (snake_posb9.x + 2 == b_pos.x + 20) ||  //E
            (snake_posb9.x + 2 == b_pos.x + 50) ||  //E
            (snake_posb9.x + 2 == b_pos.x + 82)))&&(d != W)) //E
        ) {
        //add some code that it doesn't move
        speed = 0;
    }
    
    else if (
            ((((snake_posb10.y == b_pos.y) ||
            (snake_posb10.y == b_pos.y + 1) ||
            (snake_posb10.y == b_pos.y + 2) ||
            (snake_posb10.y == b_pos.y + 3) ||
            (snake_posb10.y == b_pos.y + 4) ||
            (snake_posb10.y == b_pos.y + 5) ||
            (snake_posb10.y == b_pos.y + 6) ||
            (snake_posb10.y == b_pos.y + 7) ||
            (snake_posb10.y == b_pos.y + 8) ||
            (snake_posb10.y == b_pos.y + 9) ||
            (snake_posb10.y == b_pos.y + 10) ||
            (snake_posb10.y + 1 == b_pos.y) ||
            (snake_posb10.y + 1 == b_pos.y + 1) ||
            (snake_posb10.y + 1 == b_pos.y + 2) ||
            (snake_posb10.y + 1 == b_pos.y + 3) ||
            (snake_posb10.y + 1 == b_pos.y + 4) ||
            (snake_posb10.y + 1 == b_pos.y + 5) ||
            (snake_posb10.y + 1 == b_pos.y + 6) ||
            (snake_posb10.y + 1 == b_pos.y + 7) ||
            (snake_posb10.y + 1 == b_pos.y + 8) ||
            (snake_posb10.y + 1 == b_pos.y + 9) ||
            (snake_posb10.y + 1 == b_pos.y + 10) ||
            (snake_posb10.y + 2 == b_pos.y) ||
            (snake_posb10.y + 2 == b_pos.y + 1) ||
            (snake_posb10.y + 2 == b_pos.y + 2) ||
            (snake_posb10.y + 2 == b_pos.y + 3) ||
            (snake_posb10.y + 2 == b_pos.y + 4) ||
            (snake_posb10.y + 2 == b_pos.y + 5) ||
            (snake_posb10.y + 2 == b_pos.y + 6) ||
            (snake_posb10.y + 2 == b_pos.y + 7) ||
            (snake_posb10.y + 2 == b_pos.y + 8) ||
            (snake_posb10.y + 2 == b_pos.y + 9) ||
            (snake_posb10.y + 2 == b_pos.y + 10)) &&
            ((snake_posb10.x == b_pos.x + 2) ||  //E
            (snake_posb10.x == b_pos.x + 34) ||  //E
            (snake_posb10.x == b_pos.x + 66) ||  //E
            (snake_posb10.x + 1 == b_pos.x + 2) ||  //E
            (snake_posb10.x + 1 == b_pos.x + 34) ||  //E
            (snake_posb10.x + 1 == b_pos.x + 66) ||  //E
            (snake_posb10.x + 2 == b_pos.x + 2) ||  //E
            (snake_posb10.x + 2 == b_pos.x + 34) ||  //E
            (snake_posb10.x + 2 == b_pos.x + 66) ||  //E
            (snake_posb10.x == b_pos.x + 20) ||  //E
            (snake_posb10.x == b_pos.x + 50) ||  //E
            (snake_posb10.x == b_pos.x + 82) ||  //E
            (snake_posb10.x + 1 == b_pos.x + 20) ||  //E
            (snake_posb10.x + 1 == b_pos.x + 50) ||  //E
            (snake_posb10.x + 1 == b_pos.x + 82) ||  //E
            (snake_posb10.x + 2 == b_pos.x + 20) ||  //E
            (snake_posb10.x + 2 == b_pos.x + 50) ||  //E
            (snake_posb10.x + 2 == b_pos.x + 82)))&&(d != W)) //E
        ) {
        //add some code that it doesn't move
        speed = 0;
    }
    
    else if (
            ((((snake_posb11.y == b_pos.y) ||
            (snake_posb11.y == b_pos.y + 1) ||
            (snake_posb11.y == b_pos.y + 2) ||
            (snake_posb11.y == b_pos.y + 3) ||
            (snake_posb11.y == b_pos.y + 4) ||
            (snake_posb11.y == b_pos.y + 5) ||
            (snake_posb11.y == b_pos.y + 6) ||
            (snake_posb11.y == b_pos.y + 7) ||
            (snake_posb11.y == b_pos.y + 8) ||
            (snake_posb11.y == b_pos.y + 9) ||
            (snake_posb11.y == b_pos.y + 10) ||
            (snake_posb11.y + 1 == b_pos.y) ||
            (snake_posb11.y + 1 == b_pos.y + 1) ||
            (snake_posb11.y + 1 == b_pos.y + 2) ||
            (snake_posb11.y + 1 == b_pos.y + 3) ||
            (snake_posb11.y + 1 == b_pos.y + 4) ||
            (snake_posb11.y + 1 == b_pos.y + 5) ||
            (snake_posb11.y + 1 == b_pos.y + 6) ||
            (snake_posb11.y + 1 == b_pos.y + 7) ||
            (snake_posb11.y + 1 == b_pos.y + 8) ||
            (snake_posb11.y + 1 == b_pos.y + 9) ||
            (snake_posb11.y + 1 == b_pos.y + 10) ||
            (snake_posb11.y + 2 == b_pos.y) ||
            (snake_posb11.y + 2 == b_pos.y + 1) ||
            (snake_posb11.y + 2 == b_pos.y + 2) ||
            (snake_posb11.y + 2 == b_pos.y + 3) ||
            (snake_posb11.y + 2 == b_pos.y + 4) ||
            (snake_posb11.y + 2 == b_pos.y + 5) ||
            (snake_posb11.y + 2 == b_pos.y + 6) ||
            (snake_posb11.y + 2 == b_pos.y + 7) ||
            (snake_posb11.y + 2 == b_pos.y + 8) ||
            (snake_posb11.y + 2 == b_pos.y + 9) ||
            (snake_posb11.y + 2 == b_pos.y + 10)) &&
            ((snake_posb11.x == b_pos.x + 2) ||  //E
            (snake_posb11.x == b_pos.x + 34) ||  //E
            (snake_posb11.x == b_pos.x + 66) ||  //E
            (snake_posb11.x + 1 == b_pos.x + 2) ||  //E
            (snake_posb11.x + 1 == b_pos.x + 34) ||  //E
            (snake_posb11.x + 1 == b_pos.x + 66) ||  //E
            (snake_posb11.x + 2 == b_pos.x + 2) ||  //E
            (snake_posb11.x + 2 == b_pos.x + 34) ||  //E
            (snake_posb11.x + 2 == b_pos.x + 66) ||  //E
            (snake_posb11.x == b_pos.x + 20) ||  //E
            (snake_posb11.x == b_pos.x + 50) ||  //E
            (snake_posb11.x == b_pos.x + 82) ||  //E
            (snake_posb11.x + 1 == b_pos.x + 20) ||  //E
            (snake_posb11.x + 1 == b_pos.x + 50) ||  //E
            (snake_posb11.x + 1 == b_pos.x + 82) ||  //E
            (snake_posb11.x + 2 == b_pos.x + 20) ||  //E
            (snake_posb11.x + 2 == b_pos.x + 50) ||  //E
            (snake_posb11.x + 2 == b_pos.x + 82)))&&(d != W)) //E
        ) {
        //add some code that it doesn't move
        speed = 0;
    }
    
    else if (
            ((((snake_posb12.y == b_pos.y) ||
            (snake_posb12.y == b_pos.y + 1) ||
            (snake_posb12.y == b_pos.y + 2) ||
            (snake_posb12.y == b_pos.y + 3) ||
            (snake_posb12.y == b_pos.y + 4) ||
            (snake_posb12.y == b_pos.y + 5) ||
            (snake_posb12.y == b_pos.y + 6) ||
            (snake_posb12.y == b_pos.y + 7) ||
            (snake_posb12.y == b_pos.y + 8) ||
            (snake_posb12.y == b_pos.y + 9) ||
            (snake_posb12.y == b_pos.y + 10) ||
            (snake_posb12.y + 1 == b_pos.y) ||
            (snake_posb12.y + 1 == b_pos.y + 1) ||
            (snake_posb12.y + 1 == b_pos.y + 2) ||
            (snake_posb12.y + 1 == b_pos.y + 3) ||
            (snake_posb12.y + 1 == b_pos.y + 4) ||
            (snake_posb12.y + 1 == b_pos.y + 5) ||
            (snake_posb12.y + 1 == b_pos.y + 6) ||
            (snake_posb12.y + 1 == b_pos.y + 7) ||
            (snake_posb12.y + 1 == b_pos.y + 8) ||
            (snake_posb12.y + 1 == b_pos.y + 9) ||
            (snake_posb12.y + 1 == b_pos.y + 10) ||
            (snake_posb12.y + 2 == b_pos.y) ||
            (snake_posb12.y + 2 == b_pos.y + 1) ||
            (snake_posb12.y + 2 == b_pos.y + 2) ||
            (snake_posb12.y + 2 == b_pos.y + 3) ||
            (snake_posb12.y + 2 == b_pos.y + 4) ||
            (snake_posb12.y + 2 == b_pos.y + 5) ||
            (snake_posb12.y + 2 == b_pos.y + 6) ||
            (snake_posb12.y + 2 == b_pos.y + 7) ||
            (snake_posb12.y + 2 == b_pos.y + 8) ||
            (snake_posb12.y + 2 == b_pos.y + 9) ||
            (snake_posb12.y + 2 == b_pos.y + 10)) &&
            ((snake_posb12.x == b_pos.x + 2) ||  //E
            (snake_posb12.x == b_pos.x + 34) ||  //E
            (snake_posb12.x == b_pos.x + 66) ||  //E
            (snake_posb12.x + 1 == b_pos.x + 2) ||  //E
            (snake_posb12.x + 1 == b_pos.x + 34) ||  //E
            (snake_posb12.x + 1 == b_pos.x + 66) ||  //E
            (snake_posb12.x + 2 == b_pos.x + 2) ||  //E
            (snake_posb12.x + 2 == b_pos.x + 34) ||  //E
            (snake_posb12.x + 2 == b_pos.x + 66) ||  //E
            (snake_posb12.x == b_pos.x + 20) ||  //E
            (snake_posb12.x == b_pos.x + 50) ||  //E
            (snake_posb12.x == b_pos.x + 82) ||  //E
            (snake_posb12.x + 1 == b_pos.x + 20) ||  //E
            (snake_posb12.x + 1 == b_pos.x + 50) ||  //E
            (snake_posb12.x + 1 == b_pos.x + 82) ||  //E
            (snake_posb12.x + 2 == b_pos.x + 20) ||  //E
            (snake_posb12.x + 2 == b_pos.x + 50) ||  //E
            (snake_posb12.x + 2 == b_pos.x + 82)))&&(d != W)) //E
        ) {
        //add some code that it doesn't move
        speed = 0;
    }
    
    else if (
            ((((snake_posb13.y == b_pos.y) ||
            (snake_posb13.y == b_pos.y + 1) ||
            (snake_posb13.y == b_pos.y + 2) ||
            (snake_posb13.y == b_pos.y + 3) ||
            (snake_posb13.y == b_pos.y + 4) ||
            (snake_posb13.y == b_pos.y + 5) ||
            (snake_posb13.y == b_pos.y + 6) ||
            (snake_posb13.y == b_pos.y + 7) ||
            (snake_posb13.y == b_pos.y + 8) ||
            (snake_posb13.y == b_pos.y + 9) ||
            (snake_posb13.y == b_pos.y + 10) ||
            (snake_posb13.y + 1 == b_pos.y) ||
            (snake_posb13.y + 1 == b_pos.y + 1) ||
            (snake_posb13.y + 1 == b_pos.y + 2) ||
            (snake_posb13.y + 1 == b_pos.y + 3) ||
            (snake_posb13.y + 1 == b_pos.y + 4) ||
            (snake_posb13.y + 1 == b_pos.y + 5) ||
            (snake_posb13.y + 1 == b_pos.y + 6) ||
            (snake_posb13.y + 1 == b_pos.y + 7) ||
            (snake_posb13.y + 1 == b_pos.y + 8) ||
            (snake_posb13.y + 1 == b_pos.y + 9) ||
            (snake_posb13.y + 1 == b_pos.y + 10) ||
            (snake_posb13.y + 2 == b_pos.y) ||
            (snake_posb13.y + 2 == b_pos.y + 1) ||
            (snake_posb13.y + 2 == b_pos.y + 2) ||
            (snake_posb13.y + 2 == b_pos.y + 3) ||
            (snake_posb13.y + 2 == b_pos.y + 4) ||
            (snake_posb13.y + 2 == b_pos.y + 5) ||
            (snake_posb13.y + 2 == b_pos.y + 6) ||
            (snake_posb13.y + 2 == b_pos.y + 7) ||
            (snake_posb13.y + 2 == b_pos.y + 8) ||
            (snake_posb13.y + 2 == b_pos.y + 9) ||
            (snake_posb13.y + 2 == b_pos.y + 10)) &&
            ((snake_posb13.x == b_pos.x + 2) ||  //E
            (snake_posb13.x == b_pos.x + 34) ||  //E
            (snake_posb13.x == b_pos.x + 66) ||  //E
            (snake_posb13.x + 1 == b_pos.x + 2) ||  //E
            (snake_posb13.x + 1 == b_pos.x + 34) ||  //E
            (snake_posb13.x + 1 == b_pos.x + 66) ||  //E
            (snake_posb13.x + 2 == b_pos.x + 2) ||  //E
            (snake_posb13.x + 2 == b_pos.x + 34) ||  //E
            (snake_posb13.x + 2 == b_pos.x + 66) ||  //E
            (snake_posb13.x == b_pos.x + 20) ||  //E
            (snake_posb13.x == b_pos.x + 50) ||  //E
            (snake_posb13.x == b_pos.x + 82) ||  //E
            (snake_posb13.x + 1 == b_pos.x + 20) ||  //E
            (snake_posb13.x + 1 == b_pos.x + 50) ||  //E
            (snake_posb13.x + 1 == b_pos.x + 82) ||  //E
            (snake_posb13.x + 2 == b_pos.x + 20) ||  //E
            (snake_posb13.x + 2 == b_pos.x + 50) ||  //E
            (snake_posb13.x + 2 == b_pos.x + 82)))&&(d != W)) //E
        ) {
        //add some code that it doesn't move
        speed = 0;
    }
    
    else if (
            ((((snake_posb14.y == b_pos.y) ||
            (snake_posb14.y == b_pos.y + 1) ||
            (snake_posb14.y == b_pos.y + 2) ||
            (snake_posb14.y == b_pos.y + 3) ||
            (snake_posb14.y == b_pos.y + 4) ||
            (snake_posb14.y == b_pos.y + 5) ||
            (snake_posb14.y == b_pos.y + 6) ||
            (snake_posb14.y == b_pos.y + 7) ||
            (snake_posb14.y == b_pos.y + 8) ||
            (snake_posb14.y == b_pos.y + 9) ||
            (snake_posb14.y == b_pos.y + 10) ||
            (snake_posb14.y + 1 == b_pos.y) ||
            (snake_posb14.y + 1 == b_pos.y + 1) ||
            (snake_posb14.y + 1 == b_pos.y + 2) ||
            (snake_posb14.y + 1 == b_pos.y + 3) ||
            (snake_posb14.y + 1 == b_pos.y + 4) ||
            (snake_posb14.y + 1 == b_pos.y + 5) ||
            (snake_posb14.y + 1 == b_pos.y + 6) ||
            (snake_posb14.y + 1 == b_pos.y + 7) ||
            (snake_posb14.y + 1 == b_pos.y + 8) ||
            (snake_posb14.y + 1 == b_pos.y + 9) ||
            (snake_posb14.y + 1 == b_pos.y + 10) ||
            (snake_posb14.y + 2 == b_pos.y) ||
            (snake_posb14.y + 2 == b_pos.y + 1) ||
            (snake_posb14.y + 2 == b_pos.y + 2) ||
            (snake_posb14.y + 2 == b_pos.y + 3) ||
            (snake_posb14.y + 2 == b_pos.y + 4) ||
            (snake_posb14.y + 2 == b_pos.y + 5) ||
            (snake_posb14.y + 2 == b_pos.y + 6) ||
            (snake_posb14.y + 2 == b_pos.y + 7) ||
            (snake_posb14.y + 2 == b_pos.y + 8) ||
            (snake_posb14.y + 2 == b_pos.y + 9) ||
            (snake_posb14.y + 2 == b_pos.y + 10)) &&
            ((snake_posb14.x == b_pos.x + 2) ||  //E
            (snake_posb14.x == b_pos.x + 34) ||  //E
            (snake_posb14.x == b_pos.x + 66) ||  //E
            (snake_posb14.x + 1 == b_pos.x + 2) ||  //E
            (snake_posb14.x + 1 == b_pos.x + 34) ||  //E
            (snake_posb14.x + 1 == b_pos.x + 66) ||  //E
            (snake_posb14.x + 2 == b_pos.x + 2) ||  //E
            (snake_posb14.x + 2 == b_pos.x + 34) ||  //E
            (snake_posb14.x + 2 == b_pos.x + 66) ||  //E
            (snake_posb14.x == b_pos.x + 20) ||  //E
            (snake_posb14.x == b_pos.x + 50) ||  //E
            (snake_posb14.x == b_pos.x + 82) ||  //E
            (snake_posb14.x + 1 == b_pos.x + 20) ||  //E
            (snake_posb14.x + 1 == b_pos.x + 50) ||  //E
            (snake_posb14.x + 1 == b_pos.x + 82) ||  //E
            (snake_posb14.x + 2 == b_pos.x + 20) ||  //E
            (snake_posb14.x + 2 == b_pos.x + 50) ||  //E
            (snake_posb14.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))