Ahmed Adamjee
/
SnakeVSBlock
Snake vs Block Game to be run upon K64F.
Diff: Snake/Snake.cpp
- Revision:
- 37:ee47699915b8
- Parent:
- 36:dfdd619874ae
- Child:
- 39:210ac915e0a0
diff -r dfdd619874ae -r ee47699915b8 Snake/Snake.cpp --- a/Snake/Snake.cpp Thu Apr 18 06:19:33 2019 +0000 +++ b/Snake/Snake.cpp Thu Apr 18 14:03:43 2019 +0000 @@ -54,15 +54,22 @@ NVIC_SystemReset(); //Software Reset. //change this condition to loosing screen. } - for(int a=1; a<=15; a++) { + for(int a=1; a<=10; a++) { if(length == a) { for(int i=0; i<=a-1; i++) { lcd.drawSprite(_x[i],_y[i],3,3,(int *)snake_sprite); //Function used to draw the sprite. } } } + if(length>=10) { + for(int a=1; a<=10; a++) { + for(int i=0; i<=a-1; i++) { + lcd.drawSprite(_x[i],_y[i],3,3,(int *)snake_sprite); //Function used to draw the sprite. + } + } + } - if(length >= 16) { + if(length >= 20) { lcd.clear(); lcd.printString("Level Complete",0,1); lcd.printString("Press Start",10,3); @@ -89,12 +96,16 @@ Vector2D Snake::get_pos(int length) { - for(int i=1; i<=15; i++) { + for(int i=1; i<=10; i++) { if(length == i) { Vector2D snakepos = {_x[i-1],_y[i-1]}; //Obtains the snake position. return snakepos; } } + if(length >= 10) { + Vector2D snakepos = {_x[9],_y[9]}; //Obtains the snake position. + return snakepos; + } Vector2D snakepos = {-20,-20}; //Obtains the snake position. return snakepos; //printf("snakepos from player = %f %f \n", snakepos.x, snakepos.y); @@ -102,12 +113,16 @@ Vector2D Snake::get_pos_before1(int length) //this sends data of following sprites. { - for(int i=2; i<=15; i++) { + for(int i=2; i<=10; i++) { if(length == i) { Vector2D snakepos_b1 = {_x[i-2],_y[i-2]}; //Obtains the snake position. return snakepos_b1; } } + if(length >= 10) { + Vector2D snakepos_b1 = {_x[8],_y[8]}; //Obtains the snake position. + return snakepos_b1; + } Vector2D snakepos_b1 = {-20,-20}; //Obtains the snake position. return snakepos_b1; //printf("snakepos_b1 from player = %f %f \n", snakepos_b1.x, snakepos_b1.y); @@ -115,12 +130,16 @@ Vector2D Snake::get_pos_before2(int length) //this sends data of following sprites. { - for(int i=3; i<=15; i++) { + for(int i=3; i<=10; i++) { if(length == i) { Vector2D snakepos_b2 = {_x[i-3],_y[i-3]}; //Obtains the snake position. return snakepos_b2; } } + if(length >= 10) { + Vector2D snakepos_b2 = {_x[7],_y[7]}; //Obtains the snake position. + return snakepos_b2; + } Vector2D snakepos_b2 = {-20,-20}; //Obtains the snake position. return snakepos_b2; //printf("snakepos_b2 from player = %f %f \n", snakepos_b2.x, snakepos_b2.y); @@ -128,12 +147,16 @@ Vector2D Snake::get_pos_before3(int length) //this sends data of following sprites. { - for(int i=4; i<=15; i++) { + for(int i=4; i<=10; i++) { if(length == i) { Vector2D snakepos_b3 = {_x[i-4],_y[i-4]}; //Obtains the snake position. return snakepos_b3; } } + if(length >= 10) { + Vector2D snakepos_b3 = {_x[6],_y[6]}; //Obtains the snake position. + return snakepos_b3; + } Vector2D snakepos_b3 = {-20,-20}; //Obtains the snake position. return snakepos_b3; //printf("snakepos_b3 from player = %f %f \n", snakepos_b3.x, snakepos_b3.y); @@ -141,12 +164,16 @@ Vector2D Snake::get_pos_before4(int length) //this sends data of following sprites. { - for(int i=5; i<=15; i++) { + for(int i=5; i<=10; i++) { if(length == i) { Vector2D snakepos_b4 = {_x[i-5],_y[i-5]}; //Obtains the snake position. return snakepos_b4; } } + if(length >= 10) { + Vector2D snakepos_b4 = {_x[5],_y[5]}; //Obtains the snake position. + return snakepos_b4; + } Vector2D snakepos_b4 = {-20,-20}; //Obtains the snake position. return snakepos_b4; //printf("snakepos_b4 from player = %f %f \n", snakepos_b4.x, snakepos_b4.y); @@ -154,12 +181,16 @@ Vector2D Snake::get_pos_before5(int length) //this sends data of following sprites. { - for(int i=6; i<=15; i++) { + for(int i=6; i<=10; i++) { if(length == i) { Vector2D snakepos_b5 = {_x[i-6],_y[i-6]}; //Obtains the snake position. return snakepos_b5; } } + if(length >= 10) { + Vector2D snakepos_b5 = {_x[4],_y[4]}; //Obtains the snake position. + return snakepos_b5; + } Vector2D snakepos_b5 = {-20,-20}; //Obtains the snake position. return snakepos_b5; //printf("snakepos_b5 from player = %f %f \n", snakepos_b5.x, snakepos_b5.y); @@ -167,12 +198,16 @@ Vector2D Snake::get_pos_before6(int length) //this sends data of following sprites. { - for(int i=7; i<=15; i++) { + for(int i=7; i<=10; i++) { if(length == i) { Vector2D snakepos_b6 = {_x[i-7],_y[i-7]}; //Obtains the snake position. return snakepos_b6; } } + if(length >= 10) { + Vector2D snakepos_b6 = {_x[3],_y[3]}; //Obtains the snake position. + return snakepos_b6; + } Vector2D snakepos_b6 = {-20,-20}; //Obtains the snake position. return snakepos_b6; //printf("snakepos_b6 from player = %f %f \n", snakepos_b6.x, snakepos_b6.y); @@ -180,12 +215,16 @@ Vector2D Snake::get_pos_before7(int length) //this sends data of following sprites. { - for(int i=8; i<=15; i++) { + for(int i=8; i<=10; i++) { if(length == i) { Vector2D snakepos_b7 = {_x[i-8],_y[i-8]}; //Obtains the snake position. return snakepos_b7; } } + if(length >= 10) { + Vector2D snakepos_b7 = {_x[2],_y[2]}; //Obtains the snake position. + return snakepos_b7; + } Vector2D snakepos_b7 = {-20,-20}; //Obtains the snake position. return snakepos_b7; //printf("snakepos_b7 from player = %f %f \n", snakepos_b7.x, snakepos_b7.y); @@ -193,12 +232,16 @@ Vector2D Snake::get_pos_before8(int length) //this sends data of following sprites. { - for(int i=9; i<=15; i++) { + for(int i=9; i<=10; i++) { if(length == i) { Vector2D snakepos_b8 = {_x[i-9],_y[i-9]}; //Obtains the snake position. return snakepos_b8; } } + if(length >= 10) { + Vector2D snakepos_b8 = {_x[1],_y[1]}; //Obtains the snake position. + return snakepos_b8; + } Vector2D snakepos_b8 = {-20,-20}; //Obtains the snake position. return snakepos_b8; //printf("snakepos_b8 from player = %f %f \n", snakepos_b8.x, snakepos_b8.y); @@ -206,17 +249,21 @@ Vector2D Snake::get_pos_before9(int length) //this sends data of following sprites. { - for(int i=10; i<=15; i++) { + for(int i=10; i<=10; i++) { if(length == i) { Vector2D snakepos_b9 = {_x[i-10],_y[i-10]}; //Obtains the snake position. return snakepos_b9; } } + if(length >= 10) { + Vector2D snakepos_b9 = {_x[0],_y[0]}; //Obtains the snake position. + return snakepos_b9; + } Vector2D snakepos_b9 = {-20,-20}; //Obtains the snake position. return snakepos_b9; //printf("snakepos_b9 from player = %f %f \n", snakepos_b9.x, snakepos_b9.y); } - +/* Vector2D Snake::get_pos_before10(int length) //this sends data of following sprites. { for(int i=11; i<=15; i++) { @@ -281,17 +328,18 @@ return snakepos_b14; //printf("snakepos_b14 from player = %f %f \n", snakepos_b14.x, snakepos_b14.y); } - +*/ void Snake::update(Direction d,int length, int speed, int* b) { _speed = speed; //Speed changes depending on how much you push the joystick.(As Of Now) - + if(length<=10) {_length = length;} //to stop the snake length virtually at 10 when it goes past it. + else {_length = 10;} //this makes all of the snake beeds chained together by making the lower ones drag towards where the top one was in the previous loop //the b[i] makes sure that the snake beed doesn't move if that beed is deactivated by colliding with a barrier. for(int i=0; i<=13; i++) { - if((length > i+1)&&(_x[i] != _x[i+1])) { + if((_length > i+1)&&(_x[i] != _x[i+1])) { if ((_x[i] > _x[i+1])&&(b[i+1] == 1)&&(b[i] == 1)) { _x[i]-=_speed; } @@ -302,7 +350,7 @@ } //this makes the controls of W/E directions only exclusive to the top beed in the snake for(int i=14; i>=0; i--) { - if((length == i+1)&&(b[i] == 1)) { + if((_length == i+1)&&(b[i] == 1)) { if (d == E) {_x[i]+= _speed;} @@ -315,7 +363,7 @@ for(int i=2; i<=15; i++) { - if(length < i) {_x[i-1] = _x[i-2];} + if(_length < i) {_x[i-1] = _x[i-2];} } //Limits set so that the snake does not travel off the screen.