The little game of snake

Dependencies:   C12832 Speaker mbed

Committer:
AizWallenstein
Date:
Mon Jan 23 20:41:12 2017 +0000
Revision:
1:bb947391128b
Parent:
0:ad6a4f0af27f
Little snake

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AizWallenstein 1:bb947391128b 1 /************************Library****************************/
AizWallenstein 1:bb947391128b 2 #include "mbed.h" //library mbed
AizWallenstein 1:bb947391128b 3 #include "C12832.h" //menu Shield
AizWallenstein 1:bb947391128b 4 #include <stdlib.h> //Use rand
AizWallenstein 1:bb947391128b 5 #include "Speaker.h" //Speaker
AizWallenstein 1:bb947391128b 6 #include <string>
AizWallenstein 1:bb947391128b 7 /***********************Using Nucleo pin notation*********/
AizWallenstein 1:bb947391128b 8 C12832 lcd(D11, D13, D12, D7, D10);
AizWallenstein 1:bb947391128b 9 /***********************Leds*******************************/
AizWallenstein 1:bb947391128b 10 DigitalOut red_led(D5);
AizWallenstein 1:bb947391128b 11 DigitalOut blue_led(D8);
AizWallenstein 1:bb947391128b 12 DigitalOut green_led(D9);
AizWallenstein 1:bb947391128b 13 /***********************Speakers***************************/
AizWallenstein 1:bb947391128b 14 Speaker mySpeaker(D6);
AizWallenstein 1:bb947391128b 15 /************************Ticker****************************/
AizWallenstein 1:bb947391128b 16 Ticker move;
AizWallenstein 1:bb947391128b 17 /************************Green Joystick**************************/
AizWallenstein 1:bb947391128b 18 AnalogIn joyStickDown(PC_0);
AizWallenstein 1:bb947391128b 19 AnalogIn joyStickLeft(PC_1);
AizWallenstein 1:bb947391128b 20 AnalogIn joyStickUp(PB_0);
AizWallenstein 1:bb947391128b 21 AnalogIn joyStickRight(PA_4);
AizWallenstein 1:bb947391128b 22 /************************Small Joystick**************************/
AizWallenstein 1:bb947391128b 23 DigitalIn fire(D4);
AizWallenstein 1:bb947391128b 24 /***********************Variables****************************/
AizWallenstein 1:bb947391128b 25 int score = 0;
AizWallenstein 1:bb947391128b 26 float tikk=0.1;
AizWallenstein 1:bb947391128b 27 enum directions{ up, down, left, right, null};
AizWallenstein 1:bb947391128b 28 enum partie{ start, stop, run, pause};
AizWallenstein 1:bb947391128b 29 directions moveWhere;
AizWallenstein 1:bb947391128b 30 partie game;
AizWallenstein 1:bb947391128b 31 int allPosition[126][30]; // 0 : empty; 1 : mouse; 2 : wall;
AizWallenstein 1:bb947391128b 32 /***********************Classes*****************************/
AizWallenstein 1:bb947391128b 33 struct point{
AizWallenstein 1:bb947391128b 34 int x;
AizWallenstein 1:bb947391128b 35 int y;
AizWallenstein 1:bb947391128b 36 };
AizWallenstein 1:bb947391128b 37 struct point head;
AizWallenstein 1:bb947391128b 38 struct point mouse;
AizWallenstein 1:bb947391128b 39 struct point wall;
AizWallenstein 1:bb947391128b 40 point* corp = new point[score+5];
AizWallenstein 1:bb947391128b 41 /***********************Fonctions****************************/
AizWallenstein 1:bb947391128b 42 // Init mouse
AizWallenstein 1:bb947391128b 43 void SetMouse(){
AizWallenstein 1:bb947391128b 44 mouse.x=rand()%126+1;
AizWallenstein 1:bb947391128b 45 mouse.y=rand()%30+1;
AizWallenstein 1:bb947391128b 46 allPosition[mouse.x][mouse.y]=1;
AizWallenstein 1:bb947391128b 47 if(allPosition[mouse.x][mouse.y] == 2){
AizWallenstein 1:bb947391128b 48 SetMouse();
AizWallenstein 1:bb947391128b 49 }
AizWallenstein 1:bb947391128b 50 }
AizWallenstein 1:bb947391128b 51 // Init wall
AizWallenstein 1:bb947391128b 52 void SetWall(){
AizWallenstein 1:bb947391128b 53 wall.x=rand()%126+1;//rand()%126+1;
AizWallenstein 1:bb947391128b 54 wall.y=rand()%30+1;//rand()%30+1;
AizWallenstein 1:bb947391128b 55 allPosition[wall.x][wall.y]=2;
AizWallenstein 1:bb947391128b 56 allPosition[wall.x+1][wall.y]=2;
AizWallenstein 1:bb947391128b 57 if(allPosition[wall.x][wall.y] == 1){
AizWallenstein 1:bb947391128b 58 SetWall();
AizWallenstein 1:bb947391128b 59 }
AizWallenstein 1:bb947391128b 60 }
AizWallenstein 1:bb947391128b 61
AizWallenstein 1:bb947391128b 62 // Change direction avoiding going back in the same way
AizWallenstein 1:bb947391128b 63 void Up_Direction(){
AizWallenstein 1:bb947391128b 64 if(moveWhere!=down){
AizWallenstein 1:bb947391128b 65 moveWhere=up;
AizWallenstein 1:bb947391128b 66 }
AizWallenstein 1:bb947391128b 67 }
AizWallenstein 1:bb947391128b 68 void Down_Direction(){
AizWallenstein 1:bb947391128b 69 if(moveWhere!=up){
AizWallenstein 1:bb947391128b 70 moveWhere=down;
AizWallenstein 1:bb947391128b 71 }
AizWallenstein 1:bb947391128b 72 }
AizWallenstein 1:bb947391128b 73 void Left_Direction(){
AizWallenstein 1:bb947391128b 74 if(moveWhere!=right){
AizWallenstein 1:bb947391128b 75 moveWhere=left;
AizWallenstein 1:bb947391128b 76 }
AizWallenstein 1:bb947391128b 77 }
AizWallenstein 1:bb947391128b 78 void Right_Direction(){
AizWallenstein 1:bb947391128b 79 if(moveWhere!=left){
AizWallenstein 1:bb947391128b 80 moveWhere=right;
AizWallenstein 1:bb947391128b 81 }
AizWallenstein 1:bb947391128b 82 }
AizWallenstein 1:bb947391128b 83
AizWallenstein 1:bb947391128b 84 // Put the game in hold
AizWallenstein 1:bb947391128b 85 void Push_Touch(){
AizWallenstein 1:bb947391128b 86 wait(0.5);
AizWallenstein 1:bb947391128b 87 if(game==run){
AizWallenstein 1:bb947391128b 88 moveWhere=null;
AizWallenstein 1:bb947391128b 89 game=pause;
AizWallenstein 1:bb947391128b 90 }else if(game==pause){
AizWallenstein 1:bb947391128b 91 game=run;
AizWallenstein 1:bb947391128b 92 }else if(game == stop){
AizWallenstein 1:bb947391128b 93 for(int i=0;i<=4;i++){
AizWallenstein 1:bb947391128b 94 corp[i].x=(head.x)-(i+1);
AizWallenstein 1:bb947391128b 95 corp[i].y=15;
AizWallenstein 1:bb947391128b 96 }
AizWallenstein 1:bb947391128b 97 moveWhere=null;
AizWallenstein 1:bb947391128b 98 game=run;
AizWallenstein 1:bb947391128b 99 }
AizWallenstein 1:bb947391128b 100 }
AizWallenstein 0:ad6a4f0af27f 101
AizWallenstein 1:bb947391128b 102 // Move the snake
AizWallenstein 1:bb947391128b 103 void MoveSnake(){
AizWallenstein 1:bb947391128b 104 if(game==run){
AizWallenstein 1:bb947391128b 105 if(moveWhere!=null){
AizWallenstein 1:bb947391128b 106 for(int i=(score+4);i>=1;i--){
AizWallenstein 1:bb947391128b 107 corp[i]=corp[i-1];
AizWallenstein 1:bb947391128b 108 }
AizWallenstein 1:bb947391128b 109 corp[0]=head;
AizWallenstein 1:bb947391128b 110 }
AizWallenstein 1:bb947391128b 111 switch(moveWhere){
AizWallenstein 1:bb947391128b 112 case up:
AizWallenstein 1:bb947391128b 113 head.y-=1;
AizWallenstein 1:bb947391128b 114 break;
AizWallenstein 1:bb947391128b 115 case down:
AizWallenstein 1:bb947391128b 116 head.y+=1;
AizWallenstein 1:bb947391128b 117 break;
AizWallenstein 1:bb947391128b 118 case left:
AizWallenstein 1:bb947391128b 119 head.x-=1;
AizWallenstein 1:bb947391128b 120 break;
AizWallenstein 1:bb947391128b 121 case right:
AizWallenstein 1:bb947391128b 122 head.x+=1;
AizWallenstein 1:bb947391128b 123 break;
AizWallenstein 1:bb947391128b 124 }
AizWallenstein 1:bb947391128b 125 // Crashed
AizWallenstein 1:bb947391128b 126 if(head.x==127 ||head.x==0 ||head.y==0 ||head.y==31 ){
AizWallenstein 1:bb947391128b 127 lcd.cls();
AizWallenstein 1:bb947391128b 128 lcd.locate(33,5);
AizWallenstein 1:bb947391128b 129 lcd.printf("Game Over!");
AizWallenstein 1:bb947391128b 130 lcd.locate(33,15);
AizWallenstein 1:bb947391128b 131 lcd.printf("Your score is : %d",score);
AizWallenstein 1:bb947391128b 132 moveWhere=null;
AizWallenstein 1:bb947391128b 133 head.x=15;
AizWallenstein 1:bb947391128b 134 head.y=15;
AizWallenstein 1:bb947391128b 135 game=stop;
AizWallenstein 1:bb947391128b 136 score=0;
AizWallenstein 1:bb947391128b 137 tikk=0.1;
AizWallenstein 1:bb947391128b 138 }else if((head.x==mouse.x)&&(head.y==mouse.y)){
AizWallenstein 1:bb947391128b 139 //Eat the mouse
AizWallenstein 1:bb947391128b 140 score+=1;
AizWallenstein 1:bb947391128b 141 SetMouse();
AizWallenstein 1:bb947391128b 142 tikk=tikk-0.01;
AizWallenstein 1:bb947391128b 143 return move.attach(&MoveSnake, tikk);
AizWallenstein 1:bb947391128b 144 }else{
AizWallenstein 1:bb947391128b 145 lcd.cls();
AizWallenstein 1:bb947391128b 146 lcd.pixel(head.x,head.y,1);
AizWallenstein 1:bb947391128b 147 lcd.copy_to_lcd();
AizWallenstein 1:bb947391128b 148 for(int k=0;k<=(score+4);k++){
AizWallenstein 1:bb947391128b 149 lcd.pixel(corp[k].x,corp[k].y,1);
AizWallenstein 1:bb947391128b 150 }
AizWallenstein 1:bb947391128b 151 lcd.copy_to_lcd();
AizWallenstein 1:bb947391128b 152 lcd.pixel(mouse.x,mouse.y,1);
AizWallenstein 1:bb947391128b 153 lcd.copy_to_lcd();
AizWallenstein 1:bb947391128b 154 lcd.rect(0,0, 127, 31, 1);
AizWallenstein 1:bb947391128b 155 lcd.copy_to_lcd();
AizWallenstein 1:bb947391128b 156 }
AizWallenstein 1:bb947391128b 157 // Game Over
AizWallenstein 1:bb947391128b 158 for(int a=0;a<=(score+4);a++){
AizWallenstein 1:bb947391128b 159 if(corp[a].x==head.x && corp[a].y==head.y){
AizWallenstein 1:bb947391128b 160 lcd.cls();
AizWallenstein 1:bb947391128b 161 lcd.locate(33,5);
AizWallenstein 1:bb947391128b 162 lcd.printf("Game Over!");
AizWallenstein 1:bb947391128b 163 lcd.locate(35,15);
AizWallenstein 1:bb947391128b 164 lcd.printf("Votre score : %d",score);
AizWallenstein 1:bb947391128b 165 moveWhere=null;
AizWallenstein 1:bb947391128b 166 head.x=15;
AizWallenstein 1:bb947391128b 167 head.y=15;
AizWallenstein 1:bb947391128b 168 game=stop;
AizWallenstein 1:bb947391128b 169 tikk=0.1;
AizWallenstein 1:bb947391128b 170 score=0;
AizWallenstein 1:bb947391128b 171 }
AizWallenstein 1:bb947391128b 172 }
AizWallenstein 1:bb947391128b 173 }
AizWallenstein 1:bb947391128b 174 //Hold the game
AizWallenstein 1:bb947391128b 175 else if(game==pause){
AizWallenstein 1:bb947391128b 176 lcd.cls();
AizWallenstein 1:bb947391128b 177 lcd.locate(33,15);
AizWallenstein 1:bb947391128b 178 lcd.printf("Pause");
AizWallenstein 1:bb947391128b 179 }
AizWallenstein 1:bb947391128b 180 }
AizWallenstein 1:bb947391128b 181
AizWallenstein 1:bb947391128b 182 // Move the snake Hardcore
AizWallenstein 1:bb947391128b 183 void MoveSnakeHardcore(){
AizWallenstein 1:bb947391128b 184 if(game==run){
AizWallenstein 1:bb947391128b 185 if(moveWhere!=null){
AizWallenstein 1:bb947391128b 186 for(int i=(score+4);i>=1;i--){
AizWallenstein 1:bb947391128b 187 corp[i]=corp[i-1];
AizWallenstein 1:bb947391128b 188 }
AizWallenstein 1:bb947391128b 189 corp[0]=head;
AizWallenstein 1:bb947391128b 190 }
AizWallenstein 1:bb947391128b 191 switch(moveWhere){
AizWallenstein 1:bb947391128b 192 case up:
AizWallenstein 1:bb947391128b 193 head.y-=1;
AizWallenstein 1:bb947391128b 194 break;
AizWallenstein 1:bb947391128b 195 case down:
AizWallenstein 1:bb947391128b 196 head.y+=1;
AizWallenstein 1:bb947391128b 197 break;
AizWallenstein 1:bb947391128b 198 case left:
AizWallenstein 1:bb947391128b 199 head.x-=1;
AizWallenstein 1:bb947391128b 200 break;
AizWallenstein 1:bb947391128b 201 case right:
AizWallenstein 1:bb947391128b 202 head.x+=1;
AizWallenstein 1:bb947391128b 203 break;
AizWallenstein 1:bb947391128b 204 }
AizWallenstein 1:bb947391128b 205
AizWallenstein 1:bb947391128b 206 if(head.x==127 ||head.x==0 ||head.y==0 ||head.y==31 ){
AizWallenstein 1:bb947391128b 207 lcd.cls();
AizWallenstein 1:bb947391128b 208 lcd.locate(33,5);
AizWallenstein 1:bb947391128b 209 lcd.printf("Game Over!");
AizWallenstein 1:bb947391128b 210 lcd.locate(33,15);
AizWallenstein 1:bb947391128b 211 lcd.printf("Your score is : %d",score);
AizWallenstein 1:bb947391128b 212 moveWhere=null;
AizWallenstein 1:bb947391128b 213 head.x=15;
AizWallenstein 1:bb947391128b 214 head.y=15;
AizWallenstein 1:bb947391128b 215 game=stop;
AizWallenstein 1:bb947391128b 216 score=0;
AizWallenstein 1:bb947391128b 217 tikk=0.1;
AizWallenstein 1:bb947391128b 218 }else if(allPosition[head.x][head.y]==2){
AizWallenstein 1:bb947391128b 219 lcd.cls();
AizWallenstein 1:bb947391128b 220 lcd.locate(33,5);
AizWallenstein 1:bb947391128b 221 lcd.printf("Game Over!");
AizWallenstein 1:bb947391128b 222 lcd.locate(33,15);
AizWallenstein 1:bb947391128b 223 lcd.printf("Your score is : %d",score);
AizWallenstein 1:bb947391128b 224 moveWhere=null;
AizWallenstein 1:bb947391128b 225 head.x=15;
AizWallenstein 1:bb947391128b 226 head.y=15;
AizWallenstein 1:bb947391128b 227 game=stop;
AizWallenstein 1:bb947391128b 228 score=0;
AizWallenstein 1:bb947391128b 229 tikk=0.1;
AizWallenstein 1:bb947391128b 230 }else if(allPosition[head.x][head.y]==1){
AizWallenstein 1:bb947391128b 231 score+=1;
AizWallenstein 1:bb947391128b 232 SetMouse();
AizWallenstein 1:bb947391128b 233 SetWall();
AizWallenstein 1:bb947391128b 234 tikk=tikk-0.01;
AizWallenstein 1:bb947391128b 235 return move.attach(&MoveSnakeHardcore, tikk);
AizWallenstein 1:bb947391128b 236 }else{
AizWallenstein 1:bb947391128b 237 lcd.cls();
AizWallenstein 1:bb947391128b 238 lcd.pixel(head.x,head.y,1);
AizWallenstein 1:bb947391128b 239 lcd.copy_to_lcd();
AizWallenstein 1:bb947391128b 240 for(int k=0;k<=(score+4);k++){
AizWallenstein 1:bb947391128b 241 lcd.pixel(corp[k].x,corp[k].y,1);
AizWallenstein 1:bb947391128b 242 }
AizWallenstein 1:bb947391128b 243 lcd.copy_to_lcd();
AizWallenstein 1:bb947391128b 244 lcd.pixel(mouse.x,mouse.y,1);
AizWallenstein 1:bb947391128b 245 lcd.copy_to_lcd();
AizWallenstein 1:bb947391128b 246 lcd.pixel(wall.x,wall.y,4);
AizWallenstein 1:bb947391128b 247 lcd.copy_to_lcd();
AizWallenstein 1:bb947391128b 248 lcd.pixel(wall.x+1,wall.y,4);
AizWallenstein 1:bb947391128b 249 lcd.copy_to_lcd();
AizWallenstein 1:bb947391128b 250 lcd.rect(0,0, 127, 31, 1);
AizWallenstein 1:bb947391128b 251 lcd.copy_to_lcd();
AizWallenstein 1:bb947391128b 252 }
AizWallenstein 1:bb947391128b 253
AizWallenstein 1:bb947391128b 254 for(int a=0;a<=(score+4);a++){
AizWallenstein 1:bb947391128b 255 if(corp[a].x==head.x && corp[a].y==head.y){
AizWallenstein 1:bb947391128b 256 lcd.cls();
AizWallenstein 1:bb947391128b 257 lcd.locate(33,5);
AizWallenstein 1:bb947391128b 258 lcd.printf("Game Over!");
AizWallenstein 1:bb947391128b 259 lcd.locate(35,15);
AizWallenstein 1:bb947391128b 260 lcd.printf("Votre score : %d",score);
AizWallenstein 1:bb947391128b 261 moveWhere=null;
AizWallenstein 1:bb947391128b 262 head.x=15;
AizWallenstein 1:bb947391128b 263 head.y=15;
AizWallenstein 1:bb947391128b 264 game=stop;
AizWallenstein 1:bb947391128b 265 tikk=0.1;
AizWallenstein 1:bb947391128b 266 score=0;
AizWallenstein 1:bb947391128b 267 }
AizWallenstein 1:bb947391128b 268 }
AizWallenstein 1:bb947391128b 269 }
AizWallenstein 1:bb947391128b 270 else if(game==pause){
AizWallenstein 1:bb947391128b 271 lcd.cls();
AizWallenstein 1:bb947391128b 272 lcd.locate(33,15);
AizWallenstein 1:bb947391128b 273 lcd.printf("Pause");
AizWallenstein 1:bb947391128b 274 }
AizWallenstein 1:bb947391128b 275 }
AizWallenstein 1:bb947391128b 276
AizWallenstein 0:ad6a4f0af27f 277
AizWallenstein 0:ad6a4f0af27f 278 int main() {
AizWallenstein 1:bb947391128b 279 int m=0;
AizWallenstein 1:bb947391128b 280 int p=0;
AizWallenstein 1:bb947391128b 281
AizWallenstein 1:bb947391128b 282 char* tab_menu[3];
AizWallenstein 1:bb947391128b 283 tab_menu[0]="Snake";
AizWallenstein 1:bb947391128b 284 tab_menu[1]="Snake Hardcore";
AizWallenstein 1:bb947391128b 285 tab_menu[2]="???";
AizWallenstein 1:bb947391128b 286
AizWallenstein 1:bb947391128b 287 bool isStarted=false;
AizWallenstein 1:bb947391128b 288
AizWallenstein 1:bb947391128b 289 // Menu
AizWallenstein 1:bb947391128b 290 while(isStarted==false){
AizWallenstein 1:bb947391128b 291 int j=0;
AizWallenstein 1:bb947391128b 292 int light;
AizWallenstein 1:bb947391128b 293
AizWallenstein 1:bb947391128b 294 for(j=10;j>0;j--){
AizWallenstein 1:bb947391128b 295 lcd.locate(0,j);
AizWallenstein 1:bb947391128b 296 lcd.printf("I");
AizWallenstein 1:bb947391128b 297 mySpeaker.PlayNote(45*j,0.1,0.1);
AizWallenstein 1:bb947391128b 298
AizWallenstein 1:bb947391128b 299 lcd.locate(33,5);
AizWallenstein 1:bb947391128b 300 lcd.printf("Menu Projet!");
AizWallenstein 1:bb947391128b 301
AizWallenstein 1:bb947391128b 302 light =rand()%3;
AizWallenstein 1:bb947391128b 303 if(light==0){
AizWallenstein 1:bb947391128b 304 wait(0.1);
AizWallenstein 1:bb947391128b 305 red_led=1;
AizWallenstein 1:bb947391128b 306 }else if(light==1){
AizWallenstein 1:bb947391128b 307 wait(0.1);
AizWallenstein 1:bb947391128b 308 blue_led=1;
AizWallenstein 1:bb947391128b 309 }else{
AizWallenstein 1:bb947391128b 310 wait(0.1);
AizWallenstein 1:bb947391128b 311 green_led=1;
AizWallenstein 1:bb947391128b 312 }
AizWallenstein 1:bb947391128b 313 lcd.cls();
AizWallenstein 1:bb947391128b 314 }
AizWallenstein 1:bb947391128b 315 lcd.locate(33,5);
AizWallenstein 1:bb947391128b 316 lcd.printf("Choisissez un jeu");
AizWallenstein 1:bb947391128b 317
AizWallenstein 1:bb947391128b 318 while(1) {
AizWallenstein 1:bb947391128b 319 lcd.locate(0,15);
AizWallenstein 1:bb947391128b 320 lcd.printf(tab_menu[m]);
AizWallenstein 1:bb947391128b 321 if(joyStickUp){
AizWallenstein 1:bb947391128b 322 m=(m-1+3)%3;
AizWallenstein 1:bb947391128b 323 lcd.cls();
AizWallenstein 1:bb947391128b 324 lcd.locate(0,2);
AizWallenstein 1:bb947391128b 325 lcd.printf("Choisissez un jeu");
AizWallenstein 1:bb947391128b 326 lcd.locate(0,15);
AizWallenstein 1:bb947391128b 327 lcd.printf(tab_menu[m]);
AizWallenstein 1:bb947391128b 328 wait(0.5);
AizWallenstein 1:bb947391128b 329 }
AizWallenstein 1:bb947391128b 330 else if(joyStickDown){
AizWallenstein 1:bb947391128b 331 m=(m+1+3)%3;
AizWallenstein 1:bb947391128b 332 lcd.cls();
AizWallenstein 1:bb947391128b 333 lcd.locate(0,2);
AizWallenstein 1:bb947391128b 334 lcd.printf("Choisissez un jeu");
AizWallenstein 1:bb947391128b 335 lcd.locate(0,15);
AizWallenstein 1:bb947391128b 336 lcd.printf(tab_menu[m]);
AizWallenstein 1:bb947391128b 337 wait(0.5);
AizWallenstein 1:bb947391128b 338 }else if(fire){
AizWallenstein 1:bb947391128b 339 p=m;
AizWallenstein 1:bb947391128b 340 isStarted=true;
AizWallenstein 1:bb947391128b 341 break;
AizWallenstein 1:bb947391128b 342
AizWallenstein 1:bb947391128b 343 }
AizWallenstein 1:bb947391128b 344 }
AizWallenstein 1:bb947391128b 345 }
AizWallenstein 1:bb947391128b 346
AizWallenstein 1:bb947391128b 347 // Snake game
AizWallenstein 1:bb947391128b 348 while(isStarted==true && p==0){
AizWallenstein 1:bb947391128b 349 int j=0;
AizWallenstein 1:bb947391128b 350 int light;
AizWallenstein 1:bb947391128b 351 lcd.cls();
AizWallenstein 1:bb947391128b 352
AizWallenstein 1:bb947391128b 353 for(j=10;j>0;j--){
AizWallenstein 1:bb947391128b 354 lcd.locate(0,j);
AizWallenstein 1:bb947391128b 355 lcd.printf("I");
AizWallenstein 1:bb947391128b 356 mySpeaker.PlayNote(100*j,0.1,0.1);
AizWallenstein 1:bb947391128b 357
AizWallenstein 1:bb947391128b 358 lcd.locate(33,5);
AizWallenstein 1:bb947391128b 359 lcd.printf("Snake Game");
AizWallenstein 1:bb947391128b 360 mySpeaker.PlayNote(40.0/j,0.1,0.5);
AizWallenstein 1:bb947391128b 361 light =rand()%3;
AizWallenstein 1:bb947391128b 362 if(light==0){
AizWallenstein 1:bb947391128b 363 wait(0.1);
AizWallenstein 1:bb947391128b 364 red_led=1;
AizWallenstein 1:bb947391128b 365 }else if(light==1){
AizWallenstein 1:bb947391128b 366 wait(0.1);
AizWallenstein 1:bb947391128b 367 blue_led=1;
AizWallenstein 1:bb947391128b 368 }else{
AizWallenstein 1:bb947391128b 369 wait(0.1);
AizWallenstein 1:bb947391128b 370 green_led=1;
AizWallenstein 1:bb947391128b 371 }
AizWallenstein 1:bb947391128b 372 lcd.cls();
AizWallenstein 1:bb947391128b 373 }
AizWallenstein 1:bb947391128b 374 lcd.locate(0,2);
AizWallenstein 1:bb947391128b 375 for(int f=3;f>=0;f--){
AizWallenstein 1:bb947391128b 376 lcd.locate(0,2);
AizWallenstein 1:bb947391128b 377 lcd.printf("Snake begin in : %d",f);
AizWallenstein 1:bb947391128b 378 wait(1.0);
AizWallenstein 1:bb947391128b 379 lcd.cls();
AizWallenstein 1:bb947391128b 380 }
AizWallenstein 1:bb947391128b 381
AizWallenstein 1:bb947391128b 382 //Snake start
AizWallenstein 1:bb947391128b 383 game=run;
AizWallenstein 1:bb947391128b 384 lcd.rect(0,0,127,31,1);
AizWallenstein 1:bb947391128b 385 lcd.copy_to_lcd();
AizWallenstein 1:bb947391128b 386 moveWhere=null;
AizWallenstein 1:bb947391128b 387 moveWhere=right;
AizWallenstein 1:bb947391128b 388 head.x=15;
AizWallenstein 1:bb947391128b 389 head.y=15;
AizWallenstein 1:bb947391128b 390 for (int i=0;i<=4;i++){
AizWallenstein 1:bb947391128b 391 corp[i].x=(head.x)-(i+1);
AizWallenstein 1:bb947391128b 392 corp[i].y=15;
AizWallenstein 1:bb947391128b 393 }
AizWallenstein 1:bb947391128b 394 SetMouse();
AizWallenstein 1:bb947391128b 395 move.attach(&MoveSnake, 0.1);
AizWallenstein 1:bb947391128b 396 while (1){
AizWallenstein 1:bb947391128b 397 if(joyStickUp)
AizWallenstein 1:bb947391128b 398 Up_Direction();
AizWallenstein 1:bb947391128b 399 else if(joyStickDown)
AizWallenstein 1:bb947391128b 400 Down_Direction();
AizWallenstein 1:bb947391128b 401 else if(joyStickLeft)
AizWallenstein 1:bb947391128b 402 Left_Direction();
AizWallenstein 1:bb947391128b 403 else if (joyStickRight)
AizWallenstein 1:bb947391128b 404 Right_Direction();
AizWallenstein 1:bb947391128b 405 else if (fire)
AizWallenstein 1:bb947391128b 406 Push_Touch();
AizWallenstein 1:bb947391128b 407 }
AizWallenstein 1:bb947391128b 408 }
AizWallenstein 1:bb947391128b 409
AizWallenstein 1:bb947391128b 410 //Snake Hardcore
AizWallenstein 1:bb947391128b 411 while(isStarted==true && p==1){
AizWallenstein 1:bb947391128b 412 int j=0;
AizWallenstein 1:bb947391128b 413 int light;
AizWallenstein 1:bb947391128b 414 lcd.cls();
AizWallenstein 1:bb947391128b 415
AizWallenstein 1:bb947391128b 416 for(j=10;j>0;j--){
AizWallenstein 1:bb947391128b 417 lcd.locate(0,j);
AizWallenstein 1:bb947391128b 418 lcd.printf("I");
AizWallenstein 1:bb947391128b 419 mySpeaker.PlayNote(35*j,0.1,0.1);
AizWallenstein 1:bb947391128b 420
AizWallenstein 1:bb947391128b 421 lcd.locate(33,5);
AizWallenstein 1:bb947391128b 422 lcd.printf("Snake Hardcore Game");
AizWallenstein 1:bb947391128b 423 mySpeaker.PlayNote(10.0/j,0.1,0.5);
AizWallenstein 1:bb947391128b 424 light =rand()%3;
AizWallenstein 1:bb947391128b 425 if(light==0){
AizWallenstein 1:bb947391128b 426 wait(0.1);
AizWallenstein 1:bb947391128b 427 red_led=1;
AizWallenstein 1:bb947391128b 428 }else if(light==1){
AizWallenstein 1:bb947391128b 429 wait(0.1);
AizWallenstein 1:bb947391128b 430 blue_led=1;
AizWallenstein 1:bb947391128b 431 }else{
AizWallenstein 1:bb947391128b 432 wait(0.1);
AizWallenstein 1:bb947391128b 433 green_led=1;
AizWallenstein 1:bb947391128b 434 }
AizWallenstein 1:bb947391128b 435 lcd.cls();
AizWallenstein 1:bb947391128b 436 }
AizWallenstein 1:bb947391128b 437 lcd.locate(0,2);
AizWallenstein 1:bb947391128b 438 for(int f=3;f>=0;f--){
AizWallenstein 1:bb947391128b 439 lcd.locate(0,2);
AizWallenstein 1:bb947391128b 440 lcd.printf("Snake Hardcore begin in : %d",f);
AizWallenstein 1:bb947391128b 441 wait(1.0);
AizWallenstein 1:bb947391128b 442 lcd.cls();
AizWallenstein 1:bb947391128b 443 }
AizWallenstein 1:bb947391128b 444
AizWallenstein 1:bb947391128b 445 //Snake Hardcore start
AizWallenstein 1:bb947391128b 446 game=run;
AizWallenstein 1:bb947391128b 447 lcd.rect(0,0,127,31,1);
AizWallenstein 1:bb947391128b 448 lcd.copy_to_lcd();
AizWallenstein 1:bb947391128b 449 moveWhere=null;
AizWallenstein 1:bb947391128b 450 moveWhere=right;
AizWallenstein 1:bb947391128b 451 head.x=15;
AizWallenstein 1:bb947391128b 452 head.y=15;
AizWallenstein 1:bb947391128b 453 for (int i=0;i<=4;i++){
AizWallenstein 1:bb947391128b 454 corp[i].x=(head.x)-(i+1);
AizWallenstein 1:bb947391128b 455 corp[i].y=15;
AizWallenstein 1:bb947391128b 456 }
AizWallenstein 1:bb947391128b 457 SetMouse();
AizWallenstein 1:bb947391128b 458 SetWall();
AizWallenstein 1:bb947391128b 459 move.attach(&MoveSnakeHardcore, 0.1);
AizWallenstein 1:bb947391128b 460 while (1){
AizWallenstein 1:bb947391128b 461 if(joyStickUp)
AizWallenstein 1:bb947391128b 462 Up_Direction();
AizWallenstein 1:bb947391128b 463 else if(joyStickDown)
AizWallenstein 1:bb947391128b 464 Down_Direction();
AizWallenstein 1:bb947391128b 465 else if(joyStickLeft)
AizWallenstein 1:bb947391128b 466 Left_Direction();
AizWallenstein 1:bb947391128b 467 else if (joyStickRight)
AizWallenstein 1:bb947391128b 468 Right_Direction();
AizWallenstein 1:bb947391128b 469 else if (fire)
AizWallenstein 1:bb947391128b 470 Push_Touch();
AizWallenstein 1:bb947391128b 471 }
AizWallenstein 0:ad6a4f0af27f 472 }
AizWallenstein 0:ad6a4f0af27f 473 }