![](/media/cache/profiles/LinkedIn_0NghoZJ.jpeg.50x50_q85.jpg)
Snake vs Block Game to be run upon K64F.
Snake/Snake.cpp@24:1c118b071430, 2019-04-10 (annotated)
- Committer:
- AhmedPlaymaker
- Date:
- Wed Apr 10 10:59:15 2019 +0000
- Revision:
- 24:1c118b071430
- Parent:
- 22:ee698f66146f
- Child:
- 25:e827f1a8fadc
Made snake side collision detector compact
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
AhmedPlaymaker | 7:48ba87cd79b5 | 1 | #include "Snake.h" |
AhmedPlaymaker | 7:48ba87cd79b5 | 2 | |
AhmedPlaymaker | 7:48ba87cd79b5 | 3 | Snake::Snake() |
AhmedPlaymaker | 7:48ba87cd79b5 | 4 | { |
AhmedPlaymaker | 7:48ba87cd79b5 | 5 | |
AhmedPlaymaker | 7:48ba87cd79b5 | 6 | } |
AhmedPlaymaker | 7:48ba87cd79b5 | 7 | |
AhmedPlaymaker | 7:48ba87cd79b5 | 8 | Snake::~Snake() |
AhmedPlaymaker | 7:48ba87cd79b5 | 9 | { |
AhmedPlaymaker | 7:48ba87cd79b5 | 10 | |
AhmedPlaymaker | 7:48ba87cd79b5 | 11 | } |
AhmedPlaymaker | 7:48ba87cd79b5 | 12 | |
AhmedPlaymaker | 7:48ba87cd79b5 | 13 | //The Snake Sprite. |
AhmedPlaymaker | 8:890b986b16a4 | 14 | int snake_sprite[3][3] = { |
AhmedPlaymaker | 8:890b986b16a4 | 15 | {0,1,0}, |
AhmedPlaymaker | 8:890b986b16a4 | 16 | {1,0,1}, |
AhmedPlaymaker | 8:890b986b16a4 | 17 | {0,1,0}, |
AhmedPlaymaker | 9:d1d79d4ee673 | 18 | }; |
AhmedPlaymaker | 7:48ba87cd79b5 | 19 | |
AhmedPlaymaker | 7:48ba87cd79b5 | 20 | int m = 0; //Variable used to allow a starting location for the player. |
AhmedPlaymaker | 7:48ba87cd79b5 | 21 | |
AhmedPlaymaker | 7:48ba87cd79b5 | 22 | |
AhmedPlaymaker | 7:48ba87cd79b5 | 23 | void Snake::init() |
AhmedPlaymaker | 7:48ba87cd79b5 | 24 | { |
AhmedPlaymaker | 7:48ba87cd79b5 | 25 | |
AhmedPlaymaker | 18:b391caa5754c | 26 | _speed = 1;// change this according to the options selected |
AhmedPlaymaker | 7:48ba87cd79b5 | 27 | |
AhmedPlaymaker | 7:48ba87cd79b5 | 28 | } |
AhmedPlaymaker | 7:48ba87cd79b5 | 29 | |
AhmedPlaymaker | 7:48ba87cd79b5 | 30 | |
AhmedPlaymaker | 20:1e6338403427 | 31 | int Snake::draw(Gamepad &pad, N5110 &lcd, int length, int level) |
AhmedPlaymaker | 7:48ba87cd79b5 | 32 | { |
AhmedPlaymaker | 7:48ba87cd79b5 | 33 | if(m == 0){ |
AhmedPlaymaker | 21:e41126528cc6 | 34 | _x[0] = WIDTH/2; //Spawns player sprite near the middle of the screen. |
AhmedPlaymaker | 22:ee698f66146f | 35 | _y[0] = HEIGHT - 3; |
AhmedPlaymaker | 22:ee698f66146f | 36 | |
AhmedPlaymaker | 22:ee698f66146f | 37 | for(int i=0; i<=13; i++) { |
AhmedPlaymaker | 22:ee698f66146f | 38 | _x[i+1] = _x[i]; |
AhmedPlaymaker | 22:ee698f66146f | 39 | _y[i+1] = _y[i] - 3; |
AhmedPlaymaker | 22:ee698f66146f | 40 | b[i] = 1; |
AhmedPlaymaker | 22:ee698f66146f | 41 | } |
AhmedPlaymaker | 21:e41126528cc6 | 42 | b[14] = 1; |
AhmedPlaymaker | 7:48ba87cd79b5 | 43 | m = m+1; |
AhmedPlaymaker | 22:ee698f66146f | 44 | } |
AhmedPlaymaker | 21:e41126528cc6 | 45 | //printf("SPRITE %d %d \n", _x[0], _y[0]); |
AhmedPlaymaker | 8:890b986b16a4 | 46 | if(length == 0) { |
AhmedPlaymaker | 16:7b474f873683 | 47 | while ((pad.check_event(Gamepad::BACK_PRESSED) == false)) { |
AhmedPlaymaker | 16:7b474f873683 | 48 | lcd.clear(); |
AhmedPlaymaker | 16:7b474f873683 | 49 | lcd.printString("Game",33,1); |
AhmedPlaymaker | 16:7b474f873683 | 50 | lcd.printString("Over",33,3); |
AhmedPlaymaker | 16:7b474f873683 | 51 | lcd.printString("Press Back",14,5); //Function used to promt the user to Restart. |
AhmedPlaymaker | 16:7b474f873683 | 52 | lcd.refresh(); |
AhmedPlaymaker | 16:7b474f873683 | 53 | wait(0.1); |
AhmedPlaymaker | 16:7b474f873683 | 54 | } |
AhmedPlaymaker | 16:7b474f873683 | 55 | NVIC_SystemReset(); //Software Reset. //change this condition to loosing screen. |
AhmedPlaymaker | 8:890b986b16a4 | 56 | } |
AhmedPlaymaker | 24:1c118b071430 | 57 | |
AhmedPlaymaker | 24:1c118b071430 | 58 | for(int a=1; a<=15; a++) { |
AhmedPlaymaker | 24:1c118b071430 | 59 | if(length == a) { |
AhmedPlaymaker | 24:1c118b071430 | 60 | for(int i=0; i<=a-1; i++) { |
AhmedPlaymaker | 24:1c118b071430 | 61 | lcd.drawSprite(_x[i],_y[i],3,3,(int *)snake_sprite); //Function used to draw the sprite. |
AhmedPlaymaker | 24:1c118b071430 | 62 | } |
AhmedPlaymaker | 24:1c118b071430 | 63 | } |
AhmedPlaymaker | 8:890b986b16a4 | 64 | } |
AhmedPlaymaker | 24:1c118b071430 | 65 | |
AhmedPlaymaker | 24:1c118b071430 | 66 | if(length > 15) { |
AhmedPlaymaker | 17:54e13faeaf64 | 67 | lcd.clear(); |
AhmedPlaymaker | 17:54e13faeaf64 | 68 | lcd.printString("Level Complete",0,1); |
AhmedPlaymaker | 24:1c118b071430 | 69 | lcd.printString("Press Start",10,3); |
AhmedPlaymaker | 24:1c118b071430 | 70 | lcd.printString("to Proceed",12,4); |
AhmedPlaymaker | 17:54e13faeaf64 | 71 | lcd.refresh(); |
AhmedPlaymaker | 20:1e6338403427 | 72 | while ( pad.check_event(Gamepad::START_PRESSED) == false) { |
AhmedPlaymaker | 20:1e6338403427 | 73 | pad.leds_on(); |
AhmedPlaymaker | 24:1c118b071430 | 74 | pad.tone(rand()%1001,0.1); //helps to set max freq for random sound |
AhmedPlaymaker | 20:1e6338403427 | 75 | wait(0.1); |
AhmedPlaymaker | 20:1e6338403427 | 76 | pad.leds_off(); |
AhmedPlaymaker | 20:1e6338403427 | 77 | wait(0.1); |
AhmedPlaymaker | 20:1e6338403427 | 78 | } |
AhmedPlaymaker | 20:1e6338403427 | 79 | lcd.clear(); |
AhmedPlaymaker | 20:1e6338403427 | 80 | char bufferlevel[14]; |
AhmedPlaymaker | 20:1e6338403427 | 81 | sprintf(bufferlevel,"%d",level); |
AhmedPlaymaker | 20:1e6338403427 | 82 | lcd.printString("Level:",25,1); |
AhmedPlaymaker | 20:1e6338403427 | 83 | lcd.printString(bufferlevel,40,3); |
AhmedPlaymaker | 20:1e6338403427 | 84 | lcd.refresh(); |
AhmedPlaymaker | 20:1e6338403427 | 85 | wait(2); |
AhmedPlaymaker | 17:54e13faeaf64 | 86 | length = 3; |
AhmedPlaymaker | 17:54e13faeaf64 | 87 | } |
AhmedPlaymaker | 17:54e13faeaf64 | 88 | return length; |
AhmedPlaymaker | 7:48ba87cd79b5 | 89 | } |
AhmedPlaymaker | 19:05cc9f801468 | 90 | |
AhmedPlaymaker | 24:1c118b071430 | 91 | |
AhmedPlaymaker | 9:d1d79d4ee673 | 92 | Vector2D Snake::get_pos(int length) |
AhmedPlaymaker | 7:48ba87cd79b5 | 93 | { |
AhmedPlaymaker | 24:1c118b071430 | 94 | for(int i=1; i<=15; i++) { |
AhmedPlaymaker | 24:1c118b071430 | 95 | if(length == i) { |
AhmedPlaymaker | 24:1c118b071430 | 96 | Vector2D snakepos = {_x[i-1],_y[i-1]}; //Obtains the snake position. |
AhmedPlaymaker | 24:1c118b071430 | 97 | return snakepos; |
AhmedPlaymaker | 24:1c118b071430 | 98 | } |
AhmedPlaymaker | 9:d1d79d4ee673 | 99 | } |
AhmedPlaymaker | 24:1c118b071430 | 100 | Vector2D snakepos = {-20,-20}; //Obtains the snake position. |
AhmedPlaymaker | 24:1c118b071430 | 101 | return snakepos; |
AhmedPlaymaker | 7:48ba87cd79b5 | 102 | //printf("snakepos from player = %f %f \n", snakepos.x, snakepos.y); |
AhmedPlaymaker | 13:9785f2404045 | 103 | } |
AhmedPlaymaker | 13:9785f2404045 | 104 | |
AhmedPlaymaker | 13:9785f2404045 | 105 | Vector2D Snake::get_pos_before1(int length) //this sends data of following sprites. |
AhmedPlaymaker | 13:9785f2404045 | 106 | { |
AhmedPlaymaker | 24:1c118b071430 | 107 | for(int i=2; i<=15; i++) { |
AhmedPlaymaker | 24:1c118b071430 | 108 | if(length == i) { |
AhmedPlaymaker | 24:1c118b071430 | 109 | Vector2D snakepos_b1 = {_x[i-2],_y[i-2]}; //Obtains the snake position. |
AhmedPlaymaker | 24:1c118b071430 | 110 | return snakepos_b1; |
AhmedPlaymaker | 24:1c118b071430 | 111 | } |
AhmedPlaymaker | 13:9785f2404045 | 112 | } |
AhmedPlaymaker | 24:1c118b071430 | 113 | Vector2D snakepos_b1 = {-20,-20}; //Obtains the snake position. |
AhmedPlaymaker | 24:1c118b071430 | 114 | return snakepos_b1; |
AhmedPlaymaker | 24:1c118b071430 | 115 | //printf("snakepos_b1 from player = %f %f \n", snakepos_b1.x, snakepos_b1.y); |
AhmedPlaymaker | 13:9785f2404045 | 116 | } |
AhmedPlaymaker | 13:9785f2404045 | 117 | |
AhmedPlaymaker | 13:9785f2404045 | 118 | Vector2D Snake::get_pos_before2(int length) //this sends data of following sprites. |
AhmedPlaymaker | 13:9785f2404045 | 119 | { |
AhmedPlaymaker | 24:1c118b071430 | 120 | for(int i=3; i<=15; i++) { |
AhmedPlaymaker | 24:1c118b071430 | 121 | if(length == i) { |
AhmedPlaymaker | 24:1c118b071430 | 122 | Vector2D snakepos_b2 = {_x[i-3],_y[i-3]}; //Obtains the snake position. |
AhmedPlaymaker | 24:1c118b071430 | 123 | return snakepos_b2; |
AhmedPlaymaker | 24:1c118b071430 | 124 | } |
AhmedPlaymaker | 13:9785f2404045 | 125 | } |
AhmedPlaymaker | 24:1c118b071430 | 126 | Vector2D snakepos_b2 = {-20,-20}; //Obtains the snake position. |
AhmedPlaymaker | 24:1c118b071430 | 127 | return snakepos_b2; |
AhmedPlaymaker | 24:1c118b071430 | 128 | //printf("snakepos_b2 from player = %f %f \n", snakepos_b2.x, snakepos_b2.y); |
AhmedPlaymaker | 13:9785f2404045 | 129 | } |
AhmedPlaymaker | 13:9785f2404045 | 130 | |
AhmedPlaymaker | 13:9785f2404045 | 131 | Vector2D Snake::get_pos_before3(int length) //this sends data of following sprites. |
AhmedPlaymaker | 13:9785f2404045 | 132 | { |
AhmedPlaymaker | 24:1c118b071430 | 133 | for(int i=4; i<=15; i++) { |
AhmedPlaymaker | 24:1c118b071430 | 134 | if(length == i) { |
AhmedPlaymaker | 24:1c118b071430 | 135 | Vector2D snakepos_b3 = {_x[i-4],_y[i-4]}; //Obtains the snake position. |
AhmedPlaymaker | 24:1c118b071430 | 136 | return snakepos_b3; |
AhmedPlaymaker | 24:1c118b071430 | 137 | } |
AhmedPlaymaker | 13:9785f2404045 | 138 | } |
AhmedPlaymaker | 24:1c118b071430 | 139 | Vector2D snakepos_b3 = {-20,-20}; //Obtains the snake position. |
AhmedPlaymaker | 24:1c118b071430 | 140 | return snakepos_b3; |
AhmedPlaymaker | 24:1c118b071430 | 141 | //printf("snakepos_b3 from player = %f %f \n", snakepos_b3.x, snakepos_b3.y); |
AhmedPlaymaker | 13:9785f2404045 | 142 | } |
AhmedPlaymaker | 13:9785f2404045 | 143 | |
AhmedPlaymaker | 13:9785f2404045 | 144 | Vector2D Snake::get_pos_before4(int length) //this sends data of following sprites. |
AhmedPlaymaker | 13:9785f2404045 | 145 | { |
AhmedPlaymaker | 24:1c118b071430 | 146 | for(int i=5; i<=15; i++) { |
AhmedPlaymaker | 24:1c118b071430 | 147 | if(length == i) { |
AhmedPlaymaker | 24:1c118b071430 | 148 | Vector2D snakepos_b4 = {_x[i-5],_y[i-5]}; //Obtains the snake position. |
AhmedPlaymaker | 24:1c118b071430 | 149 | return snakepos_b4; |
AhmedPlaymaker | 24:1c118b071430 | 150 | } |
AhmedPlaymaker | 13:9785f2404045 | 151 | } |
AhmedPlaymaker | 24:1c118b071430 | 152 | Vector2D snakepos_b4 = {-20,-20}; //Obtains the snake position. |
AhmedPlaymaker | 24:1c118b071430 | 153 | return snakepos_b4; |
AhmedPlaymaker | 24:1c118b071430 | 154 | //printf("snakepos_b4 from player = %f %f \n", snakepos_b4.x, snakepos_b4.y); |
AhmedPlaymaker | 13:9785f2404045 | 155 | } |
AhmedPlaymaker | 13:9785f2404045 | 156 | |
AhmedPlaymaker | 13:9785f2404045 | 157 | Vector2D Snake::get_pos_before5(int length) //this sends data of following sprites. |
AhmedPlaymaker | 13:9785f2404045 | 158 | { |
AhmedPlaymaker | 24:1c118b071430 | 159 | for(int i=6; i<=15; i++) { |
AhmedPlaymaker | 24:1c118b071430 | 160 | if(length == i) { |
AhmedPlaymaker | 24:1c118b071430 | 161 | Vector2D snakepos_b5 = {_x[i-6],_y[i-6]}; //Obtains the snake position. |
AhmedPlaymaker | 24:1c118b071430 | 162 | return snakepos_b5; |
AhmedPlaymaker | 24:1c118b071430 | 163 | } |
AhmedPlaymaker | 13:9785f2404045 | 164 | } |
AhmedPlaymaker | 24:1c118b071430 | 165 | Vector2D snakepos_b5 = {-20,-20}; //Obtains the snake position. |
AhmedPlaymaker | 24:1c118b071430 | 166 | return snakepos_b5; |
AhmedPlaymaker | 24:1c118b071430 | 167 | //printf("snakepos_b5 from player = %f %f \n", snakepos_b5.x, snakepos_b5.y); |
AhmedPlaymaker | 13:9785f2404045 | 168 | } |
AhmedPlaymaker | 13:9785f2404045 | 169 | |
AhmedPlaymaker | 13:9785f2404045 | 170 | Vector2D Snake::get_pos_before6(int length) //this sends data of following sprites. |
AhmedPlaymaker | 13:9785f2404045 | 171 | { |
AhmedPlaymaker | 24:1c118b071430 | 172 | for(int i=7; i<=15; i++) { |
AhmedPlaymaker | 24:1c118b071430 | 173 | if(length == i) { |
AhmedPlaymaker | 24:1c118b071430 | 174 | Vector2D snakepos_b6 = {_x[i-7],_y[i-7]}; //Obtains the snake position. |
AhmedPlaymaker | 24:1c118b071430 | 175 | return snakepos_b6; |
AhmedPlaymaker | 24:1c118b071430 | 176 | } |
AhmedPlaymaker | 13:9785f2404045 | 177 | } |
AhmedPlaymaker | 24:1c118b071430 | 178 | Vector2D snakepos_b6 = {-20,-20}; //Obtains the snake position. |
AhmedPlaymaker | 24:1c118b071430 | 179 | return snakepos_b6; |
AhmedPlaymaker | 24:1c118b071430 | 180 | //printf("snakepos_b6 from player = %f %f \n", snakepos_b6.x, snakepos_b6.y); |
AhmedPlaymaker | 13:9785f2404045 | 181 | } |
AhmedPlaymaker | 13:9785f2404045 | 182 | |
AhmedPlaymaker | 13:9785f2404045 | 183 | Vector2D Snake::get_pos_before7(int length) //this sends data of following sprites. |
AhmedPlaymaker | 13:9785f2404045 | 184 | { |
AhmedPlaymaker | 24:1c118b071430 | 185 | for(int i=8; i<=15; i++) { |
AhmedPlaymaker | 24:1c118b071430 | 186 | if(length == i) { |
AhmedPlaymaker | 24:1c118b071430 | 187 | Vector2D snakepos_b7 = {_x[i-8],_y[i-8]}; //Obtains the snake position. |
AhmedPlaymaker | 24:1c118b071430 | 188 | return snakepos_b7; |
AhmedPlaymaker | 24:1c118b071430 | 189 | } |
AhmedPlaymaker | 13:9785f2404045 | 190 | } |
AhmedPlaymaker | 24:1c118b071430 | 191 | Vector2D snakepos_b7 = {-20,-20}; //Obtains the snake position. |
AhmedPlaymaker | 24:1c118b071430 | 192 | return snakepos_b7; |
AhmedPlaymaker | 24:1c118b071430 | 193 | //printf("snakepos_b7 from player = %f %f \n", snakepos_b7.x, snakepos_b7.y); |
AhmedPlaymaker | 7:48ba87cd79b5 | 194 | } |
AhmedPlaymaker | 7:48ba87cd79b5 | 195 | |
AhmedPlaymaker | 13:9785f2404045 | 196 | Vector2D Snake::get_pos_before8(int length) //this sends data of following sprites. |
AhmedPlaymaker | 13:9785f2404045 | 197 | { |
AhmedPlaymaker | 24:1c118b071430 | 198 | for(int i=9; i<=15; i++) { |
AhmedPlaymaker | 24:1c118b071430 | 199 | if(length == i) { |
AhmedPlaymaker | 24:1c118b071430 | 200 | Vector2D snakepos_b8 = {_x[i-9],_y[i-9]}; //Obtains the snake position. |
AhmedPlaymaker | 24:1c118b071430 | 201 | return snakepos_b8; |
AhmedPlaymaker | 24:1c118b071430 | 202 | } |
AhmedPlaymaker | 13:9785f2404045 | 203 | } |
AhmedPlaymaker | 24:1c118b071430 | 204 | Vector2D snakepos_b8 = {-20,-20}; //Obtains the snake position. |
AhmedPlaymaker | 24:1c118b071430 | 205 | return snakepos_b8; |
AhmedPlaymaker | 24:1c118b071430 | 206 | //printf("snakepos_b8 from player = %f %f \n", snakepos_b8.x, snakepos_b8.y); |
AhmedPlaymaker | 13:9785f2404045 | 207 | } |
AhmedPlaymaker | 7:48ba87cd79b5 | 208 | |
AhmedPlaymaker | 13:9785f2404045 | 209 | Vector2D Snake::get_pos_before9(int length) //this sends data of following sprites. |
AhmedPlaymaker | 13:9785f2404045 | 210 | { |
AhmedPlaymaker | 24:1c118b071430 | 211 | for(int i=10; i<=15; i++) { |
AhmedPlaymaker | 24:1c118b071430 | 212 | if(length == i) { |
AhmedPlaymaker | 24:1c118b071430 | 213 | Vector2D snakepos_b9 = {_x[i-10],_y[i-10]}; //Obtains the snake position. |
AhmedPlaymaker | 24:1c118b071430 | 214 | return snakepos_b9; |
AhmedPlaymaker | 24:1c118b071430 | 215 | } |
AhmedPlaymaker | 13:9785f2404045 | 216 | } |
AhmedPlaymaker | 24:1c118b071430 | 217 | Vector2D snakepos_b9 = {-20,-20}; //Obtains the snake position. |
AhmedPlaymaker | 24:1c118b071430 | 218 | return snakepos_b9; |
AhmedPlaymaker | 24:1c118b071430 | 219 | //printf("snakepos_b9 from player = %f %f \n", snakepos_b9.x, snakepos_b9.y); |
AhmedPlaymaker | 13:9785f2404045 | 220 | } |
AhmedPlaymaker | 13:9785f2404045 | 221 | |
AhmedPlaymaker | 13:9785f2404045 | 222 | Vector2D Snake::get_pos_before10(int length) //this sends data of following sprites. |
AhmedPlaymaker | 13:9785f2404045 | 223 | { |
AhmedPlaymaker | 24:1c118b071430 | 224 | for(int i=11; i<=15; i++) { |
AhmedPlaymaker | 24:1c118b071430 | 225 | if(length == i) { |
AhmedPlaymaker | 24:1c118b071430 | 226 | Vector2D snakepos_b10 = {_x[i-11],_y[i-11]}; //Obtains the snake position. |
AhmedPlaymaker | 24:1c118b071430 | 227 | return snakepos_b10; |
AhmedPlaymaker | 24:1c118b071430 | 228 | } |
AhmedPlaymaker | 13:9785f2404045 | 229 | } |
AhmedPlaymaker | 24:1c118b071430 | 230 | Vector2D snakepos_b10 = {-20,-20}; //Obtains the snake position. |
AhmedPlaymaker | 24:1c118b071430 | 231 | return snakepos_b10; |
AhmedPlaymaker | 24:1c118b071430 | 232 | //printf("snakepos_b10 from player = %f %f \n", snakepos_b10.x, snakepos_b10.y); |
AhmedPlaymaker | 13:9785f2404045 | 233 | } |
AhmedPlaymaker | 13:9785f2404045 | 234 | |
AhmedPlaymaker | 13:9785f2404045 | 235 | Vector2D Snake::get_pos_before11(int length) //this sends data of following sprites. |
AhmedPlaymaker | 13:9785f2404045 | 236 | { |
AhmedPlaymaker | 24:1c118b071430 | 237 | for(int i=12; i<=15; i++) { |
AhmedPlaymaker | 24:1c118b071430 | 238 | if(length == i) { |
AhmedPlaymaker | 24:1c118b071430 | 239 | Vector2D snakepos_b11 = {_x[i-12],_y[i-12]}; //Obtains the snake position. |
AhmedPlaymaker | 24:1c118b071430 | 240 | return snakepos_b11; |
AhmedPlaymaker | 24:1c118b071430 | 241 | } |
AhmedPlaymaker | 13:9785f2404045 | 242 | } |
AhmedPlaymaker | 24:1c118b071430 | 243 | Vector2D snakepos_b11 = {-20,-20}; //Obtains the snake position. |
AhmedPlaymaker | 24:1c118b071430 | 244 | return snakepos_b11; |
AhmedPlaymaker | 24:1c118b071430 | 245 | //printf("snakepos_b11 from player = %f %f \n", snakepos_b11.x, snakepos_b11.y); |
AhmedPlaymaker | 13:9785f2404045 | 246 | } |
AhmedPlaymaker | 13:9785f2404045 | 247 | |
AhmedPlaymaker | 13:9785f2404045 | 248 | Vector2D Snake::get_pos_before12(int length) //this sends data of following sprites. |
AhmedPlaymaker | 7:48ba87cd79b5 | 249 | { |
AhmedPlaymaker | 24:1c118b071430 | 250 | for(int i=13; i<=15; i++) { |
AhmedPlaymaker | 24:1c118b071430 | 251 | if(length == i) { |
AhmedPlaymaker | 24:1c118b071430 | 252 | Vector2D snakepos_b12 = {_x[i-13],_y[i-13]}; //Obtains the snake position. |
AhmedPlaymaker | 24:1c118b071430 | 253 | return snakepos_b12; |
AhmedPlaymaker | 24:1c118b071430 | 254 | } |
AhmedPlaymaker | 13:9785f2404045 | 255 | } |
AhmedPlaymaker | 24:1c118b071430 | 256 | Vector2D snakepos_b12 = {-20,-20}; //Obtains the snake position. |
AhmedPlaymaker | 24:1c118b071430 | 257 | return snakepos_b12; |
AhmedPlaymaker | 24:1c118b071430 | 258 | //printf("snakepos_b12 from player = %f %f \n", snakepos_b12.x, snakepos_b12.y); |
AhmedPlaymaker | 13:9785f2404045 | 259 | } |
AhmedPlaymaker | 13:9785f2404045 | 260 | |
AhmedPlaymaker | 13:9785f2404045 | 261 | Vector2D Snake::get_pos_before13(int length) //this sends data of following sprites. |
AhmedPlaymaker | 13:9785f2404045 | 262 | { |
AhmedPlaymaker | 24:1c118b071430 | 263 | for(int i=14; i<=15; i++) { |
AhmedPlaymaker | 24:1c118b071430 | 264 | if(length == i) { |
AhmedPlaymaker | 24:1c118b071430 | 265 | Vector2D snakepos_b13 = {_x[i-14],_y[i-14]}; //Obtains the snake position. |
AhmedPlaymaker | 24:1c118b071430 | 266 | return snakepos_b13; |
AhmedPlaymaker | 24:1c118b071430 | 267 | } |
AhmedPlaymaker | 13:9785f2404045 | 268 | } |
AhmedPlaymaker | 24:1c118b071430 | 269 | Vector2D snakepos_b13 = {-20,-20}; //Obtains the snake position. |
AhmedPlaymaker | 24:1c118b071430 | 270 | return snakepos_b13; |
AhmedPlaymaker | 24:1c118b071430 | 271 | //printf("snakepos_b13 from player = %f %f \n", snakepos_b13.x, snakepos_b13.y); |
AhmedPlaymaker | 13:9785f2404045 | 272 | } |
AhmedPlaymaker | 13:9785f2404045 | 273 | |
AhmedPlaymaker | 13:9785f2404045 | 274 | Vector2D Snake::get_pos_before14(int length) //this sends data of following sprites. |
AhmedPlaymaker | 13:9785f2404045 | 275 | { |
AhmedPlaymaker | 24:1c118b071430 | 276 | for(int i=15; i<=15; i++) { |
AhmedPlaymaker | 24:1c118b071430 | 277 | if(length == i) { |
AhmedPlaymaker | 24:1c118b071430 | 278 | Vector2D snakepos_b14 = {_x[i-15],_y[i-15]}; //Obtains the snake position. |
AhmedPlaymaker | 24:1c118b071430 | 279 | return snakepos_b14; |
AhmedPlaymaker | 24:1c118b071430 | 280 | } |
AhmedPlaymaker | 13:9785f2404045 | 281 | } |
AhmedPlaymaker | 24:1c118b071430 | 282 | Vector2D snakepos_b14 = {-20,-20}; //Obtains the snake position. |
AhmedPlaymaker | 24:1c118b071430 | 283 | return snakepos_b14; |
AhmedPlaymaker | 24:1c118b071430 | 284 | //printf("snakepos_b14 from player = %f %f \n", snakepos_b14.x, snakepos_b14.y); |
AhmedPlaymaker | 13:9785f2404045 | 285 | } |
AhmedPlaymaker | 13:9785f2404045 | 286 | |
AhmedPlaymaker | 18:b391caa5754c | 287 | |
AhmedPlaymaker | 13:9785f2404045 | 288 | |
AhmedPlaymaker | 22:ee698f66146f | 289 | void Snake::update(Direction d,float mag,int length, int speed, int* b) |
AhmedPlaymaker | 13:9785f2404045 | 290 | { |
AhmedPlaymaker | 13:9785f2404045 | 291 | _speed = speed; //Speed changes depending on how much you push the joystick.(As Of Now) |
AhmedPlaymaker | 8:890b986b16a4 | 292 | |
AhmedPlaymaker | 22:ee698f66146f | 293 | for(int i=0; i<=13; i++) { |
AhmedPlaymaker | 22:ee698f66146f | 294 | if(length > i+1) { |
AhmedPlaymaker | 22:ee698f66146f | 295 | if ((_x[i] > _x[i+1])&&(b[i+1] == 1)&&(b[i] == 1)) { |
AhmedPlaymaker | 22:ee698f66146f | 296 | _x[i]-=_speed; |
AhmedPlaymaker | 8:890b986b16a4 | 297 | } |
AhmedPlaymaker | 22:ee698f66146f | 298 | if ((_x[i] < _x[i+1])&&(b[i+1] == 1)&&(b[i] == 1)) { |
AhmedPlaymaker | 22:ee698f66146f | 299 | _x[i]+=_speed; |
AhmedPlaymaker | 22:ee698f66146f | 300 | } |
AhmedPlaymaker | 21:e41126528cc6 | 301 | } |
AhmedPlaymaker | 21:e41126528cc6 | 302 | } |
AhmedPlaymaker | 22:ee698f66146f | 303 | |
AhmedPlaymaker | 22:ee698f66146f | 304 | for(int i=14; i>=0; i--) { |
AhmedPlaymaker | 22:ee698f66146f | 305 | if((length == i+1)&&(b[i] == 1)) { |
AhmedPlaymaker | 22:ee698f66146f | 306 | if (d == E) { |
AhmedPlaymaker | 22:ee698f66146f | 307 | _x[i]+= _speed; |
AhmedPlaymaker | 22:ee698f66146f | 308 | } |
AhmedPlaymaker | 22:ee698f66146f | 309 | if (d == W) { |
AhmedPlaymaker | 22:ee698f66146f | 310 | _x[i]-= _speed; |
AhmedPlaymaker | 22:ee698f66146f | 311 | } |
AhmedPlaymaker | 22:ee698f66146f | 312 | } |
AhmedPlaymaker | 7:48ba87cd79b5 | 313 | } |
AhmedPlaymaker | 7:48ba87cd79b5 | 314 | |
AhmedPlaymaker | 9:d1d79d4ee673 | 315 | // the following makes sure that when the length is increased, the snake stays where it was when it ate food. |
AhmedPlaymaker | 7:48ba87cd79b5 | 316 | |
AhmedPlaymaker | 22:ee698f66146f | 317 | for(int i=3; i<=15; i++) { |
AhmedPlaymaker | 22:ee698f66146f | 318 | if(length < 2) { |
AhmedPlaymaker | 22:ee698f66146f | 319 | _x[1] = _x[0]; |
AhmedPlaymaker | 22:ee698f66146f | 320 | } |
AhmedPlaymaker | 22:ee698f66146f | 321 | else if(length < i) { |
AhmedPlaymaker | 22:ee698f66146f | 322 | _x[i-1] = _x[i-2]; |
AhmedPlaymaker | 22:ee698f66146f | 323 | } |
AhmedPlaymaker | 9:d1d79d4ee673 | 324 | } |
AhmedPlaymaker | 9:d1d79d4ee673 | 325 | |
AhmedPlaymaker | 7:48ba87cd79b5 | 326 | //Limits set so that the sprite does not travel off the screen. |
AhmedPlaymaker | 22:ee698f66146f | 327 | for(int i=0; i<=14; i++) { |
AhmedPlaymaker | 22:ee698f66146f | 328 | if (_x[i] <= 0) { |
AhmedPlaymaker | 22:ee698f66146f | 329 | _x[i] = 0; |
AhmedPlaymaker | 22:ee698f66146f | 330 | } |
AhmedPlaymaker | 22:ee698f66146f | 331 | if (_x[i] > 81) { |
AhmedPlaymaker | 22:ee698f66146f | 332 | _x[i] = 81; |
AhmedPlaymaker | 22:ee698f66146f | 333 | } |
AhmedPlaymaker | 8:890b986b16a4 | 334 | } |
AhmedPlaymaker | 7:48ba87cd79b5 | 335 | } |
AhmedPlaymaker | 7:48ba87cd79b5 | 336 |