Snake vs Block Game to be run upon K64F.

Dependencies:   mbed

Snake/Snake.cpp

Committer:
AhmedPlaymaker
Date:
2019-04-10
Revision:
22:ee698f66146f
Parent:
21:e41126528cc6
Child:
24:1c118b071430

File content as of revision 22:ee698f66146f:

#include "Snake.h"

Snake::Snake()
{

}

Snake::~Snake()
{

}

//The Snake Sprite.
int snake_sprite[3][3] = {
    {0,1,0},
    {1,0,1},
    {0,1,0},
};
    
int m = 0; //Variable used to allow a starting location for the player.
    

void Snake::init()
{

    _speed = 1;// change this according to the options selected
    
}


int Snake::draw(Gamepad &pad, N5110 &lcd, int length, int level)
{   
    if(m == 0){
        _x[0] = WIDTH/2;  //Spawns player sprite near the middle of the screen.
        _y[0] = HEIGHT - 3; 
        
        for(int i=0; i<=13; i++)  {
            _x[i+1] = _x[i];
            _y[i+1] = _y[i] - 3;
            b[i] = 1;
        }
        b[14] = 1; 
        m = m+1;  
    }
    //printf("SPRITE %d %d \n", _x[0], _y[0]); 
    if(length == 0)  {
        while ((pad.check_event(Gamepad::BACK_PRESSED) == false)) {
            lcd.clear();
            lcd.printString("Game",33,1);
            lcd.printString("Over",33,3);
            lcd.printString("Press Back",14,5); //Function used to promt the user to Restart.
            lcd.refresh();
            wait(0.1);
       }
        NVIC_SystemReset(); //Software Reset. //change this condition to loosing screen.
    }
    else if(length == 1)  {
    lcd.drawSprite(_x[0],_y[0],3,3,(int *)snake_sprite); //Function used to draw the sprite.
    }
    else if(length == 2)  {
    lcd.drawSprite(_x[0],_y[0],3,3,(int *)snake_sprite); //Function used to draw the sprite.
    lcd.drawSprite(_x[1],_y[1],3,3,(int *)snake_sprite);
    }
    else if(length == 3)  {
    lcd.drawSprite(_x[0],_y[0],3,3,(int *)snake_sprite); //Function used to draw the sprite.
    lcd.drawSprite(_x[1],_y[1],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[2],_y[2],3,3,(int *)snake_sprite);
    }
    else if(length == 4)  {
    lcd.drawSprite(_x[0],_y[0],3,3,(int *)snake_sprite); //Function used to draw the sprite.
    lcd.drawSprite(_x[1],_y[1],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[2],_y[2],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[3],_y[3],3,3,(int *)snake_sprite);
    }
    else if(length == 5)  {
    lcd.drawSprite(_x[0],_y[0],3,3,(int *)snake_sprite); //Function used to draw the sprite.
    lcd.drawSprite(_x[1],_y[1],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[2],_y[2],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[3],_y[3],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[4],_y[4],3,3,(int *)snake_sprite);
    }
    else if(length == 6)  {
    lcd.drawSprite(_x[0],_y[0],3,3,(int *)snake_sprite); //Function used to draw the sprite.
    lcd.drawSprite(_x[1],_y[1],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[2],_y[2],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[3],_y[3],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[4],_y[4],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[5],_y[5],3,3,(int *)snake_sprite);
    }
    else if(length == 7)  {
    lcd.drawSprite(_x[0],_y[0],3,3,(int *)snake_sprite); //Function used to draw the sprite.
    lcd.drawSprite(_x[1],_y[1],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[2],_y[2],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[3],_y[3],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[4],_y[4],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[5],_y[5],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[6],_y[6],3,3,(int *)snake_sprite);
    }
    else if(length == 8)  {
    lcd.drawSprite(_x[0],_y[0],3,3,(int *)snake_sprite); //Function used to draw the sprite.
    lcd.drawSprite(_x[1],_y[1],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[2],_y[2],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[3],_y[3],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[4],_y[4],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[5],_y[5],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[6],_y[6],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[7],_y[7],3,3,(int *)snake_sprite);
    }
    else if(length == 9)  {
    lcd.drawSprite(_x[0],_y[0],3,3,(int *)snake_sprite); //Function used to draw the sprite.
    lcd.drawSprite(_x[1],_y[1],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[2],_y[2],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[3],_y[3],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[4],_y[4],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[5],_y[5],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[6],_y[6],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[7],_y[7],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[8],_y[8],3,3,(int *)snake_sprite);
    }
    else if(length == 10)  {
    lcd.drawSprite(_x[0],_y[0],3,3,(int *)snake_sprite); //Function used to draw the sprite.
    lcd.drawSprite(_x[1],_y[1],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[2],_y[2],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[3],_y[3],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[4],_y[4],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[5],_y[5],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[6],_y[6],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[7],_y[7],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[8],_y[8],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[9],_y[9],3,3,(int *)snake_sprite);
    }
    else if(length == 11)  {
    lcd.drawSprite(_x[0],_y[0],3,3,(int *)snake_sprite); //Function used to draw the sprite.
    lcd.drawSprite(_x[1],_y[1],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[2],_y[2],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[3],_y[3],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[4],_y[4],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[5],_y[5],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[6],_y[6],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[7],_y[7],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[8],_y[8],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[9],_y[9],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[10],_y[10],3,3,(int *)snake_sprite);
    }
    else if(length == 12)  {
    lcd.drawSprite(_x[0],_y[0],3,3,(int *)snake_sprite); //Function used to draw the sprite.
    lcd.drawSprite(_x[1],_y[1],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[2],_y[2],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[3],_y[3],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[4],_y[4],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[5],_y[5],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[6],_y[6],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[7],_y[7],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[8],_y[8],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[9],_y[9],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[10],_y[10],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[11],_y[11],3,3,(int *)snake_sprite);
    }
    else if(length == 13)  {
    lcd.drawSprite(_x[0],_y[0],3,3,(int *)snake_sprite); //Function used to draw the sprite.
    lcd.drawSprite(_x[1],_y[1],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[2],_y[2],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[3],_y[3],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[4],_y[4],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[5],_y[5],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[6],_y[6],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[7],_y[7],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[8],_y[8],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[9],_y[9],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[10],_y[10],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[11],_y[11],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[12],_y[12],3,3,(int *)snake_sprite);
    }
    else if(length == 14)  {
    lcd.drawSprite(_x[0],_y[0],3,3,(int *)snake_sprite); //Function used to draw the sprite.
    lcd.drawSprite(_x[1],_y[1],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[2],_y[2],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[3],_y[3],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[4],_y[4],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[5],_y[5],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[6],_y[6],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[7],_y[7],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[8],_y[8],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[9],_y[9],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[10],_y[10],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[11],_y[11],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[12],_y[12],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[13],_y[13],3,3,(int *)snake_sprite);
    }
    else if(length == 15)  {
    lcd.drawSprite(_x[0],_y[0],3,3,(int *)snake_sprite); //Function used to draw the sprite.
    lcd.drawSprite(_x[1],_y[1],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[2],_y[2],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[3],_y[3],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[4],_y[4],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[5],_y[5],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[6],_y[6],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[7],_y[7],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[8],_y[8],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[9],_y[9],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[10],_y[10],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[11],_y[11],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[12],_y[12],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[13],_y[13],3,3,(int *)snake_sprite);
    lcd.drawSprite(_x[14],_y[14],3,3,(int *)snake_sprite);
    }
    else if(length > 15)  {
        lcd.clear();
        lcd.printString("Level Complete",0,1);
        lcd.refresh();
        wait(2);
        lcd.clear();
        lcd.printString("Press Start",10,1);
        lcd.printString("to Proceed",12,3);
        lcd.refresh();
        int sound = 1000; //helps to set max freq for random sound
        while ( pad.check_event(Gamepad::START_PRESSED) == false) {
            pad.leds_on();
            pad.tone(rand()%sound,0.1);
            wait(0.1);
            pad.leds_off();
            wait(0.1);
        }
        lcd.clear();
        char bufferlevel[14];
        sprintf(bufferlevel,"%d",level);
        lcd.printString("Level:",25,1);
        lcd.printString(bufferlevel,40,3);
        lcd.refresh();
        wait(2);
        length = 3;
    }
    return length;
}

Vector2D Snake::get_pos(int length)
{
    if(length == 1)  {
        Vector2D snakepos = {_x[0],_y[0]}; //Obtains the snake position.
        return snakepos;
    }
    else if(length == 2)  {
        Vector2D snakepos = {_x[1],_y[1]}; //Obtains the snake position.
        return snakepos;
    }
    else if(length==3)  {
        Vector2D snakepos = {_x[2],_y[2]}; //Obtains the snake position.
        return snakepos;
    }
    else if(length==4)  {
        Vector2D snakepos = {_x[3],_y[3]}; //Obtains the snake position.
        return snakepos;
    }
    else if(length==5)  {
        Vector2D snakepos = {_x[4],_y[4]}; //Obtains the snake position.
        return snakepos;
    }
    else if(length==6)  {
        Vector2D snakepos = {_x[5],_y[5]}; //Obtains the snake position.
        return snakepos;
    }
    else if(length==7)  {
        Vector2D snakepos = {_x[6],_y[6]}; //Obtains the snake position.
        return snakepos;
    }
    else if(length==8)  {
        Vector2D snakepos = {_x[7],_y[7]}; //Obtains the snake position.
        return snakepos;
    }
    else if(length==9)  {
        Vector2D snakepos = {_x[8],_y[8]}; //Obtains the snake position.
        return snakepos;
    }
    else if(length==10)  {
        Vector2D snakepos = {_x[9],_y[9]}; //Obtains the snake position.
        return snakepos;
    }
    else if(length==11)  {
        Vector2D snakepos = {_x[10],_y[10]}; //Obtains the snake position.
        return snakepos;
    }
    else if(length==12)  {
        Vector2D snakepos = {_x[11],_y[11]}; //Obtains the snake position.
        return snakepos;
    }
    else if(length==13)  {
        Vector2D snakepos = {_x[12],_y[12]}; //Obtains the snake position.
        return snakepos;
    }
    else if(length == 14)  {
        Vector2D snakepos = {_x[13],_y[13]}; //Obtains the snake position.
        return snakepos;
    }
    else if(length==15)  {
        Vector2D snakepos = {_x[14],_y[14]}; //Obtains the snake position.
        return snakepos;
    }
    //printf("snakepos from player = %f %f \n", snakepos.x, snakepos.y);
    else  {
        Vector2D snakepos = {-20,-20}; //Obtains the snake position.
        return snakepos;
    }
}

Vector2D Snake::get_pos_before1(int length)  //this sends data of following sprites.
{
    if(length == 2)  {
        Vector2D snakepos_b1 = {_x[0],_y[0]}; //Obtains the snake position.
        return snakepos_b1;
    }
    else if(length==3)  {
        Vector2D snakepos_b1 = {_x[1],_y[1]}; //Obtains the snake position.
        return snakepos_b1;
    }
    else if(length==4)  {
        Vector2D snakepos_b1 = {_x[2],_y[2]}; //Obtains the snake position.
        return snakepos_b1;
    }
    else if(length==5)  {
        Vector2D snakepos_b1 = {_x[3],_y[3]}; //Obtains the snake position.
        return snakepos_b1;
    }
    else if(length==6)  {
        Vector2D snakepos_b1 = {_x[4],_y[4]}; //Obtains the snake position.
        return snakepos_b1;
    }
    else if(length==7)  {
        Vector2D snakepos_b1 = {_x[5],_y[5]}; //Obtains the snake position.
        return snakepos_b1;
    }
    else if(length==8)  {
        Vector2D snakepos_b1 = {_x[6],_y[6]}; //Obtains the snake position.
        return snakepos_b1;
    }
    else if(length==9)  {
        Vector2D snakepos_b1 = {_x[7],_y[7]}; //Obtains the snake position.
        return snakepos_b1;
    }
    else if(length==10)  {
        Vector2D snakepos_b1 = {_x[8],_y[8]}; //Obtains the snake position.
        return snakepos_b1;
    }
    else if(length==11)  {
        Vector2D snakepos_b1 = {_x[9],_y[9]}; //Obtains the snake position.
        return snakepos_b1;
    }
    else if(length==12)  {
        Vector2D snakepos_b1 = {_x[10],_y[10]}; //Obtains the snake position.
        return snakepos_b1;
    }
    else if(length==13)  {
        Vector2D snakepos_b1 = {_x[11],_y[11]}; //Obtains the snake position.
        return snakepos_b1;
    }
    else if(length == 14)  {
        Vector2D snakepos_b1 = {_x[12],_y[12]}; //Obtains the snake position.
        return snakepos_b1;
    }
    else if(length==15)  {
        Vector2D snakepos_b1 = {_x[13],_y[13]}; //Obtains the snake position.
        return snakepos_b1;
    }
    //printf("snakepos from player = %f %f \n", snakepos.x, snakepos.y);
    else  {
        Vector2D snakepos_b1 = {-20,-20}; //Obtains the snake position.
        return snakepos_b1;
    }
}

Vector2D Snake::get_pos_before2(int length)  //this sends data of following sprites.
{
    if(length == 3)  {
        Vector2D snakepos_b2 = {_x[0],_y[0]}; //Obtains the snake position.
        return snakepos_b2;
    }
    else if(length==4)  {
        Vector2D snakepos_b2 = {_x[1],_y[1]}; //Obtains the snake position.
        return snakepos_b2;
    }
    else if(length==5)  {
        Vector2D snakepos_b2 = {_x[2],_y[2]}; //Obtains the snake position.
        return snakepos_b2;
    }
    else if(length==6)  {
        Vector2D snakepos_b2 = {_x[3],_y[3]}; //Obtains the snake position.
        return snakepos_b2;
    }
    else if(length==7)  {
        Vector2D snakepos_b2 = {_x[4],_y[4]}; //Obtains the snake position.
        return snakepos_b2;
    }
    else if(length==8)  {
        Vector2D snakepos_b2 = {_x[5],_y[5]}; //Obtains the snake position.
        return snakepos_b2;
    }
    else if(length==9)  {
        Vector2D snakepos_b2 = {_x[6],_y[6]}; //Obtains the snake position.
        return snakepos_b2;
    }
    else if(length==10)  {
        Vector2D snakepos_b2 = {_x[7],_y[7]}; //Obtains the snake position.
        return snakepos_b2;
    }
    else if(length==11)  {
        Vector2D snakepos_b2 = {_x[8],_y[8]}; //Obtains the snake position.
        return snakepos_b2;
    }
    else if(length==12)  {
        Vector2D snakepos_b2 = {_x[9],_y[9]}; //Obtains the snake position.
        return snakepos_b2;
    }
    else if(length==13)  {
        Vector2D snakepos_b2 = {_x[10],_y[10]}; //Obtains the snake position.
        return snakepos_b2;
    }
    else if(length==14)  {
        Vector2D snakepos_b2 = {_x[11],_y[11]}; //Obtains the snake position.
        return snakepos_b2;
    }
    else if(length == 15)  {
        Vector2D snakepos_b2 = {_x[12],_y[12]}; //Obtains the snake position.
        return snakepos_b2;
    }
    //printf("snakepos from player = %f %f \n", snakepos.x, snakepos.y);
    else  {
        Vector2D snakepos_b2 = {-20,-20}; //Obtains the snake position.
        return snakepos_b2;
    }
}

Vector2D Snake::get_pos_before3(int length)  //this sends data of following sprites.
{
    if(length == 4)  {
        Vector2D snakepos_b3 = {_x[0],_y[0]}; //Obtains the snake position.
        return snakepos_b3;
    }
    else if(length==5)  {
        Vector2D snakepos_b3 = {_x[1],_y[1]}; //Obtains the snake position.
        return snakepos_b3;
    }
    else if(length==6)  {
        Vector2D snakepos_b3 = {_x[2],_y[2]}; //Obtains the snake position.
        return snakepos_b3;
    }
    else if(length==7)  {
        Vector2D snakepos_b3 = {_x[3],_y[3]}; //Obtains the snake position.
        return snakepos_b3;
    }
    else if(length==8)  {
        Vector2D snakepos_b3 = {_x[4],_y[4]}; //Obtains the snake position.
        return snakepos_b3;
    }
    else if(length==9)  {
        Vector2D snakepos_b3 = {_x[5],_y[5]}; //Obtains the snake position.
        return snakepos_b3;
    }
    else if(length==10)  {
        Vector2D snakepos_b3 = {_x[6],_y[6]}; //Obtains the snake position.
        return snakepos_b3;
    }
    else if(length==11)  {
        Vector2D snakepos_b3 = {_x[7],_y[7]}; //Obtains the snake position.
        return snakepos_b3;
    }
    else if(length==12)  {
        Vector2D snakepos_b3 = {_x[8],_y[8]}; //Obtains the snake position.
        return snakepos_b3;
    }
    else if(length==13)  {
        Vector2D snakepos_b3 = {_x[9],_y[9]}; //Obtains the snake position.
        return snakepos_b3;
    }
    else if(length==14)  {
        Vector2D snakepos_b3 = {_x[10],_y[10]}; //Obtains the snake position.
        return snakepos_b3;
    }
    else if(length==15)  {
        Vector2D snakepos_b3 = {_x[11],_y[11]}; //Obtains the snake position.
        return snakepos_b3;
    }
    //printf("snakepos from player = %f %f \n", snakepos.x, snakepos.y);
    else  {
        Vector2D snakepos_b3 = {-20,-20}; //Obtains the snake position.
        return snakepos_b3;
    }
}

Vector2D Snake::get_pos_before4(int length)  //this sends data of following sprites.
{
    if(length == 5)  {
        Vector2D snakepos_b4 = {_x[0],_y[0]}; //Obtains the snake position.
        return snakepos_b4;
    }
    else if(length==6)  {
        Vector2D snakepos_b4 = {_x[1],_y[1]}; //Obtains the snake position.
        return snakepos_b4;
    }
    else if(length==7)  {
        Vector2D snakepos_b4 = {_x[2],_y[2]}; //Obtains the snake position.
        return snakepos_b4;
    }
    else if(length==8)  {
        Vector2D snakepos_b4 = {_x[3],_y[3]}; //Obtains the snake position.
        return snakepos_b4;
    }
    else if(length==9)  {
        Vector2D snakepos_b4 = {_x[4],_y[4]}; //Obtains the snake position.
        return snakepos_b4;
    }
    else if(length==10)  {
        Vector2D snakepos_b4 = {_x[5],_y[5]}; //Obtains the snake position.
        return snakepos_b4;
    }
    else if(length==11)  {
        Vector2D snakepos_b4 = {_x[6],_y[6]}; //Obtains the snake position.
        return snakepos_b4;
    }
    else if(length==12)  {
        Vector2D snakepos_b4 = {_x[7],_y[7]}; //Obtains the snake position.
        return snakepos_b4;
    }
    else if(length==13)  {
        Vector2D snakepos_b4 = {_x[8],_y[8]}; //Obtains the snake position.
        return snakepos_b4;
    }
    else if(length==14)  {
        Vector2D snakepos_b4 = {_x[9],_y[9]}; //Obtains the snake position.
        return snakepos_b4;
    }
    else if(length==15)  {
        Vector2D snakepos_b4 = {_x[10],_y[10]}; //Obtains the snake position.
        return snakepos_b4;
    }
    //printf("snakepos from player = %f %f \n", snakepos.x, snakepos.y);
    else  {
        Vector2D snakepos_b4 = {-20,-20}; //Obtains the snake position.
        return snakepos_b4;
    }
}

Vector2D Snake::get_pos_before5(int length)  //this sends data of following sprites.
{
    if(length == 6)  {
        Vector2D snakepos_b5 = {_x[0],_y[0]}; //Obtains the snake position.
        return snakepos_b5;
    }
    else if(length==7)  {
        Vector2D snakepos_b5 = {_x[1],_y[1]}; //Obtains the snake position.
        return snakepos_b5;
    }
    else if(length==8)  {
        Vector2D snakepos_b5 = {_x[2],_y[2]}; //Obtains the snake position.
        return snakepos_b5;
    }
    else if(length==9)  {
        Vector2D snakepos_b5 = {_x[3],_y[3]}; //Obtains the snake position.
        return snakepos_b5;
    }
    else if(length==10)  {
        Vector2D snakepos_b5 = {_x[4],_y[4]}; //Obtains the snake position.
        return snakepos_b5;
    }
    else if(length==11)  {
        Vector2D snakepos_b5 = {_x[5],_y[5]}; //Obtains the snake position.
        return snakepos_b5;
    }
    else if(length==12)  {
        Vector2D snakepos_b5 = {_x[6],_y[6]}; //Obtains the snake position.
        return snakepos_b5;
    }
    else if(length==13)  {
        Vector2D snakepos_b5 = {_x[7],_y[7]}; //Obtains the snake position.
        return snakepos_b5;
    }
    else if(length==14)  {
        Vector2D snakepos_b5 = {_x[8],_y[8]}; //Obtains the snake position.
        return snakepos_b5;
    }
    else if(length==15)  {
        Vector2D snakepos_b5 = {_x[9],_y[9]}; //Obtains the snake position.
        return snakepos_b5;
    }
    //printf("snakepos from player = %f %f \n", snakepos.x, snakepos.y);
    else  {
        Vector2D snakepos_b5 = {-20,-20}; //Obtains the snake position.
        return snakepos_b5;
    }
}

Vector2D Snake::get_pos_before6(int length)  //this sends data of following sprites.
{
    if(length == 7)  {
        Vector2D snakepos_b6 = {_x[0],_y[0]}; //Obtains the snake position.
        return snakepos_b6;
    }
    else if(length==8)  {
        Vector2D snakepos_b6 = {_x[1],_y[1]}; //Obtains the snake position.
        return snakepos_b6;
    }
    else if(length==9)  {
        Vector2D snakepos_b6 = {_x[2],_y[2]}; //Obtains the snake position.
        return snakepos_b6;
    }
    else if(length==10)  {
        Vector2D snakepos_b6 = {_x[3],_y[3]}; //Obtains the snake position.
        return snakepos_b6;
    }
    else if(length==11)  {
        Vector2D snakepos_b6 = {_x[4],_y[4]}; //Obtains the snake position.
        return snakepos_b6;
    }
    else if(length==12)  {
        Vector2D snakepos_b6 = {_x[5],_y[5]}; //Obtains the snake position.
        return snakepos_b6;
    }
    else if(length==13)  {
        Vector2D snakepos_b6 = {_x[6],_y[6]}; //Obtains the snake position.
        return snakepos_b6;
    }
    else if(length==14)  {
        Vector2D snakepos_b6 = {_x[7],_y[7]}; //Obtains the snake position.
        return snakepos_b6;
    }
    else if(length==15)  {
        Vector2D snakepos_b6 = {_x[8],_y[8]}; //Obtains the snake position.
        return snakepos_b6;
    }
    //printf("snakepos from player = %f %f \n", snakepos.x, snakepos.y);
    else  {
        Vector2D snakepos_b6 = {-20,-20}; //Obtains the snake position.
        return snakepos_b6;
    }
}

Vector2D Snake::get_pos_before7(int length)  //this sends data of following sprites.
{
    if(length == 8)  {
        Vector2D snakepos_b7 = {_x[0],_y[0]}; //Obtains the snake position.
        return snakepos_b7;
    }
    else if(length==9)  {
        Vector2D snakepos_b7 = {_x[1],_y[1]}; //Obtains the snake position.
        return snakepos_b7;
    }
    else if(length==10)  {
        Vector2D snakepos_b7 = {_x[2],_y[2]}; //Obtains the snake position.
        return snakepos_b7;
    }
    else if(length==11)  {
        Vector2D snakepos_b7 = {_x[3],_y[3]}; //Obtains the snake position.
        return snakepos_b7;
    }
    else if(length==12)  {
        Vector2D snakepos_b7 = {_x[4],_y[4]}; //Obtains the snake position.
        return snakepos_b7;
    }
    else if(length==13)  {
        Vector2D snakepos_b7 = {_x[5],_y[5]}; //Obtains the snake position.
        return snakepos_b7;
    }
    else if(length==14)  {
        Vector2D snakepos_b7 = {_x[6],_y[6]}; //Obtains the snake position.
        return snakepos_b7;
    }
    else if(length==15)  {
        Vector2D snakepos_b7 = {_x[7],_y[7]}; //Obtains the snake position.
        return snakepos_b7;
    }
    //printf("snakepos from player = %f %f \n", snakepos.x, snakepos.y);
    else  {
        Vector2D snakepos_b7 = {-20,-20}; //Obtains the snake position.
        return snakepos_b7;
    }
}

Vector2D Snake::get_pos_before8(int length)  //this sends data of following sprites.
{
    if(length == 9)  {
        Vector2D snakepos_b8 = {_x[0],_y[0]}; //Obtains the snake position.
        return snakepos_b8;
    }
    else if(length==10)  {
        Vector2D snakepos_b8 = {_x[1],_y[1]}; //Obtains the snake position.
        return snakepos_b8;
    }
    else if(length==11)  {
        Vector2D snakepos_b8 = {_x[2],_y[2]}; //Obtains the snake position.
        return snakepos_b8;
    }
    else if(length==12)  {
        Vector2D snakepos_b8 = {_x[3],_y[3]}; //Obtains the snake position.
        return snakepos_b8;
    }
    else if(length==13)  {
        Vector2D snakepos_b8 = {_x[4],_y[4]}; //Obtains the snake position.
        return snakepos_b8;
    }
    else if(length==14)  {
        Vector2D snakepos_b8 = {_x[5],_y[5]}; //Obtains the snake position.
        return snakepos_b8;
    }
    else if(length==15)  {
        Vector2D snakepos_b8 = {_x[6],_y[6]}; //Obtains the snake position.
        return snakepos_b8;
    }
    //printf("snakepos from player = %f %f \n", snakepos.x, snakepos.y);
    else  {
        Vector2D snakepos_b8 = {-20,-20}; //Obtains the snake position.
        return snakepos_b8;
    }
}

Vector2D Snake::get_pos_before9(int length)  //this sends data of following sprites.
{
    if(length == 10)  {
        Vector2D snakepos_b9 = {_x[0],_y[0]}; //Obtains the snake position.
        return snakepos_b9;
    }
    else if(length==11)  {
        Vector2D snakepos_b9 = {_x[1],_y[1]}; //Obtains the snake position.
        return snakepos_b9;
    }
    else if(length==12)  {
        Vector2D snakepos_b9 = {_x[2],_y[2]}; //Obtains the snake position.
        return snakepos_b9;
    }
    else if(length==13)  {
        Vector2D snakepos_b9 = {_x[3],_y[3]}; //Obtains the snake position.
        return snakepos_b9;
    }
    else if(length==14)  {
        Vector2D snakepos_b9 = {_x[4],_y[4]}; //Obtains the snake position.
        return snakepos_b9;
    }
    else if(length==15)  {
        Vector2D snakepos_b9 = {_x[5],_y[5]}; //Obtains the snake position.
        return snakepos_b9;
    }
    //printf("snakepos from player = %f %f \n", snakepos.x, snakepos.y);
    else  {
        Vector2D snakepos_b9 = {-20,-20}; //Obtains the snake position.
        return snakepos_b9;
    }
}

Vector2D Snake::get_pos_before10(int length)  //this sends data of following sprites.
{
    if(length == 11)  {
        Vector2D snakepos_b10 = {_x[0],_y[0]}; //Obtains the snake position.
        return snakepos_b10;
    }
    else if(length==12)  {
        Vector2D snakepos_b10 = {_x[1],_y[1]}; //Obtains the snake position.
        return snakepos_b10;
    }
    else if(length==13)  {
        Vector2D snakepos_b10 = {_x[2],_y[2]}; //Obtains the snake position.
        return snakepos_b10;
    }
    else if(length==14)  {
        Vector2D snakepos_b10 = {_x[3],_y[3]}; //Obtains the snake position.
        return snakepos_b10;
    }
    else if(length==15)  {
        Vector2D snakepos_b10 = {_x[4],_y[4]}; //Obtains the snake position.
        return snakepos_b10;
    }
    //printf("snakepos from player = %f %f \n", snakepos.x, snakepos.y);
    else  {
        Vector2D snakepos_b10 = {-20,-20}; //Obtains the snake position.
        return snakepos_b10;
    }
}

Vector2D Snake::get_pos_before11(int length)  //this sends data of following sprites.
{
    if(length == 12)  {
        Vector2D snakepos_b11 = {_x[0],_y[0]}; //Obtains the snake position.
        return snakepos_b11;
    }
    else if(length==13)  {
        Vector2D snakepos_b11 = {_x[1],_y[1]}; //Obtains the snake position.
        return snakepos_b11;
    }
    else if(length==14)  {
        Vector2D snakepos_b11 = {_x[2],_y[2]}; //Obtains the snake position.
        return snakepos_b11;
    }
    else if(length==15)  {
        Vector2D snakepos_b11 = {_x[3],_y[3]}; //Obtains the snake position.
        return snakepos_b11;
    }
    //printf("snakepos from player = %f %f \n", snakepos.x, snakepos.y);
    else  {
        Vector2D snakepos_b11 = {-20,-20}; //Obtains the snake position.
        return snakepos_b11;
    }
}

Vector2D Snake::get_pos_before12(int length)  //this sends data of following sprites.
{
    if(length == 13)  {
        Vector2D snakepos_b12 = {_x[0],_y[0]}; //Obtains the snake position.
        return snakepos_b12;
    }
    else if(length==14)  {
        Vector2D snakepos_b12 = {_x[1],_y[1]}; //Obtains the snake position.
        return snakepos_b12;
    }
    else if(length==15)  {
        Vector2D snakepos_b12 = {_x[2],_y[2]}; //Obtains the snake position.
        return snakepos_b12;
    }
    //printf("snakepos from player = %f %f \n", snakepos.x, snakepos.y);
    else  {
        Vector2D snakepos_b12 = {-20,-20}; //Obtains the snake position.
        return snakepos_b12;
    }
}

Vector2D Snake::get_pos_before13(int length)  //this sends data of following sprites.
{
    if(length == 14)  {
        Vector2D snakepos_b13 = {_x[0],_y[0]}; //Obtains the snake position.
        return snakepos_b13;
    }
    else if(length==15)  {
        Vector2D snakepos_b13 = {_x[1],_y[1]}; //Obtains the snake position.
        return snakepos_b13;
    }
    //printf("snakepos from player = %f %f \n", snakepos.x, snakepos.y);
    else  {
        Vector2D snakepos_b13 = {-20,-20}; //Obtains the snake position.
        return snakepos_b13;
    }
}

Vector2D Snake::get_pos_before14(int length)  //this sends data of following sprites.
{
    if(length==15)  {
        Vector2D snakepos_b14 = {_x[0],_y[0]}; //Obtains the snake position.
        return snakepos_b14;
    }
    else  {
        Vector2D snakepos_b14 = {-20,-20}; //Obtains the snake position.
        return snakepos_b14;
    }
    //printf("snakepos from player = %f %f \n", snakepos.x, snakepos.y);
}



void Snake::update(Direction d,float mag,int length, int speed, int* b)
{
    _speed = speed;  //Speed changes depending on how much you push the joystick.(As Of Now)
    
    for(int i=0; i<=13; i++)  {
        if(length > i+1)  {
            if ((_x[i] > _x[i+1])&&(b[i+1] == 1)&&(b[i] == 1))  {
                _x[i]-=_speed;    
            }
            if ((_x[i] < _x[i+1])&&(b[i+1] == 1)&&(b[i] == 1))  {
                _x[i]+=_speed;    
            }
        }
    }
 
    for(int i=14; i>=0; i--)  {
            if((length == i+1)&&(b[i] == 1))  {
                if (d == E) {
                    _x[i]+= _speed;
                }
                if (d == W) {
                    _x[i]-= _speed;
                }
            }
    }

// the following makes sure that when the length is increased, the snake stays where it was when it ate food.

    for(int i=3; i<=15; i++)  {
            if(length < 2)  {
                _x[1] = _x[0];
            }
            else if(length < i)  {
                _x[i-1] = _x[i-2];
            }
    }
    
    //Limits set so that the sprite does not travel off the screen.
    for(int i=0; i<=14; i++)  {
            if (_x[i] <= 0) {
                _x[i] = 0;
            }
            if (_x[i] > 81) {
                _x[i] = 81;
            }
    }
}