Snake vs Block Game to be run upon K64F.

Dependencies:   mbed

Committer:
AhmedPlaymaker
Date:
Tue Apr 02 17:06:22 2019 +0000
Revision:
12:1e601b176437
Parent:
10:751bd953fa27
Child:
13:9785f2404045
Completed the snake and block collision function, the blocks decrease in number as the snake collides while the snake decreases in length

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 12:1e601b176437 17 foodbuff = 0;
AhmedPlaymaker 12:1e601b176437 18 send=0;
AhmedPlaymaker 12:1e601b176437 19 //memory = 0;
AhmedPlaymaker 7:48ba87cd79b5 20 }
AhmedPlaymaker 7:48ba87cd79b5 21
AhmedPlaymaker 7:48ba87cd79b5 22
AhmedPlaymaker 7:48ba87cd79b5 23
AhmedPlaymaker 7:48ba87cd79b5 24 void SnakevsBlock::read_input(Gamepad &pad)
AhmedPlaymaker 7:48ba87cd79b5 25 {
AhmedPlaymaker 7:48ba87cd79b5 26 _d = pad.get_direction(); //Obtains Direction pushed towards on Joystick.
AhmedPlaymaker 7:48ba87cd79b5 27 _mag = pad.get_mag(); //Obtains Magnitude of Joystick.
AhmedPlaymaker 7:48ba87cd79b5 28 }
AhmedPlaymaker 7:48ba87cd79b5 29
AhmedPlaymaker 7:48ba87cd79b5 30 void SnakevsBlock::draw(N5110 &lcd, Gamepad &pad)
AhmedPlaymaker 7:48ba87cd79b5 31 {
AhmedPlaymaker 9:d1d79d4ee673 32 _s.draw(lcd, length); //Draws the Snake. //Make these snake buffs relative to the snake drops which in turn relate to the game speed
AhmedPlaymaker 9:d1d79d4ee673 33 if(foodbuff >=0) {
AhmedPlaymaker 9:d1d79d4ee673 34 _f.draw(lcd); //Draws the first food.
AhmedPlaymaker 9:d1d79d4ee673 35 if(foodbuff >=50) {
AhmedPlaymaker 9:d1d79d4ee673 36 _ff.draw(lcd); //Draws the second food.
AhmedPlaymaker 9:d1d79d4ee673 37 if(foodbuff >=80) {
AhmedPlaymaker 9:d1d79d4ee673 38 _fff.draw(lcd); //Draws the third food.
AhmedPlaymaker 9:d1d79d4ee673 39 }
AhmedPlaymaker 9:d1d79d4ee673 40 }
AhmedPlaymaker 9:d1d79d4ee673 41 foodbuff +=1;
AhmedPlaymaker 10:751bd953fa27 42 if(foodbuff == 110) {
AhmedPlaymaker 10:751bd953fa27 43 foodbuff = 110;
AhmedPlaymaker 9:d1d79d4ee673 44 }
AhmedPlaymaker 9:d1d79d4ee673 45 }
AhmedPlaymaker 12:1e601b176437 46 send = _b.draw(lcd, length, blocknum, srn);
AhmedPlaymaker 7:48ba87cd79b5 47
AhmedPlaymaker 7:48ba87cd79b5 48 //Code to print length on game screen.
AhmedPlaymaker 7:48ba87cd79b5 49 char bufferscore[14];
AhmedPlaymaker 7:48ba87cd79b5 50 sprintf(bufferscore,"%d",length);
AhmedPlaymaker 7:48ba87cd79b5 51 lcd.printString(bufferscore,1,0);
AhmedPlaymaker 7:48ba87cd79b5 52
AhmedPlaymaker 7:48ba87cd79b5 53 if(pad.check_event(Gamepad::BACK_PRESSED)){ //Waits for Back button to be pressed.
AhmedPlaymaker 7:48ba87cd79b5 54
AhmedPlaymaker 7:48ba87cd79b5 55 NVIC_SystemReset(); //Software Reset.
AhmedPlaymaker 7:48ba87cd79b5 56
AhmedPlaymaker 7:48ba87cd79b5 57 }
AhmedPlaymaker 7:48ba87cd79b5 58
AhmedPlaymaker 7:48ba87cd79b5 59
AhmedPlaymaker 7:48ba87cd79b5 60 }
AhmedPlaymaker 7:48ba87cd79b5 61
AhmedPlaymaker 7:48ba87cd79b5 62
AhmedPlaymaker 7:48ba87cd79b5 63 void SnakevsBlock::update(Gamepad &pad) //Updates objects on screen.
AhmedPlaymaker 7:48ba87cd79b5 64 {
AhmedPlaymaker 12:1e601b176437 65 CheckSnakeFoodCollision(pad); //Function checks for when the snake collides with it's food.
AhmedPlaymaker 12:1e601b176437 66 CheckSnakeBlockCollision(pad); //Function checks for when the snake collides with any of the blocks.
AhmedPlaymaker 9:d1d79d4ee673 67 _s.update(_d,_mag, length);
AhmedPlaymaker 9:d1d79d4ee673 68 _f.update();
AhmedPlaymaker 9:d1d79d4ee673 69 _ff.update();
AhmedPlaymaker 9:d1d79d4ee673 70 _fff.update();
AhmedPlaymaker 12:1e601b176437 71 _b.update(blocknum, srn, send);
AhmedPlaymaker 7:48ba87cd79b5 72 }
AhmedPlaymaker 7:48ba87cd79b5 73
AhmedPlaymaker 7:48ba87cd79b5 74 void SnakevsBlock::get_pos()
AhmedPlaymaker 7:48ba87cd79b5 75 {
AhmedPlaymaker 9:d1d79d4ee673 76 Vector2D snake_pos = _s.get_pos(length);
AhmedPlaymaker 7:48ba87cd79b5 77 //printf("player pos = %f %f \n", player_pos.x, player_pos.y); //top left of player sprite
AhmedPlaymaker 7:48ba87cd79b5 78 // 81.000000 0.000000 top right
AhmedPlaymaker 7:48ba87cd79b5 79 // 0.000000 0.000000 is top left
AhmedPlaymaker 7:48ba87cd79b5 80 // 81.000000 45.000000 bottom right
AhmedPlaymaker 7:48ba87cd79b5 81 snakex = snake_pos.x;
AhmedPlaymaker 7:48ba87cd79b5 82 snakey = snake_pos.y;
AhmedPlaymaker 7:48ba87cd79b5 83 //printf("snakexy in GAME = %d %d \n", snakex, snakey);
AhmedPlaymaker 7:48ba87cd79b5 84 }
AhmedPlaymaker 7:48ba87cd79b5 85
AhmedPlaymaker 9:d1d79d4ee673 86
AhmedPlaymaker 9:d1d79d4ee673 87 void SnakevsBlock::CheckSnakeFoodCollision(Gamepad &pad)
AhmedPlaymaker 9:d1d79d4ee673 88 {
AhmedPlaymaker 9:d1d79d4ee673 89 //Obtains all required coordinates.
AhmedPlaymaker 9:d1d79d4ee673 90
AhmedPlaymaker 9:d1d79d4ee673 91
AhmedPlaymaker 9:d1d79d4ee673 92 Vector2D f_pos = _f.get_pos();
AhmedPlaymaker 9:d1d79d4ee673 93 Vector2D ff_pos = _ff.get_pos();
AhmedPlaymaker 9:d1d79d4ee673 94 Vector2D fff_pos = _fff.get_pos();
AhmedPlaymaker 9:d1d79d4ee673 95 Vector2D snake_pos = _s.get_pos(length);
AhmedPlaymaker 9:d1d79d4ee673 96
AhmedPlaymaker 9:d1d79d4ee673 97 //If statements check if the snake sprite has collided with any
AhmedPlaymaker 9:d1d79d4ee673 98 //of the three food sprites, if so then the food location is reset and
AhmedPlaymaker 9:d1d79d4ee673 99 //length of the snake is increased using the length variable.
AhmedPlaymaker 9:d1d79d4ee673 100
AhmedPlaymaker 9:d1d79d4ee673 101 if (
AhmedPlaymaker 9:d1d79d4ee673 102 ((snake_pos.y == f_pos.y) ||
AhmedPlaymaker 9:d1d79d4ee673 103 (snake_pos.y == f_pos.y + 1) ||
AhmedPlaymaker 9:d1d79d4ee673 104 (snake_pos.y == f_pos.y + 2) ||
AhmedPlaymaker 9:d1d79d4ee673 105 (snake_pos.y + 1== f_pos.y) ||
AhmedPlaymaker 9:d1d79d4ee673 106 (snake_pos.y + 1== f_pos.y + 1) ||
AhmedPlaymaker 9:d1d79d4ee673 107 (snake_pos.y + 1== f_pos.y + 2) ||
AhmedPlaymaker 9:d1d79d4ee673 108 (snake_pos.y + 2 == f_pos.y) ||
AhmedPlaymaker 9:d1d79d4ee673 109 (snake_pos.y + 2 == f_pos.y + 1) ||
AhmedPlaymaker 9:d1d79d4ee673 110 (snake_pos.y + 2 == f_pos.y + 2)) &&
AhmedPlaymaker 9:d1d79d4ee673 111 ((snake_pos.x == f_pos.x) ||
AhmedPlaymaker 9:d1d79d4ee673 112 (snake_pos.x == f_pos.x + 1) ||
AhmedPlaymaker 9:d1d79d4ee673 113 (snake_pos.x == f_pos.x + 2) ||
AhmedPlaymaker 9:d1d79d4ee673 114 (snake_pos.x + 1 == f_pos.x) ||
AhmedPlaymaker 9:d1d79d4ee673 115 (snake_pos.x + 1== f_pos.x + 1) ||
AhmedPlaymaker 9:d1d79d4ee673 116 (snake_pos.x + 1 == f_pos.x + 2) ||
AhmedPlaymaker 9:d1d79d4ee673 117 (snake_pos.x + 2 == f_pos.x) ||
AhmedPlaymaker 9:d1d79d4ee673 118 (snake_pos.x + 2 == f_pos.x + 1) ||
AhmedPlaymaker 9:d1d79d4ee673 119 (snake_pos.x + 2 == f_pos.x + 2))
AhmedPlaymaker 9:d1d79d4ee673 120 ) {
AhmedPlaymaker 9:d1d79d4ee673 121
AhmedPlaymaker 9:d1d79d4ee673 122 //printf("snake feast working \n");
AhmedPlaymaker 9:d1d79d4ee673 123 //audio feedback
AhmedPlaymaker 9:d1d79d4ee673 124 pad.tone(1000.0,0.1);
AhmedPlaymaker 9:d1d79d4ee673 125 f_pos.x = rand() % 82;
AhmedPlaymaker 9:d1d79d4ee673 126 f_pos.y = 0;
AhmedPlaymaker 9:d1d79d4ee673 127
AhmedPlaymaker 9:d1d79d4ee673 128 length+=1;
AhmedPlaymaker 9:d1d79d4ee673 129
AhmedPlaymaker 9:d1d79d4ee673 130 }
AhmedPlaymaker 9:d1d79d4ee673 131
AhmedPlaymaker 9:d1d79d4ee673 132 if (
AhmedPlaymaker 9:d1d79d4ee673 133 ((snake_pos.y == ff_pos.y) ||
AhmedPlaymaker 9:d1d79d4ee673 134 (snake_pos.y == ff_pos.y + 1) ||
AhmedPlaymaker 9:d1d79d4ee673 135 (snake_pos.y == ff_pos.y + 2) ||
AhmedPlaymaker 9:d1d79d4ee673 136 (snake_pos.y + 1== ff_pos.y) ||
AhmedPlaymaker 9:d1d79d4ee673 137 (snake_pos.y + 1== ff_pos.y + 1) ||
AhmedPlaymaker 9:d1d79d4ee673 138 (snake_pos.y + 1== ff_pos.y + 2) ||
AhmedPlaymaker 9:d1d79d4ee673 139 (snake_pos.y + 2 == ff_pos.y) ||
AhmedPlaymaker 9:d1d79d4ee673 140 (snake_pos.y + 2 == ff_pos.y + 1) ||
AhmedPlaymaker 9:d1d79d4ee673 141 (snake_pos.y + 2 == ff_pos.y + 2)) &&
AhmedPlaymaker 9:d1d79d4ee673 142 ((snake_pos.x == ff_pos.x) ||
AhmedPlaymaker 9:d1d79d4ee673 143 (snake_pos.x == ff_pos.x + 1) ||
AhmedPlaymaker 9:d1d79d4ee673 144 (snake_pos.x == ff_pos.x + 2) ||
AhmedPlaymaker 9:d1d79d4ee673 145 (snake_pos.x + 1 == ff_pos.x) ||
AhmedPlaymaker 9:d1d79d4ee673 146 (snake_pos.x + 1== ff_pos.x + 1) ||
AhmedPlaymaker 9:d1d79d4ee673 147 (snake_pos.x + 1 == ff_pos.x + 2) ||
AhmedPlaymaker 9:d1d79d4ee673 148 (snake_pos.x + 2 == ff_pos.x) ||
AhmedPlaymaker 9:d1d79d4ee673 149 (snake_pos.x + 2 == ff_pos.x + 1) ||
AhmedPlaymaker 9:d1d79d4ee673 150 (snake_pos.x + 2 == ff_pos.x + 2))
AhmedPlaymaker 9:d1d79d4ee673 151 ) {
AhmedPlaymaker 9:d1d79d4ee673 152
AhmedPlaymaker 9:d1d79d4ee673 153 //printf("snake feast working \n");
AhmedPlaymaker 9:d1d79d4ee673 154 // audio feedback
AhmedPlaymaker 9:d1d79d4ee673 155 pad.tone(1000.0,0.1);
AhmedPlaymaker 9:d1d79d4ee673 156 ff_pos.x = rand() % 82;
AhmedPlaymaker 9:d1d79d4ee673 157 ff_pos.y = 0;
AhmedPlaymaker 9:d1d79d4ee673 158
AhmedPlaymaker 9:d1d79d4ee673 159 length+=1;
AhmedPlaymaker 9:d1d79d4ee673 160
AhmedPlaymaker 9:d1d79d4ee673 161 }
AhmedPlaymaker 9:d1d79d4ee673 162
AhmedPlaymaker 9:d1d79d4ee673 163 if (
AhmedPlaymaker 9:d1d79d4ee673 164 ((snake_pos.y == fff_pos.y) ||
AhmedPlaymaker 9:d1d79d4ee673 165 (snake_pos.y == fff_pos.y + 1) ||
AhmedPlaymaker 9:d1d79d4ee673 166 (snake_pos.y == fff_pos.y + 2) ||
AhmedPlaymaker 9:d1d79d4ee673 167 (snake_pos.y + 1== fff_pos.y) ||
AhmedPlaymaker 9:d1d79d4ee673 168 (snake_pos.y + 1== fff_pos.y + 1) ||
AhmedPlaymaker 9:d1d79d4ee673 169 (snake_pos.y + 1== fff_pos.y + 2) ||
AhmedPlaymaker 9:d1d79d4ee673 170 (snake_pos.y + 2 == fff_pos.y) ||
AhmedPlaymaker 9:d1d79d4ee673 171 (snake_pos.y + 2 == fff_pos.y + 1) ||
AhmedPlaymaker 9:d1d79d4ee673 172 (snake_pos.y + 2 == fff_pos.y + 2)) &&
AhmedPlaymaker 9:d1d79d4ee673 173 ((snake_pos.x == fff_pos.x) ||
AhmedPlaymaker 9:d1d79d4ee673 174 (snake_pos.x == fff_pos.x + 1) ||
AhmedPlaymaker 9:d1d79d4ee673 175 (snake_pos.x == fff_pos.x + 2) ||
AhmedPlaymaker 9:d1d79d4ee673 176 (snake_pos.x + 1 == fff_pos.x) ||
AhmedPlaymaker 9:d1d79d4ee673 177 (snake_pos.x + 1== fff_pos.x + 1) ||
AhmedPlaymaker 9:d1d79d4ee673 178 (snake_pos.x + 1 == fff_pos.x + 2) ||
AhmedPlaymaker 9:d1d79d4ee673 179 (snake_pos.x + 2 == fff_pos.x) ||
AhmedPlaymaker 9:d1d79d4ee673 180 (snake_pos.x + 2 == fff_pos.x + 1) ||
AhmedPlaymaker 9:d1d79d4ee673 181 (snake_pos.x + 2 == fff_pos.x + 2))
AhmedPlaymaker 9:d1d79d4ee673 182 ) {
AhmedPlaymaker 9:d1d79d4ee673 183
AhmedPlaymaker 9:d1d79d4ee673 184 //printf("snake feast working \n");
AhmedPlaymaker 9:d1d79d4ee673 185 // audio feedback
AhmedPlaymaker 9:d1d79d4ee673 186 pad.tone(1000.0,0.1);
AhmedPlaymaker 9:d1d79d4ee673 187 fff_pos.x = rand() % 82;
AhmedPlaymaker 9:d1d79d4ee673 188 fff_pos.y = 0;
AhmedPlaymaker 9:d1d79d4ee673 189
AhmedPlaymaker 9:d1d79d4ee673 190 length+=1;
AhmedPlaymaker 9:d1d79d4ee673 191
AhmedPlaymaker 9:d1d79d4ee673 192 }
AhmedPlaymaker 9:d1d79d4ee673 193
AhmedPlaymaker 9:d1d79d4ee673 194
AhmedPlaymaker 9:d1d79d4ee673 195 _f.set_pos(f_pos);
AhmedPlaymaker 9:d1d79d4ee673 196 _ff.set_pos(ff_pos);
AhmedPlaymaker 9:d1d79d4ee673 197 _fff.set_pos(fff_pos);
AhmedPlaymaker 9:d1d79d4ee673 198
AhmedPlaymaker 12:1e601b176437 199 }
AhmedPlaymaker 12:1e601b176437 200
AhmedPlaymaker 12:1e601b176437 201 void SnakevsBlock::CheckSnakeBlockCollision(Gamepad &pad)
AhmedPlaymaker 12:1e601b176437 202 {
AhmedPlaymaker 12:1e601b176437 203 //Obtains all required coordinates.
AhmedPlaymaker 12:1e601b176437 204 Vector2D b_pos = _b.get_pos();
AhmedPlaymaker 12:1e601b176437 205 int *b_number;
AhmedPlaymaker 12:1e601b176437 206 b_number = _b.get_number();
AhmedPlaymaker 12:1e601b176437 207 Vector2D snake_pos = _s.get_pos(length);
AhmedPlaymaker 12:1e601b176437 208
AhmedPlaymaker 12:1e601b176437 209 //If statements check if the snake sprite has collided with any
AhmedPlaymaker 12:1e601b176437 210 //of the blocks which are a maximum of 5, if so then the snake length reduces and the block number reduces
AhmedPlaymaker 12:1e601b176437 211 //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 212
AhmedPlaymaker 12:1e601b176437 213 if (
AhmedPlaymaker 12:1e601b176437 214 ((snake_pos.y == b_pos.y + 10) ||
AhmedPlaymaker 12:1e601b176437 215 (snake_pos.y == b_pos.y + 10) ||
AhmedPlaymaker 12:1e601b176437 216 (snake_pos.y == b_pos.y + 10)) &&
AhmedPlaymaker 12:1e601b176437 217 ((snake_pos.x + 1 == b_pos.x + 1) ||
AhmedPlaymaker 12:1e601b176437 218 (snake_pos.x + 1 == b_pos.x + 2) ||
AhmedPlaymaker 12:1e601b176437 219 (snake_pos.x + 1 == b_pos.x + 3) ||
AhmedPlaymaker 12:1e601b176437 220 (snake_pos.x + 1 == b_pos.x + 4) ||
AhmedPlaymaker 12:1e601b176437 221 (snake_pos.x + 1 == b_pos.x + 5) ||
AhmedPlaymaker 12:1e601b176437 222 (snake_pos.x + 1 == b_pos.x + 6) ||
AhmedPlaymaker 12:1e601b176437 223 (snake_pos.x + 1 == b_pos.x + 7) ||
AhmedPlaymaker 12:1e601b176437 224 (snake_pos.x + 1 == b_pos.x + 8) ||
AhmedPlaymaker 12:1e601b176437 225 (snake_pos.x + 1 == b_pos.x + 9) ||
AhmedPlaymaker 12:1e601b176437 226 (snake_pos.x + 1 == b_pos.x + 10) ||
AhmedPlaymaker 12:1e601b176437 227 (snake_pos.x + 1 == b_pos.x + 11) ||
AhmedPlaymaker 12:1e601b176437 228 (snake_pos.x + 1 == b_pos.x + 12) ||
AhmedPlaymaker 12:1e601b176437 229 (snake_pos.x + 1 == b_pos.x + 13) ||
AhmedPlaymaker 12:1e601b176437 230 (snake_pos.x + 1 == b_pos.x + 14) ||
AhmedPlaymaker 12:1e601b176437 231 (snake_pos.x + 1 == b_pos.x + 15) ||
AhmedPlaymaker 12:1e601b176437 232 (snake_pos.x + 1 == b_pos.x + 16) ||
AhmedPlaymaker 12:1e601b176437 233 (snake_pos.x + 1 == b_pos.x + 17) ||
AhmedPlaymaker 12:1e601b176437 234 (snake_pos.x + 1 == b_pos.x + 18))
AhmedPlaymaker 12:1e601b176437 235 ) {
AhmedPlaymaker 12:1e601b176437 236
AhmedPlaymaker 12:1e601b176437 237 //printf("snake collision working \n");
AhmedPlaymaker 12:1e601b176437 238 //audio feedback
AhmedPlaymaker 12:1e601b176437 239 if(blocknum > -1) {
AhmedPlaymaker 12:1e601b176437 240 b_pos.y = 0;
AhmedPlaymaker 12:1e601b176437 241 pad.tone(1000.0,0.1);
AhmedPlaymaker 12:1e601b176437 242 }
AhmedPlaymaker 12:1e601b176437 243 srn = 0;
AhmedPlaymaker 12:1e601b176437 244 blocknum = b_number[srn];
AhmedPlaymaker 12:1e601b176437 245 send=1;
AhmedPlaymaker 12:1e601b176437 246 blocknum-=1;
AhmedPlaymaker 12:1e601b176437 247 if(blocknum >= -1) { // to make sure that snake doesn't decrease in length if number on the block is less than 1;
AhmedPlaymaker 12:1e601b176437 248 length-=1;
AhmedPlaymaker 12:1e601b176437 249 }
AhmedPlaymaker 12:1e601b176437 250 wait(0.1);
AhmedPlaymaker 12:1e601b176437 251 }
AhmedPlaymaker 12:1e601b176437 252
AhmedPlaymaker 12:1e601b176437 253 if (
AhmedPlaymaker 12:1e601b176437 254 ((snake_pos.y == b_pos.y + 10) ||
AhmedPlaymaker 12:1e601b176437 255 (snake_pos.y == b_pos.y + 10) ||
AhmedPlaymaker 12:1e601b176437 256 (snake_pos.y == b_pos.y + 10)) &&
AhmedPlaymaker 12:1e601b176437 257 ((snake_pos.x + 1 == b_pos.x + 19) ||
AhmedPlaymaker 12:1e601b176437 258 (snake_pos.x + 1 == b_pos.x + 20) ||
AhmedPlaymaker 12:1e601b176437 259 (snake_pos.x + 1 == b_pos.x + 21) ||
AhmedPlaymaker 12:1e601b176437 260 (snake_pos.x + 1 == b_pos.x + 22) ||
AhmedPlaymaker 12:1e601b176437 261 (snake_pos.x + 1 == b_pos.x + 23) ||
AhmedPlaymaker 12:1e601b176437 262 (snake_pos.x + 1 == b_pos.x + 24) ||
AhmedPlaymaker 12:1e601b176437 263 (snake_pos.x + 1 == b_pos.x + 25) ||
AhmedPlaymaker 12:1e601b176437 264 (snake_pos.x + 1 == b_pos.x + 26) ||
AhmedPlaymaker 12:1e601b176437 265 (snake_pos.x + 1 == b_pos.x + 27) ||
AhmedPlaymaker 12:1e601b176437 266 (snake_pos.x + 1 == b_pos.x + 28) ||
AhmedPlaymaker 12:1e601b176437 267 (snake_pos.x + 1 == b_pos.x + 29) ||
AhmedPlaymaker 12:1e601b176437 268 (snake_pos.x + 1 == b_pos.x + 30) ||
AhmedPlaymaker 12:1e601b176437 269 (snake_pos.x + 1 == b_pos.x + 31) ||
AhmedPlaymaker 12:1e601b176437 270 (snake_pos.x + 1 == b_pos.x + 32) ||
AhmedPlaymaker 12:1e601b176437 271 (snake_pos.x + 1 == b_pos.x + 33) ||
AhmedPlaymaker 12:1e601b176437 272 (snake_pos.x + 1 == b_pos.x + 34))
AhmedPlaymaker 12:1e601b176437 273 ) {
AhmedPlaymaker 12:1e601b176437 274
AhmedPlaymaker 12:1e601b176437 275 //printf("snake collision working \n");
AhmedPlaymaker 12:1e601b176437 276 //audio feedback
AhmedPlaymaker 12:1e601b176437 277 if(blocknum > -1) {
AhmedPlaymaker 12:1e601b176437 278 b_pos.y = 0;
AhmedPlaymaker 12:1e601b176437 279 pad.tone(1000.0,0.1);
AhmedPlaymaker 12:1e601b176437 280 }
AhmedPlaymaker 12:1e601b176437 281 srn = 1;
AhmedPlaymaker 12:1e601b176437 282 blocknum = b_number[srn];
AhmedPlaymaker 12:1e601b176437 283 send=1;
AhmedPlaymaker 12:1e601b176437 284 blocknum-=1;
AhmedPlaymaker 12:1e601b176437 285 if(blocknum >= -1) { // to make sure that snake doesn't decrease in length if number on the block is less than 1;
AhmedPlaymaker 12:1e601b176437 286 length-=1;
AhmedPlaymaker 12:1e601b176437 287 }
AhmedPlaymaker 12:1e601b176437 288 wait(0.1);
AhmedPlaymaker 12:1e601b176437 289
AhmedPlaymaker 12:1e601b176437 290 }
AhmedPlaymaker 12:1e601b176437 291
AhmedPlaymaker 12:1e601b176437 292 if (
AhmedPlaymaker 12:1e601b176437 293 ((snake_pos.y == b_pos.y + 10) ||
AhmedPlaymaker 12:1e601b176437 294 (snake_pos.y == b_pos.y + 10) ||
AhmedPlaymaker 12:1e601b176437 295 (snake_pos.y == b_pos.y + 10)) &&
AhmedPlaymaker 12:1e601b176437 296 ((snake_pos.x + 1 == b_pos.x + 35) ||
AhmedPlaymaker 12:1e601b176437 297 (snake_pos.x + 1 == b_pos.x + 36) ||
AhmedPlaymaker 12:1e601b176437 298 (snake_pos.x + 1 == b_pos.x + 37) ||
AhmedPlaymaker 12:1e601b176437 299 (snake_pos.x + 1 == b_pos.x + 38) ||
AhmedPlaymaker 12:1e601b176437 300 (snake_pos.x + 1 == b_pos.x + 39) ||
AhmedPlaymaker 12:1e601b176437 301 (snake_pos.x + 1 == b_pos.x + 40) ||
AhmedPlaymaker 12:1e601b176437 302 (snake_pos.x + 1 == b_pos.x + 41) ||
AhmedPlaymaker 12:1e601b176437 303 (snake_pos.x + 1 == b_pos.x + 42) ||
AhmedPlaymaker 12:1e601b176437 304 (snake_pos.x + 1 == b_pos.x + 43) ||
AhmedPlaymaker 12:1e601b176437 305 (snake_pos.x + 1 == b_pos.x + 44) ||
AhmedPlaymaker 12:1e601b176437 306 (snake_pos.x + 1 == b_pos.x + 45) ||
AhmedPlaymaker 12:1e601b176437 307 (snake_pos.x + 1 == b_pos.x + 46) ||
AhmedPlaymaker 12:1e601b176437 308 (snake_pos.x + 1 == b_pos.x + 47) ||
AhmedPlaymaker 12:1e601b176437 309 (snake_pos.x + 1 == b_pos.x + 48) ||
AhmedPlaymaker 12:1e601b176437 310 (snake_pos.x + 1 == b_pos.x + 49) ||
AhmedPlaymaker 12:1e601b176437 311 (snake_pos.x + 1 == b_pos.x + 50))
AhmedPlaymaker 12:1e601b176437 312 ) {
AhmedPlaymaker 12:1e601b176437 313
AhmedPlaymaker 12:1e601b176437 314 //printf("snake collision working \n");
AhmedPlaymaker 12:1e601b176437 315 //audio feedback
AhmedPlaymaker 12:1e601b176437 316 if(blocknum > -1) {
AhmedPlaymaker 12:1e601b176437 317 b_pos.y = 0;
AhmedPlaymaker 12:1e601b176437 318 pad.tone(1000.0,0.1);
AhmedPlaymaker 12:1e601b176437 319 }
AhmedPlaymaker 12:1e601b176437 320 srn = 2;
AhmedPlaymaker 12:1e601b176437 321 blocknum = b_number[srn];
AhmedPlaymaker 12:1e601b176437 322 send=1;
AhmedPlaymaker 12:1e601b176437 323 blocknum-=1;
AhmedPlaymaker 12:1e601b176437 324 if(blocknum >= -1) { // to make sure that snake doesn't decrease in length if number on the block is less than 1;
AhmedPlaymaker 12:1e601b176437 325 length-=1;
AhmedPlaymaker 12:1e601b176437 326 }
AhmedPlaymaker 12:1e601b176437 327 wait(0.1);
AhmedPlaymaker 12:1e601b176437 328
AhmedPlaymaker 12:1e601b176437 329 }
AhmedPlaymaker 12:1e601b176437 330
AhmedPlaymaker 12:1e601b176437 331 if (
AhmedPlaymaker 12:1e601b176437 332 ((snake_pos.y == b_pos.y + 10) ||
AhmedPlaymaker 12:1e601b176437 333 (snake_pos.y == b_pos.y + 10) ||
AhmedPlaymaker 12:1e601b176437 334 (snake_pos.y == b_pos.y + 10)) &&
AhmedPlaymaker 12:1e601b176437 335 ((snake_pos.x + 1 == b_pos.x + 51) ||
AhmedPlaymaker 12:1e601b176437 336 (snake_pos.x + 1 == b_pos.x + 52) ||
AhmedPlaymaker 12:1e601b176437 337 (snake_pos.x + 1 == b_pos.x + 53) ||
AhmedPlaymaker 12:1e601b176437 338 (snake_pos.x + 1 == b_pos.x + 54) ||
AhmedPlaymaker 12:1e601b176437 339 (snake_pos.x + 1 == b_pos.x + 55) ||
AhmedPlaymaker 12:1e601b176437 340 (snake_pos.x + 1 == b_pos.x + 56) ||
AhmedPlaymaker 12:1e601b176437 341 (snake_pos.x + 1 == b_pos.x + 57) ||
AhmedPlaymaker 12:1e601b176437 342 (snake_pos.x + 1 == b_pos.x + 58) ||
AhmedPlaymaker 12:1e601b176437 343 (snake_pos.x + 1 == b_pos.x + 59) ||
AhmedPlaymaker 12:1e601b176437 344 (snake_pos.x + 1 == b_pos.x + 60) ||
AhmedPlaymaker 12:1e601b176437 345 (snake_pos.x + 1 == b_pos.x + 61) ||
AhmedPlaymaker 12:1e601b176437 346 (snake_pos.x + 1 == b_pos.x + 62) ||
AhmedPlaymaker 12:1e601b176437 347 (snake_pos.x + 1 == b_pos.x + 63) ||
AhmedPlaymaker 12:1e601b176437 348 (snake_pos.x + 1 == b_pos.x + 64) ||
AhmedPlaymaker 12:1e601b176437 349 (snake_pos.x + 1 == b_pos.x + 65) ||
AhmedPlaymaker 12:1e601b176437 350 (snake_pos.x + 1 == b_pos.x + 66))
AhmedPlaymaker 12:1e601b176437 351 ) {
AhmedPlaymaker 12:1e601b176437 352
AhmedPlaymaker 12:1e601b176437 353 //printf("snake collision working \n");
AhmedPlaymaker 12:1e601b176437 354 //audio feedback
AhmedPlaymaker 12:1e601b176437 355 if(blocknum > -1) {
AhmedPlaymaker 12:1e601b176437 356 b_pos.y = 0;
AhmedPlaymaker 12:1e601b176437 357 pad.tone(1000.0,0.1);
AhmedPlaymaker 12:1e601b176437 358 }
AhmedPlaymaker 12:1e601b176437 359 srn = 3;
AhmedPlaymaker 12:1e601b176437 360 blocknum = b_number[srn];
AhmedPlaymaker 12:1e601b176437 361 send=1;
AhmedPlaymaker 12:1e601b176437 362 blocknum-=1;
AhmedPlaymaker 12:1e601b176437 363 if(blocknum >= -1) { // to make sure that snake doesn't decrease in length if number on the block is less than 1;
AhmedPlaymaker 12:1e601b176437 364 length-=1;
AhmedPlaymaker 12:1e601b176437 365 }
AhmedPlaymaker 12:1e601b176437 366 wait(0.1);
AhmedPlaymaker 12:1e601b176437 367
AhmedPlaymaker 12:1e601b176437 368 }
AhmedPlaymaker 12:1e601b176437 369
AhmedPlaymaker 12:1e601b176437 370 if (
AhmedPlaymaker 12:1e601b176437 371 ((snake_pos.y == b_pos.y + 10) ||
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.x + 1 == b_pos.x + 67) ||
AhmedPlaymaker 12:1e601b176437 375 (snake_pos.x + 1 == b_pos.x + 68) ||
AhmedPlaymaker 12:1e601b176437 376 (snake_pos.x + 1 == b_pos.x + 69) ||
AhmedPlaymaker 12:1e601b176437 377 (snake_pos.x + 1 == b_pos.x + 70) ||
AhmedPlaymaker 12:1e601b176437 378 (snake_pos.x + 1 == b_pos.x + 71) ||
AhmedPlaymaker 12:1e601b176437 379 (snake_pos.x + 1 == b_pos.x + 72) ||
AhmedPlaymaker 12:1e601b176437 380 (snake_pos.x + 1 == b_pos.x + 73) ||
AhmedPlaymaker 12:1e601b176437 381 (snake_pos.x + 1 == b_pos.x + 74) ||
AhmedPlaymaker 12:1e601b176437 382 (snake_pos.x + 1 == b_pos.x + 75) ||
AhmedPlaymaker 12:1e601b176437 383 (snake_pos.x + 1 == b_pos.x + 76) ||
AhmedPlaymaker 12:1e601b176437 384 (snake_pos.x + 1 == b_pos.x + 77) ||
AhmedPlaymaker 12:1e601b176437 385 (snake_pos.x + 1 == b_pos.x + 78) ||
AhmedPlaymaker 12:1e601b176437 386 (snake_pos.x + 1 == b_pos.x + 79) ||
AhmedPlaymaker 12:1e601b176437 387 (snake_pos.x + 1 == b_pos.x + 80) ||
AhmedPlaymaker 12:1e601b176437 388 (snake_pos.x + 1 == b_pos.x + 81) ||
AhmedPlaymaker 12:1e601b176437 389 (snake_pos.x + 1 == b_pos.x + 82) ||
AhmedPlaymaker 12:1e601b176437 390 (snake_pos.x + 1 == b_pos.x + 83))
AhmedPlaymaker 12:1e601b176437 391 ) {
AhmedPlaymaker 12:1e601b176437 392
AhmedPlaymaker 12:1e601b176437 393 //printf("snake collision working \n");
AhmedPlaymaker 12:1e601b176437 394 //audio feedback
AhmedPlaymaker 12:1e601b176437 395 if(blocknum > -1) {
AhmedPlaymaker 12:1e601b176437 396 b_pos.y = 0;
AhmedPlaymaker 12:1e601b176437 397 pad.tone(1000.0,0.1);
AhmedPlaymaker 12:1e601b176437 398 }
AhmedPlaymaker 12:1e601b176437 399 srn = 4;
AhmedPlaymaker 12:1e601b176437 400 blocknum = b_number[srn];
AhmedPlaymaker 12:1e601b176437 401 send=1;
AhmedPlaymaker 12:1e601b176437 402 blocknum-=1;
AhmedPlaymaker 12:1e601b176437 403 if(blocknum >= -1) { // to make sure that snake doesn't decrease in length if number on the block is less than 1;
AhmedPlaymaker 12:1e601b176437 404 length-=1;
AhmedPlaymaker 12:1e601b176437 405 }
AhmedPlaymaker 12:1e601b176437 406 wait(0.1);
AhmedPlaymaker 12:1e601b176437 407 }
AhmedPlaymaker 12:1e601b176437 408
AhmedPlaymaker 12:1e601b176437 409 }