Snake vs Block Game to be run upon K64F.

Dependencies:   mbed

Committer:
AhmedPlaymaker
Date:
Wed Apr 10 10:59:15 2019 +0000
Revision:
24:1c118b071430
Parent:
23:592345a70329
Child:
25:e827f1a8fadc
Made snake side collision detector compact

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AhmedPlaymaker 7:48ba87cd79b5 1 #include "SnakevsBlock.h"
AhmedPlaymaker 7:48ba87cd79b5 2
AhmedPlaymaker 7:48ba87cd79b5 3 SnakevsBlock::SnakevsBlock()
AhmedPlaymaker 7:48ba87cd79b5 4 {
AhmedPlaymaker 7:48ba87cd79b5 5
AhmedPlaymaker 7:48ba87cd79b5 6 }
AhmedPlaymaker 7:48ba87cd79b5 7
AhmedPlaymaker 7:48ba87cd79b5 8 SnakevsBlock::~SnakevsBlock()
AhmedPlaymaker 7:48ba87cd79b5 9 {
AhmedPlaymaker 7:48ba87cd79b5 10
AhmedPlaymaker 7:48ba87cd79b5 11 }
AhmedPlaymaker 7:48ba87cd79b5 12
AhmedPlaymaker 7:48ba87cd79b5 13 void SnakevsBlock::init()
AhmedPlaymaker 7:48ba87cd79b5 14 {
AhmedPlaymaker 7:48ba87cd79b5 15 //The snake length configuration and all the other initial information passing will be done here
AhmedPlaymaker 12:1e601b176437 16 length = 3;
AhmedPlaymaker 19:05cc9f801468 17 level = 1;
AhmedPlaymaker 12:1e601b176437 18 foodbuff = 0;
AhmedPlaymaker 12:1e601b176437 19 send=0;
AhmedPlaymaker 13:9785f2404045 20 speed = 1;
AhmedPlaymaker 20:1e6338403427 21 blockgap = 500;
AhmedPlaymaker 19:05cc9f801468 22 blockbuff = 0;
AhmedPlaymaker 22:ee698f66146f 23 for(int i=0; i<=14; i++) {
AhmedPlaymaker 22:ee698f66146f 24 b[i] = 1;
AhmedPlaymaker 22:ee698f66146f 25 }
AhmedPlaymaker 7:48ba87cd79b5 26 }
AhmedPlaymaker 7:48ba87cd79b5 27
AhmedPlaymaker 7:48ba87cd79b5 28
AhmedPlaymaker 7:48ba87cd79b5 29
AhmedPlaymaker 7:48ba87cd79b5 30 void SnakevsBlock::read_input(Gamepad &pad)
AhmedPlaymaker 7:48ba87cd79b5 31 {
AhmedPlaymaker 7:48ba87cd79b5 32 _d = pad.get_direction(); //Obtains Direction pushed towards on Joystick.
AhmedPlaymaker 7:48ba87cd79b5 33 _mag = pad.get_mag(); //Obtains Magnitude of Joystick.
AhmedPlaymaker 7:48ba87cd79b5 34 }
AhmedPlaymaker 7:48ba87cd79b5 35
AhmedPlaymaker 7:48ba87cd79b5 36 void SnakevsBlock::draw(N5110 &lcd, Gamepad &pad)
AhmedPlaymaker 7:48ba87cd79b5 37 {
AhmedPlaymaker 20:1e6338403427 38 length = _s.draw(pad, lcd, length, level); //Draws the Snake. //Make these snake buffs relative to the snake drops which in turn relate to the game speed
AhmedPlaymaker 9:d1d79d4ee673 39 if(foodbuff >=0) {
AhmedPlaymaker 9:d1d79d4ee673 40 _f.draw(lcd); //Draws the first food.
AhmedPlaymaker 9:d1d79d4ee673 41 if(foodbuff >=50) {
AhmedPlaymaker 9:d1d79d4ee673 42 _ff.draw(lcd); //Draws the second food.
AhmedPlaymaker 9:d1d79d4ee673 43 if(foodbuff >=80) {
AhmedPlaymaker 9:d1d79d4ee673 44 _fff.draw(lcd); //Draws the third food.
AhmedPlaymaker 9:d1d79d4ee673 45 }
AhmedPlaymaker 9:d1d79d4ee673 46 }
AhmedPlaymaker 9:d1d79d4ee673 47 foodbuff +=1;
AhmedPlaymaker 9:d1d79d4ee673 48 }
AhmedPlaymaker 16:7b474f873683 49 if(foodbuff >=8) {
AhmedPlaymaker 19:05cc9f801468 50 send = _b.draw(lcd, length, blocknum, srn, blockgap);
AhmedPlaymaker 19:05cc9f801468 51 }
AhmedPlaymaker 19:05cc9f801468 52 if(foodbuff == 8) {
AhmedPlaymaker 19:05cc9f801468 53 blockbuff = 0;
AhmedPlaymaker 13:9785f2404045 54 }
AhmedPlaymaker 7:48ba87cd79b5 55
AhmedPlaymaker 7:48ba87cd79b5 56 //Code to print length on game screen.
AhmedPlaymaker 7:48ba87cd79b5 57 char bufferscore[14];
AhmedPlaymaker 7:48ba87cd79b5 58 sprintf(bufferscore,"%d",length);
AhmedPlaymaker 7:48ba87cd79b5 59 lcd.printString(bufferscore,1,0);
AhmedPlaymaker 7:48ba87cd79b5 60
AhmedPlaymaker 7:48ba87cd79b5 61 if(pad.check_event(Gamepad::BACK_PRESSED)){ //Waits for Back button to be pressed.
AhmedPlaymaker 7:48ba87cd79b5 62
AhmedPlaymaker 7:48ba87cd79b5 63 NVIC_SystemReset(); //Software Reset.
AhmedPlaymaker 7:48ba87cd79b5 64
AhmedPlaymaker 7:48ba87cd79b5 65 }
AhmedPlaymaker 7:48ba87cd79b5 66
AhmedPlaymaker 7:48ba87cd79b5 67
AhmedPlaymaker 7:48ba87cd79b5 68 }
AhmedPlaymaker 7:48ba87cd79b5 69
AhmedPlaymaker 7:48ba87cd79b5 70
AhmedPlaymaker 7:48ba87cd79b5 71 void SnakevsBlock::update(Gamepad &pad) //Updates objects on screen.
AhmedPlaymaker 7:48ba87cd79b5 72 {
AhmedPlaymaker 18:b391caa5754c 73 CheckSnakeBlockCollision(pad); //Function checks for when the snake collides with any of the blocks.
AhmedPlaymaker 12:1e601b176437 74 CheckSnakeFoodCollision(pad); //Function checks for when the snake collides with it's food.
AhmedPlaymaker 13:9785f2404045 75 CheckSnakeBlockSidesCollision(pad, _d); //Function checks for when the snake collides with any of the blocks' sides.
AhmedPlaymaker 22:ee698f66146f 76 _s.update(_d,_mag, length, speed, b); //_d is the direction of joystick and b controls thew motion of a section of the snake relative to obstruction
AhmedPlaymaker 9:d1d79d4ee673 77 _f.update();
AhmedPlaymaker 9:d1d79d4ee673 78 _ff.update();
AhmedPlaymaker 9:d1d79d4ee673 79 _fff.update();
AhmedPlaymaker 12:1e601b176437 80 _b.update(blocknum, srn, send);
AhmedPlaymaker 19:05cc9f801468 81 blockbuff++;
AhmedPlaymaker 19:05cc9f801468 82 if(blockbuff == blockgap) { //change this while changing the block drop gap
AhmedPlaymaker 19:05cc9f801468 83 blockbuff = 0;
AhmedPlaymaker 19:05cc9f801468 84 }
AhmedPlaymaker 21:e41126528cc6 85 if(length >= 11) { //to make it easier to react to sudden happenings
AhmedPlaymaker 20:1e6338403427 86 speed = 2;
AhmedPlaymaker 20:1e6338403427 87 }
AhmedPlaymaker 20:1e6338403427 88 else {
AhmedPlaymaker 20:1e6338403427 89 speed = 1;
AhmedPlaymaker 20:1e6338403427 90 }
AhmedPlaymaker 21:e41126528cc6 91 if(length > 15) { //to make progressive levels harder
AhmedPlaymaker 20:1e6338403427 92 blockgap -= 20;
AhmedPlaymaker 19:05cc9f801468 93 level += 1;
AhmedPlaymaker 16:7b474f873683 94 }
AhmedPlaymaker 7:48ba87cd79b5 95 }
AhmedPlaymaker 7:48ba87cd79b5 96
AhmedPlaymaker 7:48ba87cd79b5 97 void SnakevsBlock::get_pos()
AhmedPlaymaker 7:48ba87cd79b5 98 {
AhmedPlaymaker 9:d1d79d4ee673 99 Vector2D snake_pos = _s.get_pos(length);
AhmedPlaymaker 7:48ba87cd79b5 100 //printf("player pos = %f %f \n", player_pos.x, player_pos.y); //top left of player sprite
AhmedPlaymaker 7:48ba87cd79b5 101 // 81.000000 0.000000 top right
AhmedPlaymaker 7:48ba87cd79b5 102 // 0.000000 0.000000 is top left
AhmedPlaymaker 7:48ba87cd79b5 103 // 81.000000 45.000000 bottom right
AhmedPlaymaker 7:48ba87cd79b5 104 snakex = snake_pos.x;
AhmedPlaymaker 7:48ba87cd79b5 105 snakey = snake_pos.y;
AhmedPlaymaker 7:48ba87cd79b5 106 //printf("snakexy in GAME = %d %d \n", snakex, snakey);
AhmedPlaymaker 7:48ba87cd79b5 107 }
AhmedPlaymaker 7:48ba87cd79b5 108
AhmedPlaymaker 9:d1d79d4ee673 109
AhmedPlaymaker 9:d1d79d4ee673 110 void SnakevsBlock::CheckSnakeFoodCollision(Gamepad &pad)
AhmedPlaymaker 9:d1d79d4ee673 111 {
AhmedPlaymaker 9:d1d79d4ee673 112 //Obtains all required coordinates.
AhmedPlaymaker 9:d1d79d4ee673 113
AhmedPlaymaker 9:d1d79d4ee673 114
AhmedPlaymaker 9:d1d79d4ee673 115 Vector2D f_pos = _f.get_pos();
AhmedPlaymaker 9:d1d79d4ee673 116 Vector2D ff_pos = _ff.get_pos();
AhmedPlaymaker 9:d1d79d4ee673 117 Vector2D fff_pos = _fff.get_pos();
AhmedPlaymaker 9:d1d79d4ee673 118 Vector2D snake_pos = _s.get_pos(length);
AhmedPlaymaker 9:d1d79d4ee673 119
AhmedPlaymaker 9:d1d79d4ee673 120 //If statements check if the snake sprite has collided with any
AhmedPlaymaker 9:d1d79d4ee673 121 //of the three food sprites, if so then the food location is reset and
AhmedPlaymaker 9:d1d79d4ee673 122 //length of the snake is increased using the length variable.
AhmedPlaymaker 9:d1d79d4ee673 123
AhmedPlaymaker 9:d1d79d4ee673 124 if (
AhmedPlaymaker 9:d1d79d4ee673 125 ((snake_pos.y == f_pos.y) ||
AhmedPlaymaker 9:d1d79d4ee673 126 (snake_pos.y == f_pos.y + 1) ||
AhmedPlaymaker 9:d1d79d4ee673 127 (snake_pos.y == f_pos.y + 2) ||
AhmedPlaymaker 9:d1d79d4ee673 128 (snake_pos.y + 1== f_pos.y) ||
AhmedPlaymaker 9:d1d79d4ee673 129 (snake_pos.y + 1== f_pos.y + 1) ||
AhmedPlaymaker 9:d1d79d4ee673 130 (snake_pos.y + 1== f_pos.y + 2) ||
AhmedPlaymaker 9:d1d79d4ee673 131 (snake_pos.y + 2 == f_pos.y) ||
AhmedPlaymaker 9:d1d79d4ee673 132 (snake_pos.y + 2 == f_pos.y + 1) ||
AhmedPlaymaker 9:d1d79d4ee673 133 (snake_pos.y + 2 == f_pos.y + 2)) &&
AhmedPlaymaker 9:d1d79d4ee673 134 ((snake_pos.x == f_pos.x) ||
AhmedPlaymaker 9:d1d79d4ee673 135 (snake_pos.x == f_pos.x + 1) ||
AhmedPlaymaker 9:d1d79d4ee673 136 (snake_pos.x == f_pos.x + 2) ||
AhmedPlaymaker 9:d1d79d4ee673 137 (snake_pos.x + 1 == f_pos.x) ||
AhmedPlaymaker 9:d1d79d4ee673 138 (snake_pos.x + 1== f_pos.x + 1) ||
AhmedPlaymaker 9:d1d79d4ee673 139 (snake_pos.x + 1 == f_pos.x + 2) ||
AhmedPlaymaker 9:d1d79d4ee673 140 (snake_pos.x + 2 == f_pos.x) ||
AhmedPlaymaker 9:d1d79d4ee673 141 (snake_pos.x + 2 == f_pos.x + 1) ||
AhmedPlaymaker 9:d1d79d4ee673 142 (snake_pos.x + 2 == f_pos.x + 2))
AhmedPlaymaker 9:d1d79d4ee673 143 ) {
AhmedPlaymaker 9:d1d79d4ee673 144
AhmedPlaymaker 9:d1d79d4ee673 145 //printf("snake feast working \n");
AhmedPlaymaker 9:d1d79d4ee673 146 //audio feedback
AhmedPlaymaker 9:d1d79d4ee673 147 pad.tone(1000.0,0.1);
AhmedPlaymaker 9:d1d79d4ee673 148 f_pos.x = rand() % 82;
AhmedPlaymaker 21:e41126528cc6 149 if(blockbuff>25) { //change this while changing the block drop gap
AhmedPlaymaker 21:e41126528cc6 150 f_pos.y = -2;
AhmedPlaymaker 16:7b474f873683 151 }
AhmedPlaymaker 9:d1d79d4ee673 152 length+=1;
AhmedPlaymaker 9:d1d79d4ee673 153
AhmedPlaymaker 9:d1d79d4ee673 154 }
AhmedPlaymaker 9:d1d79d4ee673 155
AhmedPlaymaker 9:d1d79d4ee673 156 if (
AhmedPlaymaker 9:d1d79d4ee673 157 ((snake_pos.y == ff_pos.y) ||
AhmedPlaymaker 9:d1d79d4ee673 158 (snake_pos.y == ff_pos.y + 1) ||
AhmedPlaymaker 9:d1d79d4ee673 159 (snake_pos.y == ff_pos.y + 2) ||
AhmedPlaymaker 9:d1d79d4ee673 160 (snake_pos.y + 1== ff_pos.y) ||
AhmedPlaymaker 9:d1d79d4ee673 161 (snake_pos.y + 1== ff_pos.y + 1) ||
AhmedPlaymaker 9:d1d79d4ee673 162 (snake_pos.y + 1== ff_pos.y + 2) ||
AhmedPlaymaker 9:d1d79d4ee673 163 (snake_pos.y + 2 == ff_pos.y) ||
AhmedPlaymaker 9:d1d79d4ee673 164 (snake_pos.y + 2 == ff_pos.y + 1) ||
AhmedPlaymaker 9:d1d79d4ee673 165 (snake_pos.y + 2 == ff_pos.y + 2)) &&
AhmedPlaymaker 9:d1d79d4ee673 166 ((snake_pos.x == ff_pos.x) ||
AhmedPlaymaker 9:d1d79d4ee673 167 (snake_pos.x == ff_pos.x + 1) ||
AhmedPlaymaker 9:d1d79d4ee673 168 (snake_pos.x == ff_pos.x + 2) ||
AhmedPlaymaker 9:d1d79d4ee673 169 (snake_pos.x + 1 == ff_pos.x) ||
AhmedPlaymaker 9:d1d79d4ee673 170 (snake_pos.x + 1== ff_pos.x + 1) ||
AhmedPlaymaker 9:d1d79d4ee673 171 (snake_pos.x + 1 == ff_pos.x + 2) ||
AhmedPlaymaker 9:d1d79d4ee673 172 (snake_pos.x + 2 == ff_pos.x) ||
AhmedPlaymaker 9:d1d79d4ee673 173 (snake_pos.x + 2 == ff_pos.x + 1) ||
AhmedPlaymaker 9:d1d79d4ee673 174 (snake_pos.x + 2 == ff_pos.x + 2))
AhmedPlaymaker 9:d1d79d4ee673 175 ) {
AhmedPlaymaker 9:d1d79d4ee673 176
AhmedPlaymaker 9:d1d79d4ee673 177 //printf("snake feast working \n");
AhmedPlaymaker 9:d1d79d4ee673 178 // audio feedback
AhmedPlaymaker 9:d1d79d4ee673 179 pad.tone(1000.0,0.1);
AhmedPlaymaker 9:d1d79d4ee673 180 ff_pos.x = rand() % 82;
AhmedPlaymaker 13:9785f2404045 181 ff_pos.y = -2;
AhmedPlaymaker 21:e41126528cc6 182 if(blockbuff>25) { //change this while changing the block drop gap
AhmedPlaymaker 21:e41126528cc6 183 f_pos.y = -2;
AhmedPlaymaker 16:7b474f873683 184 }
AhmedPlaymaker 9:d1d79d4ee673 185 length+=1;
AhmedPlaymaker 9:d1d79d4ee673 186
AhmedPlaymaker 9:d1d79d4ee673 187 }
AhmedPlaymaker 9:d1d79d4ee673 188
AhmedPlaymaker 9:d1d79d4ee673 189 if (
AhmedPlaymaker 9:d1d79d4ee673 190 ((snake_pos.y == fff_pos.y) ||
AhmedPlaymaker 9:d1d79d4ee673 191 (snake_pos.y == fff_pos.y + 1) ||
AhmedPlaymaker 9:d1d79d4ee673 192 (snake_pos.y == fff_pos.y + 2) ||
AhmedPlaymaker 9:d1d79d4ee673 193 (snake_pos.y + 1== fff_pos.y) ||
AhmedPlaymaker 9:d1d79d4ee673 194 (snake_pos.y + 1== fff_pos.y + 1) ||
AhmedPlaymaker 9:d1d79d4ee673 195 (snake_pos.y + 1== fff_pos.y + 2) ||
AhmedPlaymaker 9:d1d79d4ee673 196 (snake_pos.y + 2 == fff_pos.y) ||
AhmedPlaymaker 9:d1d79d4ee673 197 (snake_pos.y + 2 == fff_pos.y + 1) ||
AhmedPlaymaker 9:d1d79d4ee673 198 (snake_pos.y + 2 == fff_pos.y + 2)) &&
AhmedPlaymaker 9:d1d79d4ee673 199 ((snake_pos.x == fff_pos.x) ||
AhmedPlaymaker 9:d1d79d4ee673 200 (snake_pos.x == fff_pos.x + 1) ||
AhmedPlaymaker 9:d1d79d4ee673 201 (snake_pos.x == fff_pos.x + 2) ||
AhmedPlaymaker 9:d1d79d4ee673 202 (snake_pos.x + 1 == fff_pos.x) ||
AhmedPlaymaker 9:d1d79d4ee673 203 (snake_pos.x + 1== fff_pos.x + 1) ||
AhmedPlaymaker 9:d1d79d4ee673 204 (snake_pos.x + 1 == fff_pos.x + 2) ||
AhmedPlaymaker 9:d1d79d4ee673 205 (snake_pos.x + 2 == fff_pos.x) ||
AhmedPlaymaker 9:d1d79d4ee673 206 (snake_pos.x + 2 == fff_pos.x + 1) ||
AhmedPlaymaker 9:d1d79d4ee673 207 (snake_pos.x + 2 == fff_pos.x + 2))
AhmedPlaymaker 9:d1d79d4ee673 208 ) {
AhmedPlaymaker 9:d1d79d4ee673 209
AhmedPlaymaker 9:d1d79d4ee673 210 //printf("snake feast working \n");
AhmedPlaymaker 9:d1d79d4ee673 211 // audio feedback
AhmedPlaymaker 9:d1d79d4ee673 212 pad.tone(1000.0,0.1);
AhmedPlaymaker 9:d1d79d4ee673 213 fff_pos.x = rand() % 82;
AhmedPlaymaker 13:9785f2404045 214 fff_pos.y = -2;
AhmedPlaymaker 21:e41126528cc6 215 if(blockbuff>25) { //change this while changing the block drop gap
AhmedPlaymaker 21:e41126528cc6 216 f_pos.y = -2;
AhmedPlaymaker 16:7b474f873683 217 }
AhmedPlaymaker 9:d1d79d4ee673 218 length+=1;
AhmedPlaymaker 9:d1d79d4ee673 219
AhmedPlaymaker 9:d1d79d4ee673 220 }
AhmedPlaymaker 9:d1d79d4ee673 221
AhmedPlaymaker 9:d1d79d4ee673 222
AhmedPlaymaker 9:d1d79d4ee673 223 _f.set_pos(f_pos);
AhmedPlaymaker 9:d1d79d4ee673 224 _ff.set_pos(ff_pos);
AhmedPlaymaker 9:d1d79d4ee673 225 _fff.set_pos(fff_pos);
AhmedPlaymaker 9:d1d79d4ee673 226
AhmedPlaymaker 12:1e601b176437 227 }
AhmedPlaymaker 12:1e601b176437 228
AhmedPlaymaker 12:1e601b176437 229 void SnakevsBlock::CheckSnakeBlockCollision(Gamepad &pad)
AhmedPlaymaker 12:1e601b176437 230 {
AhmedPlaymaker 12:1e601b176437 231 //Obtains all required coordinates.
AhmedPlaymaker 12:1e601b176437 232 Vector2D b_pos = _b.get_pos();
AhmedPlaymaker 12:1e601b176437 233 int *b_number;
AhmedPlaymaker 12:1e601b176437 234 b_number = _b.get_number();
AhmedPlaymaker 12:1e601b176437 235 Vector2D snake_pos = _s.get_pos(length);
AhmedPlaymaker 12:1e601b176437 236
AhmedPlaymaker 12:1e601b176437 237 //If statements check if the snake sprite has collided with any
AhmedPlaymaker 12:1e601b176437 238 //of the blocks which are a maximum of 5, if so then the snake length reduces and the block number reduces
AhmedPlaymaker 12:1e601b176437 239 //the block has to move slower and come down after every 2/3 iterations(dependent on the snake size.(think about this)
AhmedPlaymaker 12:1e601b176437 240
AhmedPlaymaker 12:1e601b176437 241 if (
AhmedPlaymaker 12:1e601b176437 242 ((snake_pos.y == b_pos.y + 10) ||
AhmedPlaymaker 12:1e601b176437 243 (snake_pos.y == b_pos.y + 10) ||
AhmedPlaymaker 12:1e601b176437 244 (snake_pos.y == b_pos.y + 10)) &&
AhmedPlaymaker 12:1e601b176437 245 ((snake_pos.x + 1 == b_pos.x + 1) ||
AhmedPlaymaker 12:1e601b176437 246 (snake_pos.x + 1 == b_pos.x + 2) ||
AhmedPlaymaker 12:1e601b176437 247 (snake_pos.x + 1 == b_pos.x + 3) ||
AhmedPlaymaker 12:1e601b176437 248 (snake_pos.x + 1 == b_pos.x + 4) ||
AhmedPlaymaker 12:1e601b176437 249 (snake_pos.x + 1 == b_pos.x + 5) ||
AhmedPlaymaker 12:1e601b176437 250 (snake_pos.x + 1 == b_pos.x + 6) ||
AhmedPlaymaker 12:1e601b176437 251 (snake_pos.x + 1 == b_pos.x + 7) ||
AhmedPlaymaker 12:1e601b176437 252 (snake_pos.x + 1 == b_pos.x + 8) ||
AhmedPlaymaker 12:1e601b176437 253 (snake_pos.x + 1 == b_pos.x + 9) ||
AhmedPlaymaker 12:1e601b176437 254 (snake_pos.x + 1 == b_pos.x + 10) ||
AhmedPlaymaker 12:1e601b176437 255 (snake_pos.x + 1 == b_pos.x + 11) ||
AhmedPlaymaker 12:1e601b176437 256 (snake_pos.x + 1 == b_pos.x + 12) ||
AhmedPlaymaker 12:1e601b176437 257 (snake_pos.x + 1 == b_pos.x + 13) ||
AhmedPlaymaker 12:1e601b176437 258 (snake_pos.x + 1 == b_pos.x + 14) ||
AhmedPlaymaker 12:1e601b176437 259 (snake_pos.x + 1 == b_pos.x + 15) ||
AhmedPlaymaker 12:1e601b176437 260 (snake_pos.x + 1 == b_pos.x + 16) ||
AhmedPlaymaker 12:1e601b176437 261 (snake_pos.x + 1 == b_pos.x + 17) ||
AhmedPlaymaker 12:1e601b176437 262 (snake_pos.x + 1 == b_pos.x + 18))
AhmedPlaymaker 12:1e601b176437 263 ) {
AhmedPlaymaker 12:1e601b176437 264
AhmedPlaymaker 12:1e601b176437 265 //printf("snake collision working \n");
AhmedPlaymaker 12:1e601b176437 266 //audio feedback
AhmedPlaymaker 13:9785f2404045 267 if(blocknum > 0) {
AhmedPlaymaker 12:1e601b176437 268 b_pos.y = 0;
AhmedPlaymaker 12:1e601b176437 269 }
AhmedPlaymaker 12:1e601b176437 270 srn = 0;
AhmedPlaymaker 12:1e601b176437 271 blocknum = b_number[srn];
AhmedPlaymaker 12:1e601b176437 272 send=1;
AhmedPlaymaker 12:1e601b176437 273 blocknum-=1;
AhmedPlaymaker 13:9785f2404045 274 if(blocknum >= 0) { // to make sure that snake doesn't decrease in length if number on the block is less than 1;
AhmedPlaymaker 18:b391caa5754c 275 speed = 2;
AhmedPlaymaker 12:1e601b176437 276 length-=1;
AhmedPlaymaker 13:9785f2404045 277 pad.tone(1000.0,0.1);
AhmedPlaymaker 18:b391caa5754c 278 wait(0.05);
AhmedPlaymaker 18:b391caa5754c 279 }
AhmedPlaymaker 18:b391caa5754c 280 else {
AhmedPlaymaker 18:b391caa5754c 281 speed = 1;
AhmedPlaymaker 12:1e601b176437 282 }
AhmedPlaymaker 12:1e601b176437 283 }
AhmedPlaymaker 12:1e601b176437 284
AhmedPlaymaker 12:1e601b176437 285 if (
AhmedPlaymaker 12:1e601b176437 286 ((snake_pos.y == b_pos.y + 10) ||
AhmedPlaymaker 12:1e601b176437 287 (snake_pos.y == b_pos.y + 10) ||
AhmedPlaymaker 12:1e601b176437 288 (snake_pos.y == b_pos.y + 10)) &&
AhmedPlaymaker 12:1e601b176437 289 ((snake_pos.x + 1 == b_pos.x + 19) ||
AhmedPlaymaker 12:1e601b176437 290 (snake_pos.x + 1 == b_pos.x + 20) ||
AhmedPlaymaker 12:1e601b176437 291 (snake_pos.x + 1 == b_pos.x + 21) ||
AhmedPlaymaker 12:1e601b176437 292 (snake_pos.x + 1 == b_pos.x + 22) ||
AhmedPlaymaker 12:1e601b176437 293 (snake_pos.x + 1 == b_pos.x + 23) ||
AhmedPlaymaker 12:1e601b176437 294 (snake_pos.x + 1 == b_pos.x + 24) ||
AhmedPlaymaker 12:1e601b176437 295 (snake_pos.x + 1 == b_pos.x + 25) ||
AhmedPlaymaker 12:1e601b176437 296 (snake_pos.x + 1 == b_pos.x + 26) ||
AhmedPlaymaker 12:1e601b176437 297 (snake_pos.x + 1 == b_pos.x + 27) ||
AhmedPlaymaker 12:1e601b176437 298 (snake_pos.x + 1 == b_pos.x + 28) ||
AhmedPlaymaker 12:1e601b176437 299 (snake_pos.x + 1 == b_pos.x + 29) ||
AhmedPlaymaker 12:1e601b176437 300 (snake_pos.x + 1 == b_pos.x + 30) ||
AhmedPlaymaker 12:1e601b176437 301 (snake_pos.x + 1 == b_pos.x + 31) ||
AhmedPlaymaker 12:1e601b176437 302 (snake_pos.x + 1 == b_pos.x + 32) ||
AhmedPlaymaker 12:1e601b176437 303 (snake_pos.x + 1 == b_pos.x + 33) ||
AhmedPlaymaker 12:1e601b176437 304 (snake_pos.x + 1 == b_pos.x + 34))
AhmedPlaymaker 12:1e601b176437 305 ) {
AhmedPlaymaker 12:1e601b176437 306
AhmedPlaymaker 12:1e601b176437 307 //printf("snake collision working \n");
AhmedPlaymaker 12:1e601b176437 308 //audio feedback
AhmedPlaymaker 13:9785f2404045 309 if(blocknum > 0) {
AhmedPlaymaker 12:1e601b176437 310 b_pos.y = 0;
AhmedPlaymaker 12:1e601b176437 311 }
AhmedPlaymaker 12:1e601b176437 312 srn = 1;
AhmedPlaymaker 12:1e601b176437 313 blocknum = b_number[srn];
AhmedPlaymaker 12:1e601b176437 314 send=1;
AhmedPlaymaker 12:1e601b176437 315 blocknum-=1;
AhmedPlaymaker 13:9785f2404045 316 if(blocknum >= 0) { // to make sure that snake doesn't decrease in length if number on the block is less than 1;
AhmedPlaymaker 18:b391caa5754c 317 speed = 2;
AhmedPlaymaker 12:1e601b176437 318 length-=1;
AhmedPlaymaker 13:9785f2404045 319 pad.tone(1000.0,0.1);
AhmedPlaymaker 18:b391caa5754c 320 wait(0.05);
AhmedPlaymaker 18:b391caa5754c 321 }
AhmedPlaymaker 18:b391caa5754c 322 else {
AhmedPlaymaker 18:b391caa5754c 323 speed = 1;
AhmedPlaymaker 12:1e601b176437 324 }
AhmedPlaymaker 12:1e601b176437 325
AhmedPlaymaker 12:1e601b176437 326 }
AhmedPlaymaker 12:1e601b176437 327
AhmedPlaymaker 12:1e601b176437 328 if (
AhmedPlaymaker 12:1e601b176437 329 ((snake_pos.y == b_pos.y + 10) ||
AhmedPlaymaker 12:1e601b176437 330 (snake_pos.y == b_pos.y + 10) ||
AhmedPlaymaker 12:1e601b176437 331 (snake_pos.y == b_pos.y + 10)) &&
AhmedPlaymaker 12:1e601b176437 332 ((snake_pos.x + 1 == b_pos.x + 35) ||
AhmedPlaymaker 12:1e601b176437 333 (snake_pos.x + 1 == b_pos.x + 36) ||
AhmedPlaymaker 12:1e601b176437 334 (snake_pos.x + 1 == b_pos.x + 37) ||
AhmedPlaymaker 12:1e601b176437 335 (snake_pos.x + 1 == b_pos.x + 38) ||
AhmedPlaymaker 12:1e601b176437 336 (snake_pos.x + 1 == b_pos.x + 39) ||
AhmedPlaymaker 12:1e601b176437 337 (snake_pos.x + 1 == b_pos.x + 40) ||
AhmedPlaymaker 12:1e601b176437 338 (snake_pos.x + 1 == b_pos.x + 41) ||
AhmedPlaymaker 12:1e601b176437 339 (snake_pos.x + 1 == b_pos.x + 42) ||
AhmedPlaymaker 12:1e601b176437 340 (snake_pos.x + 1 == b_pos.x + 43) ||
AhmedPlaymaker 12:1e601b176437 341 (snake_pos.x + 1 == b_pos.x + 44) ||
AhmedPlaymaker 12:1e601b176437 342 (snake_pos.x + 1 == b_pos.x + 45) ||
AhmedPlaymaker 12:1e601b176437 343 (snake_pos.x + 1 == b_pos.x + 46) ||
AhmedPlaymaker 12:1e601b176437 344 (snake_pos.x + 1 == b_pos.x + 47) ||
AhmedPlaymaker 12:1e601b176437 345 (snake_pos.x + 1 == b_pos.x + 48) ||
AhmedPlaymaker 12:1e601b176437 346 (snake_pos.x + 1 == b_pos.x + 49) ||
AhmedPlaymaker 12:1e601b176437 347 (snake_pos.x + 1 == b_pos.x + 50))
AhmedPlaymaker 12:1e601b176437 348 ) {
AhmedPlaymaker 12:1e601b176437 349
AhmedPlaymaker 12:1e601b176437 350 //printf("snake collision working \n");
AhmedPlaymaker 12:1e601b176437 351 //audio feedback
AhmedPlaymaker 13:9785f2404045 352 if(blocknum > 0) {
AhmedPlaymaker 12:1e601b176437 353 b_pos.y = 0;
AhmedPlaymaker 12:1e601b176437 354 }
AhmedPlaymaker 12:1e601b176437 355 srn = 2;
AhmedPlaymaker 12:1e601b176437 356 blocknum = b_number[srn];
AhmedPlaymaker 12:1e601b176437 357 send=1;
AhmedPlaymaker 12:1e601b176437 358 blocknum-=1;
AhmedPlaymaker 13:9785f2404045 359 if(blocknum >= 0) { // to make sure that snake doesn't decrease in length if number on the block is less than 1;
AhmedPlaymaker 18:b391caa5754c 360 speed = 2;
AhmedPlaymaker 12:1e601b176437 361 length-=1;
AhmedPlaymaker 13:9785f2404045 362 pad.tone(1000.0,0.1);
AhmedPlaymaker 18:b391caa5754c 363 wait(0.05);
AhmedPlaymaker 18:b391caa5754c 364 }
AhmedPlaymaker 18:b391caa5754c 365 else {
AhmedPlaymaker 18:b391caa5754c 366 speed = 1;
AhmedPlaymaker 12:1e601b176437 367 }
AhmedPlaymaker 12:1e601b176437 368
AhmedPlaymaker 12:1e601b176437 369 }
AhmedPlaymaker 12:1e601b176437 370
AhmedPlaymaker 12:1e601b176437 371 if (
AhmedPlaymaker 12:1e601b176437 372 ((snake_pos.y == b_pos.y + 10) ||
AhmedPlaymaker 12:1e601b176437 373 (snake_pos.y == b_pos.y + 10) ||
AhmedPlaymaker 12:1e601b176437 374 (snake_pos.y == b_pos.y + 10)) &&
AhmedPlaymaker 12:1e601b176437 375 ((snake_pos.x + 1 == b_pos.x + 51) ||
AhmedPlaymaker 12:1e601b176437 376 (snake_pos.x + 1 == b_pos.x + 52) ||
AhmedPlaymaker 12:1e601b176437 377 (snake_pos.x + 1 == b_pos.x + 53) ||
AhmedPlaymaker 12:1e601b176437 378 (snake_pos.x + 1 == b_pos.x + 54) ||
AhmedPlaymaker 12:1e601b176437 379 (snake_pos.x + 1 == b_pos.x + 55) ||
AhmedPlaymaker 12:1e601b176437 380 (snake_pos.x + 1 == b_pos.x + 56) ||
AhmedPlaymaker 12:1e601b176437 381 (snake_pos.x + 1 == b_pos.x + 57) ||
AhmedPlaymaker 12:1e601b176437 382 (snake_pos.x + 1 == b_pos.x + 58) ||
AhmedPlaymaker 12:1e601b176437 383 (snake_pos.x + 1 == b_pos.x + 59) ||
AhmedPlaymaker 12:1e601b176437 384 (snake_pos.x + 1 == b_pos.x + 60) ||
AhmedPlaymaker 12:1e601b176437 385 (snake_pos.x + 1 == b_pos.x + 61) ||
AhmedPlaymaker 12:1e601b176437 386 (snake_pos.x + 1 == b_pos.x + 62) ||
AhmedPlaymaker 12:1e601b176437 387 (snake_pos.x + 1 == b_pos.x + 63) ||
AhmedPlaymaker 12:1e601b176437 388 (snake_pos.x + 1 == b_pos.x + 64) ||
AhmedPlaymaker 12:1e601b176437 389 (snake_pos.x + 1 == b_pos.x + 65) ||
AhmedPlaymaker 12:1e601b176437 390 (snake_pos.x + 1 == b_pos.x + 66))
AhmedPlaymaker 12:1e601b176437 391 ) {
AhmedPlaymaker 12:1e601b176437 392
AhmedPlaymaker 12:1e601b176437 393 //printf("snake collision working \n");
AhmedPlaymaker 12:1e601b176437 394 //audio feedback
AhmedPlaymaker 13:9785f2404045 395 if(blocknum > 0) {
AhmedPlaymaker 12:1e601b176437 396 b_pos.y = 0;
AhmedPlaymaker 12:1e601b176437 397 }
AhmedPlaymaker 12:1e601b176437 398 srn = 3;
AhmedPlaymaker 12:1e601b176437 399 blocknum = b_number[srn];
AhmedPlaymaker 12:1e601b176437 400 send=1;
AhmedPlaymaker 12:1e601b176437 401 blocknum-=1;
AhmedPlaymaker 13:9785f2404045 402 if(blocknum >= 0) { // to make sure that snake doesn't decrease in length if number on the block is less than 1;
AhmedPlaymaker 12:1e601b176437 403 length-=1;
AhmedPlaymaker 13:9785f2404045 404 pad.tone(1000.0,0.1);
AhmedPlaymaker 18:b391caa5754c 405 wait(0.05);
AhmedPlaymaker 18:b391caa5754c 406 }
AhmedPlaymaker 18:b391caa5754c 407 else {
AhmedPlaymaker 18:b391caa5754c 408 speed = 1;
AhmedPlaymaker 12:1e601b176437 409 }
AhmedPlaymaker 12:1e601b176437 410
AhmedPlaymaker 12:1e601b176437 411 }
AhmedPlaymaker 12:1e601b176437 412
AhmedPlaymaker 12:1e601b176437 413 if (
AhmedPlaymaker 12:1e601b176437 414 ((snake_pos.y == b_pos.y + 10) ||
AhmedPlaymaker 12:1e601b176437 415 (snake_pos.y == b_pos.y + 10) ||
AhmedPlaymaker 12:1e601b176437 416 (snake_pos.y == b_pos.y + 10)) &&
AhmedPlaymaker 12:1e601b176437 417 ((snake_pos.x + 1 == b_pos.x + 67) ||
AhmedPlaymaker 12:1e601b176437 418 (snake_pos.x + 1 == b_pos.x + 68) ||
AhmedPlaymaker 12:1e601b176437 419 (snake_pos.x + 1 == b_pos.x + 69) ||
AhmedPlaymaker 12:1e601b176437 420 (snake_pos.x + 1 == b_pos.x + 70) ||
AhmedPlaymaker 12:1e601b176437 421 (snake_pos.x + 1 == b_pos.x + 71) ||
AhmedPlaymaker 12:1e601b176437 422 (snake_pos.x + 1 == b_pos.x + 72) ||
AhmedPlaymaker 12:1e601b176437 423 (snake_pos.x + 1 == b_pos.x + 73) ||
AhmedPlaymaker 12:1e601b176437 424 (snake_pos.x + 1 == b_pos.x + 74) ||
AhmedPlaymaker 12:1e601b176437 425 (snake_pos.x + 1 == b_pos.x + 75) ||
AhmedPlaymaker 12:1e601b176437 426 (snake_pos.x + 1 == b_pos.x + 76) ||
AhmedPlaymaker 12:1e601b176437 427 (snake_pos.x + 1 == b_pos.x + 77) ||
AhmedPlaymaker 12:1e601b176437 428 (snake_pos.x + 1 == b_pos.x + 78) ||
AhmedPlaymaker 12:1e601b176437 429 (snake_pos.x + 1 == b_pos.x + 79) ||
AhmedPlaymaker 12:1e601b176437 430 (snake_pos.x + 1 == b_pos.x + 80) ||
AhmedPlaymaker 12:1e601b176437 431 (snake_pos.x + 1 == b_pos.x + 81) ||
AhmedPlaymaker 12:1e601b176437 432 (snake_pos.x + 1 == b_pos.x + 82) ||
AhmedPlaymaker 12:1e601b176437 433 (snake_pos.x + 1 == b_pos.x + 83))
AhmedPlaymaker 12:1e601b176437 434 ) {
AhmedPlaymaker 12:1e601b176437 435
AhmedPlaymaker 12:1e601b176437 436 //printf("snake collision working \n");
AhmedPlaymaker 12:1e601b176437 437 //audio feedback
AhmedPlaymaker 13:9785f2404045 438 if(blocknum > 0) {
AhmedPlaymaker 12:1e601b176437 439 b_pos.y = 0;
AhmedPlaymaker 12:1e601b176437 440 }
AhmedPlaymaker 12:1e601b176437 441 srn = 4;
AhmedPlaymaker 12:1e601b176437 442 blocknum = b_number[srn];
AhmedPlaymaker 12:1e601b176437 443 send=1;
AhmedPlaymaker 12:1e601b176437 444 blocknum-=1;
AhmedPlaymaker 13:9785f2404045 445 if(blocknum >= 0) { // to make sure that snake doesn't decrease in length if number on the block is less than 1;
AhmedPlaymaker 18:b391caa5754c 446 speed = 2;
AhmedPlaymaker 12:1e601b176437 447 length-=1;
AhmedPlaymaker 13:9785f2404045 448 pad.tone(1000.0,0.1);
AhmedPlaymaker 18:b391caa5754c 449 wait(0.05);
AhmedPlaymaker 18:b391caa5754c 450 }
AhmedPlaymaker 18:b391caa5754c 451 else {
AhmedPlaymaker 18:b391caa5754c 452 speed = 1;
AhmedPlaymaker 12:1e601b176437 453 }
AhmedPlaymaker 12:1e601b176437 454 }
AhmedPlaymaker 12:1e601b176437 455
AhmedPlaymaker 13:9785f2404045 456 }
AhmedPlaymaker 13:9785f2404045 457
AhmedPlaymaker 13:9785f2404045 458 void SnakevsBlock::CheckSnakeBlockSidesCollision(Gamepad &pad, Direction d)
AhmedPlaymaker 13:9785f2404045 459 {
AhmedPlaymaker 13:9785f2404045 460 //Obtains all required coordinates.
AhmedPlaymaker 13:9785f2404045 461 Vector2D b_pos = _b.get_pos();
AhmedPlaymaker 24:1c118b071430 462 snake_pos[0] = _s.get_pos(length);
AhmedPlaymaker 24:1c118b071430 463 snake_pos[1] = _s.get_pos_before1(length);
AhmedPlaymaker 24:1c118b071430 464 snake_pos[2] = _s.get_pos_before2(length);
AhmedPlaymaker 24:1c118b071430 465 snake_pos[3] = _s.get_pos_before3(length);
AhmedPlaymaker 24:1c118b071430 466 snake_pos[4] = _s.get_pos_before4(length);
AhmedPlaymaker 24:1c118b071430 467 snake_pos[5] = _s.get_pos_before5(length);
AhmedPlaymaker 24:1c118b071430 468 snake_pos[6] = _s.get_pos_before6(length);
AhmedPlaymaker 24:1c118b071430 469 snake_pos[7] = _s.get_pos_before7(length);
AhmedPlaymaker 24:1c118b071430 470 snake_pos[8] = _s.get_pos_before8(length);
AhmedPlaymaker 24:1c118b071430 471 snake_pos[9] = _s.get_pos_before9(length);
AhmedPlaymaker 24:1c118b071430 472 snake_pos[10] = _s.get_pos_before10(length);
AhmedPlaymaker 24:1c118b071430 473 snake_pos[11] = _s.get_pos_before11(length);
AhmedPlaymaker 24:1c118b071430 474 snake_pos[12] = _s.get_pos_before12(length);
AhmedPlaymaker 24:1c118b071430 475 snake_pos[13] = _s.get_pos_before13(length);
AhmedPlaymaker 24:1c118b071430 476 snake_pos[14] = _s.get_pos_before14(length);
AhmedPlaymaker 13:9785f2404045 477
AhmedPlaymaker 13:9785f2404045 478 //If statements check if the snake sprite has collided with any
AhmedPlaymaker 13:9785f2404045 479 //of the blocks' sides and then stop the snake moving in x axis
AhmedPlaymaker 13:9785f2404045 480
AhmedPlaymaker 24:1c118b071430 481 speed = 1;
AhmedPlaymaker 24:1c118b071430 482 for(int i=0; i<=14; i++) {
AhmedPlaymaker 24:1c118b071430 483 b[i] = 1;
AhmedPlaymaker 24:1c118b071430 484 }
AhmedPlaymaker 23:592345a70329 485
AhmedPlaymaker 13:9785f2404045 486 //For West
AhmedPlaymaker 23:592345a70329 487 for(int i=0; i<=14; i++) {
AhmedPlaymaker 23:592345a70329 488 if (
AhmedPlaymaker 24:1c118b071430 489 ((((snake_pos[i].y == b_pos.y + 1) ||
AhmedPlaymaker 24:1c118b071430 490 (snake_pos[i].y == b_pos.y + 1) ||
AhmedPlaymaker 24:1c118b071430 491 (snake_pos[i].y == b_pos.y + 2) ||
AhmedPlaymaker 24:1c118b071430 492 (snake_pos[i].y == b_pos.y + 3) ||
AhmedPlaymaker 24:1c118b071430 493 (snake_pos[i].y == b_pos.y + 4) ||
AhmedPlaymaker 24:1c118b071430 494 (snake_pos[i].y == b_pos.y + 5) ||
AhmedPlaymaker 24:1c118b071430 495 (snake_pos[i].y == b_pos.y + 6) ||
AhmedPlaymaker 24:1c118b071430 496 (snake_pos[i].y == b_pos.y + 7) ||
AhmedPlaymaker 24:1c118b071430 497 (snake_pos[i].y == b_pos.y + 8) ||
AhmedPlaymaker 24:1c118b071430 498 (snake_pos[i].y == b_pos.y + 9) ||
AhmedPlaymaker 24:1c118b071430 499 (snake_pos[i].y == b_pos.y + 10) ||
AhmedPlaymaker 24:1c118b071430 500 (snake_pos[i].y + 1 == b_pos.y) ||
AhmedPlaymaker 24:1c118b071430 501 (snake_pos[i].y + 1 == b_pos.y + 1) ||
AhmedPlaymaker 24:1c118b071430 502 (snake_pos[i].y + 1 == b_pos.y + 2) ||
AhmedPlaymaker 24:1c118b071430 503 (snake_pos[i].y + 1 == b_pos.y + 3) ||
AhmedPlaymaker 24:1c118b071430 504 (snake_pos[i].y + 1 == b_pos.y + 4) ||
AhmedPlaymaker 24:1c118b071430 505 (snake_pos[i].y + 1 == b_pos.y + 5) ||
AhmedPlaymaker 24:1c118b071430 506 (snake_pos[i].y + 1 == b_pos.y + 6) ||
AhmedPlaymaker 24:1c118b071430 507 (snake_pos[i].y + 1 == b_pos.y + 7) ||
AhmedPlaymaker 24:1c118b071430 508 (snake_pos[i].y + 1 == b_pos.y + 8) ||
AhmedPlaymaker 24:1c118b071430 509 (snake_pos[i].y + 1 == b_pos.y + 9) ||
AhmedPlaymaker 24:1c118b071430 510 (snake_pos[i].y + 1 == b_pos.y + 10) ||
AhmedPlaymaker 24:1c118b071430 511 (snake_pos[i].y + 2 == b_pos.y) ||
AhmedPlaymaker 24:1c118b071430 512 (snake_pos[i].y + 2 == b_pos.y + 1) ||
AhmedPlaymaker 24:1c118b071430 513 (snake_pos[i].y + 2 == b_pos.y + 2) ||
AhmedPlaymaker 24:1c118b071430 514 (snake_pos[i].y + 2 == b_pos.y + 3) ||
AhmedPlaymaker 24:1c118b071430 515 (snake_pos[i].y + 2 == b_pos.y + 4) ||
AhmedPlaymaker 24:1c118b071430 516 (snake_pos[i].y + 2 == b_pos.y + 5) ||
AhmedPlaymaker 24:1c118b071430 517 (snake_pos[i].y + 2 == b_pos.y + 6) ||
AhmedPlaymaker 24:1c118b071430 518 (snake_pos[i].y + 2 == b_pos.y + 7) ||
AhmedPlaymaker 24:1c118b071430 519 (snake_pos[i].y + 2 == b_pos.y + 8) ||
AhmedPlaymaker 24:1c118b071430 520 (snake_pos[i].y + 2 == b_pos.y + 9) ||
AhmedPlaymaker 24:1c118b071430 521 (snake_pos[i].y + 2 == b_pos.y + 10)) &&
AhmedPlaymaker 24:1c118b071430 522 ((snake_pos[i].x == b_pos.x + 4) || //W
AhmedPlaymaker 24:1c118b071430 523 (snake_pos[i].x == b_pos.x + 36) || //W
AhmedPlaymaker 24:1c118b071430 524 (snake_pos[i].x == b_pos.x + 68) || //W
AhmedPlaymaker 24:1c118b071430 525 (snake_pos[i].x + 1 == b_pos.x + 4) || //W
AhmedPlaymaker 24:1c118b071430 526 (snake_pos[i].x + 1 == b_pos.x + 36) || //W
AhmedPlaymaker 24:1c118b071430 527 (snake_pos[i].x + 1 == b_pos.x + 68) || //W
AhmedPlaymaker 24:1c118b071430 528 (snake_pos[i].x + 2 == b_pos.x + 4) || //W
AhmedPlaymaker 24:1c118b071430 529 (snake_pos[i].x + 2 == b_pos.x + 36) || //W
AhmedPlaymaker 24:1c118b071430 530 (snake_pos[i].x + 2 == b_pos.x + 68) || //W
AhmedPlaymaker 24:1c118b071430 531 (snake_pos[i].x == b_pos.x + 20) || //W
AhmedPlaymaker 24:1c118b071430 532 (snake_pos[i].x == b_pos.x + 52) || //W
AhmedPlaymaker 24:1c118b071430 533 (snake_pos[i].x == b_pos.x + 84) || //W
AhmedPlaymaker 24:1c118b071430 534 (snake_pos[i].x + 1 == b_pos.x + 20) || //W
AhmedPlaymaker 24:1c118b071430 535 (snake_pos[i].x + 1 == b_pos.x + 52) || //W
AhmedPlaymaker 24:1c118b071430 536 (snake_pos[i].x + 1 == b_pos.x + 84) || //W
AhmedPlaymaker 24:1c118b071430 537 (snake_pos[i].x + 2 == b_pos.x + 20) || //W
AhmedPlaymaker 24:1c118b071430 538 (snake_pos[i].x + 2 == b_pos.x + 52) || //W
AhmedPlaymaker 24:1c118b071430 539 (snake_pos[i].x + 2 == b_pos.x + 84)))&&(d != E)&&(length > i)) //W
AhmedPlaymaker 23:592345a70329 540 ) {
AhmedPlaymaker 24:1c118b071430 541 //code makes sure that the colliding part doesn't move in x axis.
AhmedPlaymaker 24:1c118b071430 542 for(int snake_beed_num=0; snake_beed_num<=15; snake_beed_num++) {
AhmedPlaymaker 24:1c118b071430 543 if(length == snake_beed_num + i) {
AhmedPlaymaker 24:1c118b071430 544 b[snake_beed_num - 1] = 0;
AhmedPlaymaker 24:1c118b071430 545 }
AhmedPlaymaker 23:592345a70329 546 }
AhmedPlaymaker 14:0dfe67f9c97e 547 }
AhmedPlaymaker 15:f4d069da093d 548
AhmedPlaymaker 23:592345a70329 549 //for East
AhmedPlaymaker 24:1c118b071430 550 if (
AhmedPlaymaker 24:1c118b071430 551 ((((snake_pos[i].y == b_pos.y + 1) ||
AhmedPlaymaker 24:1c118b071430 552 (snake_pos[i].y == b_pos.y + 1) ||
AhmedPlaymaker 24:1c118b071430 553 (snake_pos[i].y == b_pos.y + 2) ||
AhmedPlaymaker 24:1c118b071430 554 (snake_pos[i].y == b_pos.y + 3) ||
AhmedPlaymaker 24:1c118b071430 555 (snake_pos[i].y == b_pos.y + 4) ||
AhmedPlaymaker 24:1c118b071430 556 (snake_pos[i].y == b_pos.y + 5) ||
AhmedPlaymaker 24:1c118b071430 557 (snake_pos[i].y == b_pos.y + 6) ||
AhmedPlaymaker 24:1c118b071430 558 (snake_pos[i].y == b_pos.y + 7) ||
AhmedPlaymaker 24:1c118b071430 559 (snake_pos[i].y == b_pos.y + 8) ||
AhmedPlaymaker 24:1c118b071430 560 (snake_pos[i].y == b_pos.y + 9) ||
AhmedPlaymaker 24:1c118b071430 561 (snake_pos[i].y == b_pos.y + 10) ||
AhmedPlaymaker 24:1c118b071430 562 (snake_pos[i].y + 1 == b_pos.y) ||
AhmedPlaymaker 24:1c118b071430 563 (snake_pos[i].y + 1 == b_pos.y + 1) ||
AhmedPlaymaker 24:1c118b071430 564 (snake_pos[i].y + 1 == b_pos.y + 2) ||
AhmedPlaymaker 24:1c118b071430 565 (snake_pos[i].y + 1 == b_pos.y + 3) ||
AhmedPlaymaker 24:1c118b071430 566 (snake_pos[i].y + 1 == b_pos.y + 4) ||
AhmedPlaymaker 24:1c118b071430 567 (snake_pos[i].y + 1 == b_pos.y + 5) ||
AhmedPlaymaker 24:1c118b071430 568 (snake_pos[i].y + 1 == b_pos.y + 6) ||
AhmedPlaymaker 24:1c118b071430 569 (snake_pos[i].y + 1 == b_pos.y + 7) ||
AhmedPlaymaker 24:1c118b071430 570 (snake_pos[i].y + 1 == b_pos.y + 8) ||
AhmedPlaymaker 24:1c118b071430 571 (snake_pos[i].y + 1 == b_pos.y + 9) ||
AhmedPlaymaker 24:1c118b071430 572 (snake_pos[i].y + 1 == b_pos.y + 10) ||
AhmedPlaymaker 24:1c118b071430 573 (snake_pos[i].y + 2 == b_pos.y) ||
AhmedPlaymaker 24:1c118b071430 574 (snake_pos[i].y + 2 == b_pos.y + 1) ||
AhmedPlaymaker 24:1c118b071430 575 (snake_pos[i].y + 2 == b_pos.y + 2) ||
AhmedPlaymaker 24:1c118b071430 576 (snake_pos[i].y + 2 == b_pos.y + 3) ||
AhmedPlaymaker 24:1c118b071430 577 (snake_pos[i].y + 2 == b_pos.y + 4) ||
AhmedPlaymaker 24:1c118b071430 578 (snake_pos[i].y + 2 == b_pos.y + 5) ||
AhmedPlaymaker 24:1c118b071430 579 (snake_pos[i].y + 2 == b_pos.y + 6) ||
AhmedPlaymaker 24:1c118b071430 580 (snake_pos[i].y + 2 == b_pos.y + 7) ||
AhmedPlaymaker 24:1c118b071430 581 (snake_pos[i].y + 2 == b_pos.y + 8) ||
AhmedPlaymaker 24:1c118b071430 582 (snake_pos[i].y + 2 == b_pos.y + 9) ||
AhmedPlaymaker 24:1c118b071430 583 (snake_pos[i].y + 2 == b_pos.y + 10)) &&
AhmedPlaymaker 24:1c118b071430 584 ((snake_pos[i].x == b_pos.x + 18) || //E
AhmedPlaymaker 24:1c118b071430 585 (snake_pos[i].x == b_pos.x + 50) || //E
AhmedPlaymaker 24:1c118b071430 586 (snake_pos[i].x == b_pos.x + 82) || //E
AhmedPlaymaker 24:1c118b071430 587 (snake_pos[i].x + 1 == b_pos.x + 18) || //E
AhmedPlaymaker 24:1c118b071430 588 (snake_pos[i].x + 1 == b_pos.x + 50) || //E
AhmedPlaymaker 24:1c118b071430 589 (snake_pos[i].x + 1 == b_pos.x + 82) || //E
AhmedPlaymaker 24:1c118b071430 590 (snake_pos[i].x + 2 == b_pos.x + 18) || //E
AhmedPlaymaker 24:1c118b071430 591 (snake_pos[i].x + 2 == b_pos.x + 50) || //E
AhmedPlaymaker 24:1c118b071430 592 (snake_pos[i].x + 2 == b_pos.x + 82) || //E
AhmedPlaymaker 24:1c118b071430 593 (snake_pos[i].x == b_pos.x + 2) || //E
AhmedPlaymaker 24:1c118b071430 594 (snake_pos[i].x == b_pos.x + 34) || //E
AhmedPlaymaker 24:1c118b071430 595 (snake_pos[i].x == b_pos.x + 66) || //E
AhmedPlaymaker 24:1c118b071430 596 (snake_pos[i].x + 1 == b_pos.x + 2) || //E
AhmedPlaymaker 24:1c118b071430 597 (snake_pos[i].x + 1 == b_pos.x + 34) || //E
AhmedPlaymaker 24:1c118b071430 598 (snake_pos[i].x + 1 == b_pos.x + 66) || //E
AhmedPlaymaker 24:1c118b071430 599 (snake_pos[i].x + 2 == b_pos.x + 2) || //E
AhmedPlaymaker 24:1c118b071430 600 (snake_pos[i].x + 2 == b_pos.x + 34) || //E
AhmedPlaymaker 24:1c118b071430 601 (snake_pos[i].x + 2 == b_pos.x + 66)))&&(d != W)) //E
AhmedPlaymaker 24:1c118b071430 602 ) {
AhmedPlaymaker 24:1c118b071430 603 //add some code that it doesn't move through
AhmedPlaymaker 24:1c118b071430 604 speed = 0;
AhmedPlaymaker 24:1c118b071430 605 }
AhmedPlaymaker 15:f4d069da093d 606 }
AhmedPlaymaker 22:ee698f66146f 607 }