Snake game snake library

Committer:
1012754868
Date:
Sun Apr 28 05:49:11 2019 +0000
Revision:
10:f63560a7e7ed
Parent:
9:e023c11f7737
update the death music

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Nefos 0:2eb4d7e86e2f 1 #include "Snake.h"
Nefos 0:2eb4d7e86e2f 2
Nefos 0:2eb4d7e86e2f 3
Nefos 2:5e04e34a3b66 4 #define WIDTH 84
Nefos 2:5e04e34a3b66 5 #define HEIGHT 48
Nefos 2:5e04e34a3b66 6 #define CEILING 8
Nefos 2:5e04e34a3b66 7 #define FLOOR 48
Nefos 2:5e04e34a3b66 8
1012754868 8:721a8dca7a25 9 snakePart snak;
1012754868 8:721a8dca7a25 10 int LIFE[7][7] = {
1012754868 8:721a8dca7a25 11
1012754868 8:721a8dca7a25 12 {0,1,0,0,0,1,0},
1012754868 8:721a8dca7a25 13 {1,1,1,0,1,1,1},
1012754868 8:721a8dca7a25 14 {1,1,1,1,1,1,1},
1012754868 8:721a8dca7a25 15 {0,1,1,1,1,1,0},
1012754868 8:721a8dca7a25 16 {0,0,1,1,1,0,0},
1012754868 8:721a8dca7a25 17 {0,0,0,1,0,0,0},
1012754868 8:721a8dca7a25 18 };
Nefos 1:93a4cb86f100 19
Nefos 1:93a4cb86f100 20
Nefos 0:2eb4d7e86e2f 21 Snake::Snake()
Nefos 0:2eb4d7e86e2f 22 {
Nefos 0:2eb4d7e86e2f 23
Nefos 0:2eb4d7e86e2f 24 }
Nefos 0:2eb4d7e86e2f 25 Snake::~Snake()
Nefos 0:2eb4d7e86e2f 26 {
Nefos 0:2eb4d7e86e2f 27
Nefos 0:2eb4d7e86e2f 28 }
Nefos 0:2eb4d7e86e2f 29
Nefos 6:cc8d2088f490 30 /************************Functions************************/
Nefos 6:cc8d2088f490 31
1012754868 8:721a8dca7a25 32 void Snake::init(int x, int y, int length, int _live){//initalizing the starting variables
Nefos 3:b24ef00836c5 33 live=_live;
1012754868 8:721a8dca7a25 34 _length = length;
1012754868 8:721a8dca7a25 35 _food.init();
1012754868 8:721a8dca7a25 36 initx=x;
1012754868 8:721a8dca7a25 37 inity=y;
1012754868 8:721a8dca7a25 38 initl=length;
1012754868 8:721a8dca7a25 39 snak._x[0] = x;
1012754868 8:721a8dca7a25 40 snak._y[0] = y;
1012754868 8:721a8dca7a25 41 snak._dirc[0] = length;
1012754868 8:721a8dca7a25 42 for (int i=1; i < _length ;i++)
Nefos 0:2eb4d7e86e2f 43 {
1012754868 8:721a8dca7a25 44 snak._x[i]=snak._x[0]+i;
1012754868 8:721a8dca7a25 45 snak._y[i]=snak._y[0];
1012754868 8:721a8dca7a25 46 snak._dirc[i]=1;
Nefos 0:2eb4d7e86e2f 47 }
1012754868 8:721a8dca7a25 48 snak._x[_length]=x+_length;
1012754868 8:721a8dca7a25 49 snak._y[_length]=y;
1012754868 8:721a8dca7a25 50 snak._dirc[_length]=1;
1012754868 8:721a8dca7a25 51 }
Nefos 0:2eb4d7e86e2f 52
1012754868 10:f63560a7e7ed 53 void Snake::drawsnake(N5110 &lcd, Gamepad &pad){
1012754868 10:f63560a7e7ed 54 check_WallCollision(lcd,pad);// if head==wall game over
1012754868 10:f63560a7e7ed 55 check_TailCollision(lcd,pad);
Nefos 3:b24ef00836c5 56 if (live!=0){
Nefos 3:b24ef00836c5 57 lcd.clear();
1012754868 8:721a8dca7a25 58 waitExpect=((float)_length/3)+5;//set wait so the game is speeding up
1012754868 8:721a8dca7a25 59 waitTime=(1/(waitExpect+_speed));
Nefos 7:a2f426a37e60 60 wait(waitTime);
1012754868 8:721a8dca7a25 61 _food.drawfood(lcd);//make first food
Nefos 7:a2f426a37e60 62 lcd.drawRect(0,8,84,48-8,FILL_TRANSPARENT);//draw arena
1012754868 8:721a8dca7a25 63 drawscore(lcd);
Nefos 7:a2f426a37e60 64 for ( int i=0; _length>i;i++){//draw snake
1012754868 8:721a8dca7a25 65
1012754868 8:721a8dca7a25 66 lcd.setPixel(snak._x[i],snak._y[i]);
1012754868 8:721a8dca7a25 67
Nefos 3:b24ef00836c5 68
Nefos 3:b24ef00836c5 69 lcd.refresh();
Nefos 3:b24ef00836c5 70 }
1012754868 8:721a8dca7a25 71 }
Nefos 4:c74ec3f409f9 72
1012754868 8:721a8dca7a25 73 }
1012754868 8:721a8dca7a25 74 void Snake::snakemov(Gamepad &pad){
Nefos 2:5e04e34a3b66 75
Nefos 3:b24ef00836c5 76 if (live!=0){
Nefos 0:2eb4d7e86e2f 77
Nefos 3:b24ef00836c5 78 d=pad.get_direction();
Nefos 3:b24ef00836c5 79
1012754868 8:721a8dca7a25 80 if (snak._dirc[_length-1]==1)//set direction according _dir
Nefos 3:b24ef00836c5 81 {
1012754868 8:721a8dca7a25 82 snak._x[_length]++;
Nefos 0:2eb4d7e86e2f 83 }
Nefos 3:b24ef00836c5 84
1012754868 8:721a8dca7a25 85 if (snak._dirc[_length-1]==2)
Nefos 3:b24ef00836c5 86 {
1012754868 8:721a8dca7a25 87 snak._y[_length]--;
Nefos 0:2eb4d7e86e2f 88
Nefos 0:2eb4d7e86e2f 89 }
Nefos 3:b24ef00836c5 90
1012754868 8:721a8dca7a25 91 if (snak._dirc[_length-1]==3)
Nefos 3:b24ef00836c5 92 {
1012754868 8:721a8dca7a25 93 snak._x[_length]--;
Nefos 1:93a4cb86f100 94 }
Nefos 1:93a4cb86f100 95
1012754868 8:721a8dca7a25 96 if (snak._dirc[_length-1]==4)
Nefos 3:b24ef00836c5 97 {
1012754868 8:721a8dca7a25 98 snak._y[_length]++;
Nefos 3:b24ef00836c5 99 }
Nefos 1:93a4cb86f100 100
Nefos 3:b24ef00836c5 101 for (int i=0 ;_length<i ;i++)
Nefos 3:b24ef00836c5 102 {
1012754868 8:721a8dca7a25 103 snak._x[i]=snak._x[i+1];
1012754868 8:721a8dca7a25 104 snak._y[i]=snak._y[i+1];
Nefos 3:b24ef00836c5 105 //printf("done");
Nefos 3:b24ef00836c5 106 }
Nefos 6:cc8d2088f490 107 //check dpad which way it is pointing
Nefos 6:cc8d2088f490 108 //set direction accordingly, 1 is right, up is 2, 3 is left and 4 is down
Nefos 6:cc8d2088f490 109 if (d==N){// if stick points up, go up
Nefos 3:b24ef00836c5 110
1012754868 8:721a8dca7a25 111 if (snak._dirc[_length-1]!=4)
Nefos 3:b24ef00836c5 112 {
1012754868 8:721a8dca7a25 113 snak._dirc[_length-1] = 2;
Nefos 3:b24ef00836c5 114 }
Nefos 3:b24ef00836c5 115
Nefos 3:b24ef00836c5 116 }
Nefos 3:b24ef00836c5 117
Nefos 6:cc8d2088f490 118 if (d==E){// if stick points right, go right
Nefos 0:2eb4d7e86e2f 119
1012754868 8:721a8dca7a25 120 if (snak._dirc[_length-1]!=3)
Nefos 0:2eb4d7e86e2f 121 {
1012754868 8:721a8dca7a25 122 snak._dirc[_length-1] = 1;
Nefos 3:b24ef00836c5 123 }
Nefos 3:b24ef00836c5 124
Nefos 3:b24ef00836c5 125 }
Nefos 6:cc8d2088f490 126
Nefos 6:cc8d2088f490 127 if (d==W){// if stick points left, go left
Nefos 3:b24ef00836c5 128
1012754868 8:721a8dca7a25 129 if (snak._dirc[_length-1]!=1)
Nefos 3:b24ef00836c5 130 {
1012754868 8:721a8dca7a25 131 snak._dirc[_length-1] = 3;
Nefos 0:2eb4d7e86e2f 132 }
Nefos 0:2eb4d7e86e2f 133
Nefos 0:2eb4d7e86e2f 134
Nefos 0:2eb4d7e86e2f 135 }
Nefos 6:cc8d2088f490 136
Nefos 6:cc8d2088f490 137 if (d==S){// if stick points down, go down
Nefos 0:2eb4d7e86e2f 138
1012754868 8:721a8dca7a25 139 if (snak._dirc[_length-1]!=2)
Nefos 1:93a4cb86f100 140 {
1012754868 8:721a8dca7a25 141 snak._dirc[_length-1] = 4;
Nefos 1:93a4cb86f100 142 }
Nefos 1:93a4cb86f100 143
Nefos 1:93a4cb86f100 144
Nefos 1:93a4cb86f100 145 }
Nefos 3:b24ef00836c5 146
Nefos 3:b24ef00836c5 147 printf("updated ");
1012754868 9:e023c11f7737 148 eat(pad);
Nefos 3:b24ef00836c5 149 }//live loop
Nefos 6:cc8d2088f490 150 }//end of update
Nefos 3:b24ef00836c5 151
1012754868 9:e023c11f7737 152 void Snake::eat(Gamepad &pad){
Nefos 3:b24ef00836c5 153
1012754868 8:721a8dca7a25 154 Foodpos foodPos = _food.returnPos();
1012754868 8:721a8dca7a25 155 if(snak._x[_length-1]==foodPos.x && snak._y[_length-1]== foodPos.y)
Nefos 3:b24ef00836c5 156 {
1012754868 8:721a8dca7a25 157 snak._x[_length+1]=snak._x[_length];//-1
1012754868 8:721a8dca7a25 158 snak._y[_length+1]=snak._y[_length];
1012754868 8:721a8dca7a25 159 snak._dirc[_length+1]=snak._dirc[_length-1];
Nefos 6:cc8d2088f490 160 _length=_length+1;//if head == food, _length++
1012754868 8:721a8dca7a25 161 _food.createfood();//spawn new food
1012754868 9:e023c11f7737 162 Tone_1(pad);
Nefos 3:b24ef00836c5 163 }
Nefos 6:cc8d2088f490 164 }//end of addPoint
Nefos 0:2eb4d7e86e2f 165
1012754868 10:f63560a7e7ed 166 int Snake::dead(N5110 &lcd, Gamepad &pad){
Nefos 3:b24ef00836c5 167
Nefos 4:c74ec3f409f9 168
Nefos 7:a2f426a37e60 169 live--; //take a life away
1012754868 8:721a8dca7a25 170 //while (live==0){//dead reset game
1012754868 8:721a8dca7a25 171 while(live==0) {
Nefos 3:b24ef00836c5 172 lcd.clear();
Nefos 3:b24ef00836c5 173 lcd.printString("Game Over",0,1);
Nefos 7:a2f426a37e60 174 lcd.printString("Press Reset",0,2);
1012754868 10:f63560a7e7ed 175 lcd.printString("To Back",0,4);
1012754868 10:f63560a7e7ed 176 lcd.refresh();
1012754868 10:f63560a7e7ed 177
1012754868 10:f63560a7e7ed 178 pad.tone(0.0,0.5); //gap
1012754868 10:f63560a7e7ed 179 wait(0.5);
1012754868 10:f63560a7e7ed 180 if(pad.check_event(Gamepad::BACK_PRESSED) == true){
1012754868 10:f63560a7e7ed 181 return 0;
1012754868 10:f63560a7e7ed 182 }
1012754868 10:f63560a7e7ed 183 pad.tone(523.0,0.25); //1.
1012754868 10:f63560a7e7ed 184 wait(0.25);
1012754868 10:f63560a7e7ed 185 if(pad.check_event(Gamepad::BACK_PRESSED) == true){
1012754868 10:f63560a7e7ed 186 return 0;
1012754868 10:f63560a7e7ed 187 }
1012754868 10:f63560a7e7ed 188 pad.tone(587.0,0.25); //2.
1012754868 10:f63560a7e7ed 189 wait(0.25);
1012754868 10:f63560a7e7ed 190 if(pad.check_event(Gamepad::BACK_PRESSED) == true){
1012754868 10:f63560a7e7ed 191 return 0;
1012754868 10:f63560a7e7ed 192 }
1012754868 10:f63560a7e7ed 193 pad.tone(659.0,0.25); //3.
1012754868 10:f63560a7e7ed 194 wait(0.25);
1012754868 10:f63560a7e7ed 195 if(pad.check_event(Gamepad::BACK_PRESSED) == true){
1012754868 10:f63560a7e7ed 196 return 0;
1012754868 10:f63560a7e7ed 197 }
1012754868 10:f63560a7e7ed 198 pad.tone(523.0,0.25); //1.
1012754868 10:f63560a7e7ed 199 wait(0.25);
1012754868 10:f63560a7e7ed 200 pad.tone(784.0,0.75); //5-
1012754868 10:f63560a7e7ed 201 wait(0.75);
1012754868 10:f63560a7e7ed 202 pad.tone(659.0,0.25); //3.
1012754868 10:f63560a7e7ed 203 wait(0.25);
1012754868 10:f63560a7e7ed 204 if(pad.check_event(Gamepad::BACK_PRESSED) == true){
1012754868 10:f63560a7e7ed 205 return 0;
1012754868 10:f63560a7e7ed 206 }
1012754868 10:f63560a7e7ed 207 pad.tone(587.0,0.5); //2
1012754868 10:f63560a7e7ed 208 wait(0.5);
1012754868 10:f63560a7e7ed 209 pad.tone(784.0,0.5); //5
1012754868 10:f63560a7e7ed 210 wait(0.5);
1012754868 10:f63560a7e7ed 211 pad.tone(587.0,0.5); //2
1012754868 10:f63560a7e7ed 212 wait(0.5);
1012754868 10:f63560a7e7ed 213 if(pad.check_event(Gamepad::BACK_PRESSED) == true){
1012754868 10:f63560a7e7ed 214 return 0;
1012754868 10:f63560a7e7ed 215 }
1012754868 10:f63560a7e7ed 216 pad.tone(523.0,0.25); //1.
1012754868 10:f63560a7e7ed 217 wait(0.25);
1012754868 10:f63560a7e7ed 218 pad.tone(440.0,0.25); //l6.
1012754868 10:f63560a7e7ed 219 wait(0.25);
1012754868 10:f63560a7e7ed 220 pad.tone(659.0,0.75); //3-
1012754868 10:f63560a7e7ed 221 wait(0.75);
1012754868 10:f63560a7e7ed 222 if(pad.check_event(Gamepad::BACK_PRESSED) == true){
1012754868 10:f63560a7e7ed 223 return 0;
1012754868 10:f63560a7e7ed 224 }
1012754868 10:f63560a7e7ed 225 pad.tone(523.0,0.25); //1.
1012754868 10:f63560a7e7ed 226 wait(0.25);
1012754868 10:f63560a7e7ed 227 pad.tone(494.0,0.5); //l7
1012754868 10:f63560a7e7ed 228 wait(0.5);
1012754868 10:f63560a7e7ed 229 pad.tone(0.0,0.5); //gap
1012754868 10:f63560a7e7ed 230 wait(0.5);
1012754868 10:f63560a7e7ed 231 pad.tone(494.0,0.5); //l7
1012754868 10:f63560a7e7ed 232 wait(0.5);
1012754868 10:f63560a7e7ed 233 if(pad.check_event(Gamepad::BACK_PRESSED) == true){
1012754868 10:f63560a7e7ed 234 return 0;
1012754868 10:f63560a7e7ed 235 }
1012754868 10:f63560a7e7ed 236 pad.tone(440.0,0.5); //l6
1012754868 10:f63560a7e7ed 237 wait(0.5);
1012754868 10:f63560a7e7ed 238 pad.tone(494.0,0.5); //l7
1012754868 10:f63560a7e7ed 239 wait(0.5);
1012754868 10:f63560a7e7ed 240 pad.tone(523.0,0.25); //1.
1012754868 10:f63560a7e7ed 241 wait(0.25);
1012754868 10:f63560a7e7ed 242 if(pad.check_event(Gamepad::BACK_PRESSED) == true){
1012754868 10:f63560a7e7ed 243 return 0;
1012754868 10:f63560a7e7ed 244 }
1012754868 10:f63560a7e7ed 245 pad.tone(587.0,0.25); //2.
1012754868 10:f63560a7e7ed 246 wait(0.25);
1012754868 10:f63560a7e7ed 247 pad.tone(392.0,0.5); //l5
1012754868 10:f63560a7e7ed 248 wait(0.5);
1012754868 10:f63560a7e7ed 249 if(pad.check_event(Gamepad::BACK_PRESSED) == true){
1012754868 10:f63560a7e7ed 250 return 0;
1012754868 10:f63560a7e7ed 251 }
1012754868 10:f63560a7e7ed 252 pad.tone(523.0,0.5); //1
1012754868 10:f63560a7e7ed 253 wait(0.5);
1012754868 10:f63560a7e7ed 254 pad.tone(587.0,0.25); //2.
1012754868 10:f63560a7e7ed 255 wait(0.25);
1012754868 10:f63560a7e7ed 256 if(pad.check_event(Gamepad::BACK_PRESSED) == true){
1012754868 10:f63560a7e7ed 257 return 0;
1012754868 10:f63560a7e7ed 258 }
1012754868 10:f63560a7e7ed 259 pad.tone(659.0,0.25); //3.
1012754868 10:f63560a7e7ed 260 wait(0.25);
1012754868 10:f63560a7e7ed 261 pad.tone(698.0,0.5); //4
1012754868 10:f63560a7e7ed 262 wait(0.5);
1012754868 10:f63560a7e7ed 263 if(pad.check_event(Gamepad::BACK_PRESSED) == true){
1012754868 10:f63560a7e7ed 264 return 0;
1012754868 10:f63560a7e7ed 265 }
1012754868 10:f63560a7e7ed 266 pad.tone(698.0,0.25); //4.
1012754868 10:f63560a7e7ed 267 wait(0.25);
1012754868 10:f63560a7e7ed 268 pad.tone(659.0,0.25); //3.
1012754868 10:f63560a7e7ed 269 wait(0.25);
1012754868 10:f63560a7e7ed 270 pad.tone(587.0,0.25); //2.
1012754868 10:f63560a7e7ed 271 wait(0.25);
1012754868 10:f63560a7e7ed 272 if(pad.check_event(Gamepad::BACK_PRESSED) == true){
1012754868 10:f63560a7e7ed 273 return 0;
1012754868 10:f63560a7e7ed 274 }
1012754868 10:f63560a7e7ed 275 pad.tone(523.0,0.25); //1.
1012754868 10:f63560a7e7ed 276 wait(0.25);
1012754868 10:f63560a7e7ed 277 pad.tone(587.0,0.5); //2
1012754868 10:f63560a7e7ed 278 wait(0.5);
1012754868 10:f63560a7e7ed 279 if(pad.check_event(Gamepad::BACK_PRESSED) == true){
1012754868 10:f63560a7e7ed 280 return 0;
1012754868 10:f63560a7e7ed 281 }
1012754868 10:f63560a7e7ed 282 pad.tone(0.0,5); //gap
1012754868 10:f63560a7e7ed 283 wait(0.5);
1012754868 10:f63560a7e7ed 284 pad.tone(523.0,0.25); //1.
1012754868 10:f63560a7e7ed 285 wait(0.25);
1012754868 10:f63560a7e7ed 286 pad.tone(587.0,0.25); //2.
1012754868 10:f63560a7e7ed 287 wait(0.25);
1012754868 10:f63560a7e7ed 288 if(pad.check_event(Gamepad::BACK_PRESSED) == true){
1012754868 10:f63560a7e7ed 289 return 0;
1012754868 10:f63560a7e7ed 290 }
1012754868 10:f63560a7e7ed 291 pad.tone(659.0,0.25); //3.
1012754868 10:f63560a7e7ed 292 wait(0.25);
1012754868 10:f63560a7e7ed 293 pad.tone(523.0,0.25); //1.
1012754868 10:f63560a7e7ed 294 wait(0.25);
1012754868 10:f63560a7e7ed 295 pad.tone(784.0,0.75); //5-
1012754868 10:f63560a7e7ed 296 wait(0.75);
1012754868 10:f63560a7e7ed 297 if(pad.check_event(Gamepad::BACK_PRESSED) == true){
1012754868 10:f63560a7e7ed 298 return 0;
1012754868 10:f63560a7e7ed 299 }
1012754868 10:f63560a7e7ed 300 pad.tone(659.0,0.25); //3.
1012754868 10:f63560a7e7ed 301 wait(0.25);
1012754868 10:f63560a7e7ed 302 pad.tone(587.0,0.5); //2
1012754868 10:f63560a7e7ed 303 wait(0.5);
1012754868 10:f63560a7e7ed 304 pad.tone(784.0,0.5); //5
1012754868 10:f63560a7e7ed 305 wait(0.5);
1012754868 10:f63560a7e7ed 306 if(pad.check_event(Gamepad::BACK_PRESSED) == true){
1012754868 10:f63560a7e7ed 307 return 0;
1012754868 10:f63560a7e7ed 308 }
1012754868 10:f63560a7e7ed 309 pad.tone(587.0,0.5); //2
1012754868 10:f63560a7e7ed 310 wait(0.5);
1012754868 10:f63560a7e7ed 311 pad.tone(523.0,0.25); //1.
1012754868 10:f63560a7e7ed 312 wait(0.25);
1012754868 10:f63560a7e7ed 313 if(pad.check_event(Gamepad::BACK_PRESSED) == true){
1012754868 10:f63560a7e7ed 314 return 0;
1012754868 10:f63560a7e7ed 315 }
1012754868 10:f63560a7e7ed 316 pad.tone(440.0,0.25); //l6.
1012754868 10:f63560a7e7ed 317 wait(0.25);
1012754868 10:f63560a7e7ed 318 pad.tone(440.0,0.5); //l6
1012754868 10:f63560a7e7ed 319 wait(0.5);
1012754868 10:f63560a7e7ed 320 pad.tone(494.0,0.25); //l7.
1012754868 10:f63560a7e7ed 321 wait(0.25);
1012754868 10:f63560a7e7ed 322 if(pad.check_event(Gamepad::BACK_PRESSED) == true){
1012754868 10:f63560a7e7ed 323 return 0;
1012754868 10:f63560a7e7ed 324 }
1012754868 10:f63560a7e7ed 325 pad.tone(523.0,0.25); //1.
1012754868 10:f63560a7e7ed 326 wait(0.25);
1012754868 10:f63560a7e7ed 327 pad.tone(392.0,0.5); //l5
1012754868 10:f63560a7e7ed 328 wait(0.5);
1012754868 10:f63560a7e7ed 329 if(pad.check_event(Gamepad::BACK_PRESSED) == true){
1012754868 10:f63560a7e7ed 330 return 0;
1012754868 10:f63560a7e7ed 331 }
1012754868 10:f63560a7e7ed 332 pad.tone(0.0,0.5); //gap
1012754868 10:f63560a7e7ed 333 wait(0.5);
1012754868 10:f63560a7e7ed 334 pad.tone(0.0,0.25); //gap.
1012754868 10:f63560a7e7ed 335 wait(0.25);
1012754868 10:f63560a7e7ed 336 pad.tone(494.0,0.5); //l7
1012754868 10:f63560a7e7ed 337 wait(0.5);
1012754868 10:f63560a7e7ed 338 pad.tone(523.0,0.25); //1.
1012754868 10:f63560a7e7ed 339 wait(0.25);
1012754868 10:f63560a7e7ed 340 if(pad.check_event(Gamepad::BACK_PRESSED) == true){
1012754868 10:f63560a7e7ed 341 return 0;
1012754868 10:f63560a7e7ed 342 }
1012754868 10:f63560a7e7ed 343 pad.tone(587.0,0.25); //2.
1012754868 10:f63560a7e7ed 344 wait(0.25);
1012754868 10:f63560a7e7ed 345 pad.tone(392.0,0.5); //l5
1012754868 10:f63560a7e7ed 346 wait(0.5);
1012754868 10:f63560a7e7ed 347 pad.tone(523.0,0.5); //1
1012754868 10:f63560a7e7ed 348 wait(0.5);
1012754868 10:f63560a7e7ed 349 if(pad.check_event(Gamepad::BACK_PRESSED) == true){
1012754868 10:f63560a7e7ed 350 return 0;
1012754868 10:f63560a7e7ed 351 }
1012754868 10:f63560a7e7ed 352 pad.tone(587.0,0.25); //2.
1012754868 10:f63560a7e7ed 353 wait(0.25);
1012754868 10:f63560a7e7ed 354 pad.tone(659.0,0.25); //3.
1012754868 10:f63560a7e7ed 355 wait(0.25);
1012754868 10:f63560a7e7ed 356 pad.tone(698.0,0.5); //4
1012754868 10:f63560a7e7ed 357 wait(0.5);
1012754868 10:f63560a7e7ed 358 pad.tone(698.0,0.25); //4.
1012754868 10:f63560a7e7ed 359 wait(0.25);
1012754868 10:f63560a7e7ed 360 pad.tone(659.0,0.25); //3.
1012754868 10:f63560a7e7ed 361 wait(0.25);
1012754868 10:f63560a7e7ed 362 if(pad.check_event(Gamepad::BACK_PRESSED) == true){
1012754868 10:f63560a7e7ed 363 return 0;
1012754868 10:f63560a7e7ed 364 }
1012754868 10:f63560a7e7ed 365 pad.tone(587.0,0.25); //2.
1012754868 10:f63560a7e7ed 366 wait(0.25);
1012754868 10:f63560a7e7ed 367 pad.tone(523.0,0.25); //1.
1012754868 10:f63560a7e7ed 368 wait(0.25);
1012754868 10:f63560a7e7ed 369 pad.tone(523.0,0.5); //1
1012754868 10:f63560a7e7ed 370 wait(0.5);
1012754868 10:f63560a7e7ed 371 if(pad.check_event(Gamepad::BACK_PRESSED) == true){
1012754868 10:f63560a7e7ed 372 return 0;
1012754868 10:f63560a7e7ed 373 }
1012754868 10:f63560a7e7ed 374 pad.tone(0.0,0.5); //gap
1012754868 10:f63560a7e7ed 375 wait(0.5);
1012754868 10:f63560a7e7ed 376 pad.tone(0.0,0.5); //gap
1012754868 10:f63560a7e7ed 377 wait(0.5);
1012754868 10:f63560a7e7ed 378 if(pad.check_event(Gamepad::BACK_PRESSED) == true){
1012754868 10:f63560a7e7ed 379 return 0;
1012754868 10:f63560a7e7ed 380 }
1012754868 10:f63560a7e7ed 381 pad.tone(659.0,0.25); //3.
1012754868 10:f63560a7e7ed 382 wait(0.25);
1012754868 10:f63560a7e7ed 383 pad.tone(698.0,0.25); //4.
1012754868 10:f63560a7e7ed 384 wait(0.25);
1012754868 10:f63560a7e7ed 385 pad.tone(784.0,0.5); //5
1012754868 10:f63560a7e7ed 386 wait(0.5);
1012754868 10:f63560a7e7ed 387 if(pad.check_event(Gamepad::BACK_PRESSED) == true){
1012754868 10:f63560a7e7ed 388 return 0;
1012754868 10:f63560a7e7ed 389 }
1012754868 10:f63560a7e7ed 390 pad.tone(784.0,0.5); //5
1012754868 10:f63560a7e7ed 391 wait(0.5);
1012754868 10:f63560a7e7ed 392 pad.tone(784.0,0.5); //5
1012754868 10:f63560a7e7ed 393 wait(0.5);
1012754868 10:f63560a7e7ed 394 pad.tone(784.0,0.5); //5
1012754868 10:f63560a7e7ed 395 wait(0.5);
1012754868 10:f63560a7e7ed 396 if(pad.check_event(Gamepad::BACK_PRESSED) == true){
1012754868 10:f63560a7e7ed 397 return 0;
1012754868 10:f63560a7e7ed 398 }
1012754868 10:f63560a7e7ed 399 pad.tone(784.0,0.25); //5.
1012754868 10:f63560a7e7ed 400 wait(0.25);
1012754868 10:f63560a7e7ed 401 pad.tone(880.0,0.25); //6.
1012754868 10:f63560a7e7ed 402 wait(0.25);
1012754868 10:f63560a7e7ed 403 pad.tone(784.0,0.25); //5.
1012754868 10:f63560a7e7ed 404 wait(0.25);
1012754868 10:f63560a7e7ed 405 pad.tone(698.0,0.25); //4.
1012754868 10:f63560a7e7ed 406 wait(0.25);
1012754868 10:f63560a7e7ed 407 if(pad.check_event(Gamepad::BACK_PRESSED) == true){
1012754868 10:f63560a7e7ed 408 return 0;
1012754868 10:f63560a7e7ed 409 }
1012754868 10:f63560a7e7ed 410 pad.tone(659.0,0.5); //3
1012754868 10:f63560a7e7ed 411 wait(0.5);
1012754868 10:f63560a7e7ed 412 pad.tone(659.0,0.5); //3
1012754868 10:f63560a7e7ed 413 wait(0.5);
1012754868 10:f63560a7e7ed 414 pad.tone(659.0,0.5); //3
1012754868 10:f63560a7e7ed 415 wait(0.5);
1012754868 10:f63560a7e7ed 416 if(pad.check_event(Gamepad::BACK_PRESSED) == true){
1012754868 10:f63560a7e7ed 417 return 0;
1012754868 10:f63560a7e7ed 418 }
1012754868 10:f63560a7e7ed 419 pad.tone(659.0,0.5); //3
1012754868 10:f63560a7e7ed 420 wait(0.5);
1012754868 10:f63560a7e7ed 421 pad.tone(659.0,0.25); //3.
1012754868 10:f63560a7e7ed 422 wait(0.25);
1012754868 10:f63560a7e7ed 423 pad.tone(698.0,0.25); //4.
1012754868 10:f63560a7e7ed 424 wait(0.25);
1012754868 10:f63560a7e7ed 425 if(pad.check_event(Gamepad::BACK_PRESSED) == true){
1012754868 10:f63560a7e7ed 426 return 0;
1012754868 10:f63560a7e7ed 427 }
1012754868 10:f63560a7e7ed 428 pad.tone(659.0,0.25); //3.
1012754868 10:f63560a7e7ed 429 wait(0.25);
1012754868 10:f63560a7e7ed 430 pad.tone(587.0,0.25); //2.
1012754868 10:f63560a7e7ed 431 wait(0.25);
1012754868 10:f63560a7e7ed 432 pad.tone(523.0,0.5); //1
1012754868 10:f63560a7e7ed 433 wait(0.5);
1012754868 10:f63560a7e7ed 434 if(pad.check_event(Gamepad::BACK_PRESSED) == true){
1012754868 10:f63560a7e7ed 435 return 0;
1012754868 10:f63560a7e7ed 436 }
1012754868 10:f63560a7e7ed 437 pad.tone(523.0,0.5); //1
1012754868 10:f63560a7e7ed 438 wait(0.5);
1012754868 10:f63560a7e7ed 439 pad.tone(523.0,0.5); //1.
1012754868 10:f63560a7e7ed 440 wait(0.5);
1012754868 10:f63560a7e7ed 441 pad.tone(494.0,0.25); //l7.
1012754868 10:f63560a7e7ed 442 wait(0.25);
1012754868 10:f63560a7e7ed 443 if(pad.check_event(Gamepad::BACK_PRESSED) == true){
1012754868 10:f63560a7e7ed 444 return 0;
1012754868 10:f63560a7e7ed 445 }
1012754868 10:f63560a7e7ed 446 pad.tone(440.0,0.5); //l6
1012754868 10:f63560a7e7ed 447 wait(0.5);
1012754868 10:f63560a7e7ed 448 pad.tone(494.0,0.5); //l7
1012754868 10:f63560a7e7ed 449 wait(0.5);
1012754868 10:f63560a7e7ed 450 pad.tone(494.0,0.25); //l7.
1012754868 10:f63560a7e7ed 451 wait(0.25);
1012754868 10:f63560a7e7ed 452 if(pad.check_event(Gamepad::BACK_PRESSED) == true){
1012754868 10:f63560a7e7ed 453 return 0;
1012754868 10:f63560a7e7ed 454 }
1012754868 10:f63560a7e7ed 455 pad.tone(523.0,0.25); //1.
1012754868 10:f63560a7e7ed 456 wait(0.25);
1012754868 10:f63560a7e7ed 457 pad.tone(587.0,0.5); //2
1012754868 10:f63560a7e7ed 458 wait(0.5);
1012754868 10:f63560a7e7ed 459 pad.tone(587.0,0.25); //2.
1012754868 10:f63560a7e7ed 460 wait(0.25);
1012754868 10:f63560a7e7ed 461 if(pad.check_event(Gamepad::BACK_PRESSED) == true){
1012754868 10:f63560a7e7ed 462 return 0;
1012754868 10:f63560a7e7ed 463 }
1012754868 10:f63560a7e7ed 464 pad.tone(659.0,0.25); //3.
1012754868 10:f63560a7e7ed 465 wait(0.25);
1012754868 10:f63560a7e7ed 466 pad.tone(587.0,0.25); //2.
1012754868 10:f63560a7e7ed 467 wait(0.25);
1012754868 10:f63560a7e7ed 468 pad.tone(659.0,0.25); //3.
1012754868 10:f63560a7e7ed 469 wait(0.25);
1012754868 10:f63560a7e7ed 470 if(pad.check_event(Gamepad::BACK_PRESSED) == true){
1012754868 10:f63560a7e7ed 471 return 0;
1012754868 10:f63560a7e7ed 472 }
1012754868 10:f63560a7e7ed 473 pad.tone(587.0,0.5); //2
1012754868 10:f63560a7e7ed 474 wait(0.5);
1012754868 10:f63560a7e7ed 475 pad.tone(0.0,0.5); //gap
1012754868 10:f63560a7e7ed 476 wait(0.5);
1012754868 10:f63560a7e7ed 477 pad.tone(659.0,0.25); //3.
1012754868 10:f63560a7e7ed 478 wait(0.25);
1012754868 10:f63560a7e7ed 479 if(pad.check_event(Gamepad::BACK_PRESSED) == true){
1012754868 10:f63560a7e7ed 480 return 0;
1012754868 10:f63560a7e7ed 481 }
1012754868 10:f63560a7e7ed 482 pad.tone(698.0,0.25); //4.
1012754868 10:f63560a7e7ed 483 wait(0.25);
1012754868 10:f63560a7e7ed 484 pad.tone(784.0,0.5); //5
1012754868 10:f63560a7e7ed 485 wait(0.5);
1012754868 10:f63560a7e7ed 486 pad.tone(784.0,0.5); //5
1012754868 10:f63560a7e7ed 487 wait(0.5);
1012754868 10:f63560a7e7ed 488 if(pad.check_event(Gamepad::BACK_PRESSED) == true){
1012754868 10:f63560a7e7ed 489 return 0;
1012754868 10:f63560a7e7ed 490 }
1012754868 10:f63560a7e7ed 491 pad.tone(784.0,0.5); //5
1012754868 10:f63560a7e7ed 492 wait(0.5);
1012754868 10:f63560a7e7ed 493 pad.tone(784.0,0.5); //5
1012754868 10:f63560a7e7ed 494 wait(0.5);
1012754868 10:f63560a7e7ed 495 if(pad.check_event(Gamepad::BACK_PRESSED) == true){
1012754868 10:f63560a7e7ed 496 return 0;
1012754868 10:f63560a7e7ed 497 }
1012754868 10:f63560a7e7ed 498 pad.tone(784.0,0.25); //5.
1012754868 10:f63560a7e7ed 499 wait(0.25);
1012754868 10:f63560a7e7ed 500 pad.tone(880.0,0.25); //6.
1012754868 10:f63560a7e7ed 501 wait(0.25);
1012754868 10:f63560a7e7ed 502 pad.tone(784.0,0.25); //5.
1012754868 10:f63560a7e7ed 503 wait(0.25);
1012754868 10:f63560a7e7ed 504 if(pad.check_event(Gamepad::BACK_PRESSED) == true){
1012754868 10:f63560a7e7ed 505 return 0;
1012754868 10:f63560a7e7ed 506 }
1012754868 10:f63560a7e7ed 507 pad.tone(698.0,0.25); //4.
1012754868 10:f63560a7e7ed 508 wait(0.25);
1012754868 10:f63560a7e7ed 509 pad.tone(659.0,0.5); //3
1012754868 10:f63560a7e7ed 510 wait(0.5);
1012754868 10:f63560a7e7ed 511 pad.tone(659.0,0.5); //3
1012754868 10:f63560a7e7ed 512 wait(0.5);
1012754868 10:f63560a7e7ed 513 if(pad.check_event(Gamepad::BACK_PRESSED) == true){
1012754868 10:f63560a7e7ed 514 return 0;
1012754868 10:f63560a7e7ed 515 }
1012754868 10:f63560a7e7ed 516 pad.tone(659.0,0.5); //3
1012754868 10:f63560a7e7ed 517 wait(0.5);
1012754868 10:f63560a7e7ed 518 pad.tone(659.0,0.25); //3.
1012754868 10:f63560a7e7ed 519 wait(0.25);
1012754868 10:f63560a7e7ed 520 pad.tone(698.0,0.25); //4.
1012754868 10:f63560a7e7ed 521 wait(0.25);
1012754868 10:f63560a7e7ed 522 if(pad.check_event(Gamepad::BACK_PRESSED) == true){
1012754868 10:f63560a7e7ed 523 return 0;
1012754868 10:f63560a7e7ed 524 }
1012754868 10:f63560a7e7ed 525 pad.tone(659.0,0.25); //3.
1012754868 10:f63560a7e7ed 526 wait(0.25);
1012754868 10:f63560a7e7ed 527 pad.tone(587.0,0.25); //2.
1012754868 10:f63560a7e7ed 528 wait(0.25);
1012754868 10:f63560a7e7ed 529 if(pad.check_event(Gamepad::BACK_PRESSED) == true){
1012754868 10:f63560a7e7ed 530 return 0;
1012754868 10:f63560a7e7ed 531 }
1012754868 10:f63560a7e7ed 532 pad.tone(523.0,0.25); //1.
1012754868 10:f63560a7e7ed 533 wait(0.25);
1012754868 10:f63560a7e7ed 534
1012754868 10:f63560a7e7ed 535 pad.tone(494.0,0.25); //l7.
1012754868 10:f63560a7e7ed 536 wait(0.25);
1012754868 10:f63560a7e7ed 537 pad.tone(440.0,0.5); //l6
1012754868 10:f63560a7e7ed 538 wait(0.5);
1012754868 10:f63560a7e7ed 539 if(pad.check_event(Gamepad::BACK_PRESSED) == true){
1012754868 10:f63560a7e7ed 540 return 0;
1012754868 10:f63560a7e7ed 541 }
1012754868 10:f63560a7e7ed 542 pad.tone(440.0,0.25); //l6.
1012754868 10:f63560a7e7ed 543 wait(0.25);
1012754868 10:f63560a7e7ed 544 pad.tone(494.0,0.25); //l7.
1012754868 10:f63560a7e7ed 545 wait(0.25);
1012754868 10:f63560a7e7ed 546 pad.tone(523.0,0.25); //1.
1012754868 10:f63560a7e7ed 547 wait(0.25);
1012754868 10:f63560a7e7ed 548 if(pad.check_event(Gamepad::BACK_PRESSED) == true){
1012754868 10:f63560a7e7ed 549 return 0;
1012754868 10:f63560a7e7ed 550 }
1012754868 10:f63560a7e7ed 551 pad.tone(587.0,0.25); //2.
1012754868 10:f63560a7e7ed 552 wait(0.25);
1012754868 10:f63560a7e7ed 553 pad.tone(392.0,0.5); //l5
1012754868 10:f63560a7e7ed 554 wait(0.5);
1012754868 10:f63560a7e7ed 555 pad.tone(523.0,0.5); //1
1012754868 10:f63560a7e7ed 556 wait(0.5);
1012754868 10:f63560a7e7ed 557 if(pad.check_event(Gamepad::BACK_PRESSED) == true){
1012754868 10:f63560a7e7ed 558 return 0;
1012754868 10:f63560a7e7ed 559 }
1012754868 10:f63560a7e7ed 560 pad.tone(587.0,0.25); //2.
1012754868 10:f63560a7e7ed 561 wait(0.25);
1012754868 10:f63560a7e7ed 562 pad.tone(659.0,0.25); //3.
1012754868 10:f63560a7e7ed 563 wait(0.25);
1012754868 10:f63560a7e7ed 564 pad.tone(587.0,0.75); //2-
1012754868 10:f63560a7e7ed 565 wait(0.75);
1012754868 10:f63560a7e7ed 566 if(pad.check_event(Gamepad::BACK_PRESSED) == true){
1012754868 10:f63560a7e7ed 567 return 0;
1012754868 10:f63560a7e7ed 568 }
1012754868 10:f63560a7e7ed 569 pad.tone(587.0,0.25); //2.
1012754868 10:f63560a7e7ed 570 wait(0.25);
1012754868 10:f63560a7e7ed 571 pad.tone(587.0,0.25); //2.
1012754868 10:f63560a7e7ed 572 wait(0.25);
1012754868 10:f63560a7e7ed 573 pad.tone(523.0,0.25); //1.
1012754868 10:f63560a7e7ed 574 wait(0.25);
1012754868 10:f63560a7e7ed 575 if(pad.check_event(Gamepad::BACK_PRESSED) == true){
1012754868 10:f63560a7e7ed 576 return 0;
1012754868 10:f63560a7e7ed 577 }
1012754868 10:f63560a7e7ed 578 pad.tone(523.0,0.5); //1
1012754868 10:f63560a7e7ed 579 wait(0.5);
1012754868 10:f63560a7e7ed 580 pad.tone(0.0,0.5); //gap
1012754868 10:f63560a7e7ed 581 wait(0.5);
1012754868 10:f63560a7e7ed 582 pad.tone(0.0,0.5); //gap
1012754868 10:f63560a7e7ed 583 wait(0.5);
1012754868 10:f63560a7e7ed 584 if(pad.check_event(Gamepad::BACK_PRESSED) == true){
1012754868 10:f63560a7e7ed 585 return 0;
1012754868 10:f63560a7e7ed 586 }
1012754868 10:f63560a7e7ed 587
1012754868 10:f63560a7e7ed 588 }
1012754868 10:f63560a7e7ed 589 if(Highest_score < (_length - 5)){
1012754868 10:f63560a7e7ed 590 Highest_score = _length - 5;
Nefos 3:b24ef00836c5 591 }
1012754868 8:721a8dca7a25 592 init(initx,inity,initl,live);
1012754868 8:721a8dca7a25 593 //end of deadSnake
1012754868 10:f63560a7e7ed 594 return 0;
1012754868 8:721a8dca7a25 595 }
1012754868 9:e023c11f7737 596
1012754868 9:e023c11f7737 597 void Snake::Tone_1(Gamepad &pad){
1012754868 9:e023c11f7737 598 pad.tone(750.0,0.1);
1012754868 9:e023c11f7737 599 }
1012754868 9:e023c11f7737 600
1012754868 10:f63560a7e7ed 601 void Snake::check_WallCollision(N5110 &lcd, Gamepad &pad){
Nefos 2:5e04e34a3b66 602
1012754868 8:721a8dca7a25 603 if (snak._x[_length] == 0 || snak._x[_length] == WIDTH)//if snake head hits side walls
1012754868 10:f63560a7e7ed 604 {
1012754868 10:f63560a7e7ed 605 game_music(pad);
1012754868 10:f63560a7e7ed 606 dead(lcd,pad);
Nefos 3:b24ef00836c5 607 }
1012754868 8:721a8dca7a25 608 if (snak._y[_length]== FLOOR ||snak._y[_length]== CEILING )//if snake hits top or bottom walls
1012754868 10:f63560a7e7ed 609 {
1012754868 10:f63560a7e7ed 610 game_music(pad);
1012754868 10:f63560a7e7ed 611 dead(lcd,pad);
Nefos 3:b24ef00836c5 612 }
Nefos 2:5e04e34a3b66 613
Nefos 3:b24ef00836c5 614 }//end of checkWallCollision
Nefos 5:449858a54971 615
1012754868 10:f63560a7e7ed 616 void Snake::check_TailCollision(N5110 &lcd, Gamepad &pad){//if snake eats itself
Nefos 5:449858a54971 617 for (int i=0 ;_length<i ;i++){
Nefos 5:449858a54971 618
1012754868 8:721a8dca7a25 619 if (snak._x[_length-1]==snak._x[i] && snak._y[_length-1]==snak._y[i])
1012754868 9:e023c11f7737 620 {
1012754868 10:f63560a7e7ed 621 game_music(pad);
1012754868 10:f63560a7e7ed 622 dead(lcd,pad);
Nefos 5:449858a54971 623 }
Nefos 5:449858a54971 624 }
Nefos 5:449858a54971 625
Nefos 5:449858a54971 626
Nefos 7:a2f426a37e60 627 }//end of checkTailCollision
Nefos 7:a2f426a37e60 628
1012754868 10:f63560a7e7ed 629 void Snake::game_music(Gamepad &pad){
1012754868 10:f63560a7e7ed 630
1012754868 10:f63560a7e7ed 631 pad.tone(1046.0,0.125);
1012754868 10:f63560a7e7ed 632 wait(0.125);
1012754868 10:f63560a7e7ed 633 pad.tone(1075.0,0.125);
1012754868 10:f63560a7e7ed 634 wait(0.125);
1012754868 10:f63560a7e7ed 635 pad.tone(1318.0,0.125);
1012754868 10:f63560a7e7ed 636 wait(0.125);
1012754868 10:f63560a7e7ed 637 }
1012754868 10:f63560a7e7ed 638
1012754868 8:721a8dca7a25 639 void Snake::drawscore(N5110 &lcd){
Nefos 7:a2f426a37e60 640 char buffer1[14];
Nefos 7:a2f426a37e60 641 char buffer2[14];
Nefos 7:a2f426a37e60 642 sprintf(buffer1,"%2d",live);
Nefos 7:a2f426a37e60 643 sprintf(buffer2,"%2d",_length-5);
1012754868 8:721a8dca7a25 644 lcd.printString(buffer1,20,0);
Nefos 7:a2f426a37e60 645 lcd.printString(buffer2,70,0);
1012754868 8:721a8dca7a25 646 lcd.drawSprite(6,1,7,7,(int *)LIFE);
1012754868 8:721a8dca7a25 647 lcd.printString(":",17,0);
1012754868 8:721a8dca7a25 648 lcd.printString("Score:",40,0);//display life and points
Nefos 7:a2f426a37e60 649
Nefos 7:a2f426a37e60 650 }//end of drawScore