LI Saiwen / Mbed 2 deprecated Li_Saiwen

Dependencies:   mbed Gamepad N5110

Committer:
1012754868
Date:
Thu May 02 06:20:20 2019 +0000
Revision:
3:7b28047013d2
Child:
7:cafa0b96e8d3
1

Who changed what in which revision?

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