The little game of snake
Dependencies: C12832 Speaker mbed
main.cpp@1:bb947391128b, 2017-01-23 (annotated)
- 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?
User | Revision | Line number | New 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 | } |