Rush Hour board game on MBED for 4180 final project

Dependencies:   4DGL-uLCD-SE FATFileSystem SDFileSystem mbed wave_player

Committer:
giavottop
Date:
Tue May 01 21:56:16 2018 +0000
Revision:
0:22e251b14893
Final May 1st, 2018

Who changed what in which revision?

UserRevisionLine numberNew contents of line
giavottop 0:22e251b14893 1 #include "mbed.h"
giavottop 0:22e251b14893 2 #include "uLCD_4DGL.h"
giavottop 0:22e251b14893 3 #include "Vehicle.h"
giavottop 0:22e251b14893 4 #include "SDFileSystem.h"
giavottop 0:22e251b14893 5 #include "wave_player.h"
giavottop 0:22e251b14893 6
giavottop 0:22e251b14893 7
giavottop 0:22e251b14893 8
giavottop 0:22e251b14893 9 uLCD_4DGL uLCD(p28,p27,p30); // serial tx, serial rx, reset pin;
giavottop 0:22e251b14893 10
giavottop 0:22e251b14893 11 AnalogIn vert(p17);
giavottop 0:22e251b14893 12 AnalogIn horz(p19);
giavottop 0:22e251b14893 13 AnalogIn sel(p20);
giavottop 0:22e251b14893 14
giavottop 0:22e251b14893 15 SDFileSystem sd(p5, p6, p7, p8, "sd"); //SD card
giavottop 0:22e251b14893 16 AnalogOut DACout(p18);
giavottop 0:22e251b14893 17
giavottop 0:22e251b14893 18 wave_player waver(&DACout);
giavottop 0:22e251b14893 19
giavottop 0:22e251b14893 20 Serial pc(USBTX,USBRX);
giavottop 0:22e251b14893 21
giavottop 0:22e251b14893 22 // In current layout vert->0 = right, vert->1 = left, horz->0 = down, horz->1 = up
giavottop 0:22e251b14893 23 // 0=right 1=up 2=left 3=down
giavottop 0:22e251b14893 24 int selection = 0;
giavottop 0:22e251b14893 25
giavottop 0:22e251b14893 26 int stickXloc = 0;
giavottop 0:22e251b14893 27 int stickYloc = 0;
giavottop 0:22e251b14893 28 int selectedX = -1;
giavottop 0:22e251b14893 29 int selectedY = -1;
giavottop 0:22e251b14893 30 int selected = 0;
giavottop 0:22e251b14893 31
giavottop 0:22e251b14893 32 int mainCarX = 0;
giavottop 0:22e251b14893 33 int mainCarY = 0;
giavottop 0:22e251b14893 34
giavottop 0:22e251b14893 35
giavottop 0:22e251b14893 36
giavottop 0:22e251b14893 37
giavottop 0:22e251b14893 38
giavottop 0:22e251b14893 39
giavottop 0:22e251b14893 40
giavottop 0:22e251b14893 41 int rv[36][4] = {{7,1,24,18},{26,1,43,18},{45,1,62,18},{64,1,81,18},{83,1,100,18},{102,1,119,18},
giavottop 0:22e251b14893 42 {7,20,24,37},{26,20,43,37},{45,20,62,37},{64,20,81,37},{83,20,100,37},{102,20,119,37},
giavottop 0:22e251b14893 43 {7,39,24,56},{26,39,43,56},{45,39,62,56},{64,39,81,56},{83,39,100,56},{102,39,119,56},
giavottop 0:22e251b14893 44 {7,58,24,75},{26,58,43,75},{45,58,62,75},{64,58,81,75},{83,58,100,75},{102,58,119,75},
giavottop 0:22e251b14893 45 {7,77,24,94},{26,77,43,94},{45,77,62,94},{64,77,81,94},{83,77,100,94},{102,77,119,94},
giavottop 0:22e251b14893 46 {7,96,24,113},{26,96,43,113},{45,96,62,113},{64,96,81,113},{83,96,100,113},{102,96,119,113}};
giavottop 0:22e251b14893 47
giavottop 0:22e251b14893 48 int spots[6][6] = {{0,1,2,3,4,5},
giavottop 0:22e251b14893 49 {6,7,8,9,10,11},
giavottop 0:22e251b14893 50 {12,13,14,15,16,17},
giavottop 0:22e251b14893 51 {18,19,20,21,22,23},
giavottop 0:22e251b14893 52 {24,25,26,27,28,29},
giavottop 0:22e251b14893 53 {30,31,32,33,34,35}};
giavottop 0:22e251b14893 54
giavottop 0:22e251b14893 55 int open[6][6] = {{0,0,0,0,0,0},
giavottop 0:22e251b14893 56 {0,0,0,0,0,0},
giavottop 0:22e251b14893 57 {0,0,0,0,0,0},
giavottop 0:22e251b14893 58 {0,0,0,0,0,0},
giavottop 0:22e251b14893 59 {0,0,0,0,0,0},
giavottop 0:22e251b14893 60 {0,0,0,0,0,0}};
giavottop 0:22e251b14893 61 int getInput() {
giavottop 0:22e251b14893 62 int direction = -1;
giavottop 0:22e251b14893 63
giavottop 0:22e251b14893 64 while(direction < 0) {
giavottop 0:22e251b14893 65 float v = vert.read();
giavottop 0:22e251b14893 66 float h = horz.read();
giavottop 0:22e251b14893 67 float s = sel.read();
giavottop 0:22e251b14893 68
giavottop 0:22e251b14893 69 wait(0.01);
giavottop 0:22e251b14893 70
giavottop 0:22e251b14893 71 if(v < .2)
giavottop 0:22e251b14893 72 direction = 0;
giavottop 0:22e251b14893 73 else if(v > .8)
giavottop 0:22e251b14893 74 direction = 2;
giavottop 0:22e251b14893 75 else if(h < .2)
giavottop 0:22e251b14893 76 direction = 3;
giavottop 0:22e251b14893 77 else if(h > .8)
giavottop 0:22e251b14893 78 direction = 1;
giavottop 0:22e251b14893 79 else if(s < .01)
giavottop 0:22e251b14893 80 direction = 5;
giavottop 0:22e251b14893 81 }
giavottop 0:22e251b14893 82
giavottop 0:22e251b14893 83 return direction;
giavottop 0:22e251b14893 84 }
giavottop 0:22e251b14893 85
giavottop 0:22e251b14893 86 void setUpGrid(){
giavottop 0:22e251b14893 87 for(int i = 0; i < 36; i++) {
giavottop 0:22e251b14893 88 uLCD.filled_rectangle(rv[i][0],rv[i][1],rv[i][2],rv[i][3],BLUE);
giavottop 0:22e251b14893 89 }
giavottop 0:22e251b14893 90 }
giavottop 0:22e251b14893 91
giavottop 0:22e251b14893 92 void updateStickLocation(int direction){
giavottop 0:22e251b14893 93 if(direction == 2 && selected == 0){
giavottop 0:22e251b14893 94 if(stickXloc != 0){
giavottop 0:22e251b14893 95 int i = spots[stickYloc][stickXloc - 1];
giavottop 0:22e251b14893 96 uLCD.filled_rectangle(rv[i][0],rv[i][1],rv[i][2],rv[i][3],WHITE);
giavottop 0:22e251b14893 97 int j = spots[stickYloc][stickXloc];
giavottop 0:22e251b14893 98 uLCD.filled_rectangle(rv[j][0],rv[j][1],rv[j][2],rv[j][3],BLUE);
giavottop 0:22e251b14893 99 stickXloc--;
giavottop 0:22e251b14893 100 }
giavottop 0:22e251b14893 101 }
giavottop 0:22e251b14893 102 if(direction == 1 && selected == 0){
giavottop 0:22e251b14893 103 if(stickYloc != 0){
giavottop 0:22e251b14893 104 int i = spots[stickYloc - 1][stickXloc];
giavottop 0:22e251b14893 105 uLCD.filled_rectangle(rv[i][0],rv[i][1],rv[i][2],rv[i][3],WHITE);
giavottop 0:22e251b14893 106 int j = spots[stickYloc][stickXloc];
giavottop 0:22e251b14893 107 uLCD.filled_rectangle(rv[j][0],rv[j][1],rv[j][2],rv[j][3],BLUE);
giavottop 0:22e251b14893 108 stickYloc--;
giavottop 0:22e251b14893 109 }
giavottop 0:22e251b14893 110 }
giavottop 0:22e251b14893 111 if(direction == 0 && selected == 0){
giavottop 0:22e251b14893 112 if(stickXloc != 5){
giavottop 0:22e251b14893 113 int i = spots[stickYloc][stickXloc + 1];
giavottop 0:22e251b14893 114 uLCD.filled_rectangle(rv[i][0],rv[i][1],rv[i][2],rv[i][3],WHITE);
giavottop 0:22e251b14893 115 int j = spots[stickYloc][stickXloc];
giavottop 0:22e251b14893 116 uLCD.filled_rectangle(rv[j][0],rv[j][1],rv[j][2],rv[j][3],BLUE);
giavottop 0:22e251b14893 117 stickXloc++;
giavottop 0:22e251b14893 118 }
giavottop 0:22e251b14893 119 }
giavottop 0:22e251b14893 120 if(direction == 3 && selected == 0){
giavottop 0:22e251b14893 121 if(stickYloc != 5){
giavottop 0:22e251b14893 122 int i = spots[stickYloc + 1][stickXloc];
giavottop 0:22e251b14893 123 uLCD.filled_rectangle(rv[i][0],rv[i][1],rv[i][2],rv[i][3],WHITE);
giavottop 0:22e251b14893 124 int j = spots[stickYloc][stickXloc];
giavottop 0:22e251b14893 125 uLCD.filled_rectangle(rv[j][0],rv[j][1],rv[j][2],rv[j][3],BLUE);
giavottop 0:22e251b14893 126 stickYloc++;
giavottop 0:22e251b14893 127 }
giavottop 0:22e251b14893 128
giavottop 0:22e251b14893 129 }
giavottop 0:22e251b14893 130 if(direction == 5){
giavottop 0:22e251b14893 131 if(selected == 0){
giavottop 0:22e251b14893 132 selected = 1;
giavottop 0:22e251b14893 133 selectedX = stickXloc;
giavottop 0:22e251b14893 134 selectedY = stickYloc;
giavottop 0:22e251b14893 135 pc.printf("%i \n\r",selectedX);
giavottop 0:22e251b14893 136 }
giavottop 0:22e251b14893 137 else if(selected == 1){
giavottop 0:22e251b14893 138 selected = 0;
giavottop 0:22e251b14893 139 selectedX = -1;
giavottop 0:22e251b14893 140 selectedY = -1;
giavottop 0:22e251b14893 141 pc.printf("done");
giavottop 0:22e251b14893 142 }
giavottop 0:22e251b14893 143 }
giavottop 0:22e251b14893 144 }
giavottop 0:22e251b14893 145
giavottop 0:22e251b14893 146 void updateMainCar(int direction){
giavottop 0:22e251b14893 147 int i = spots[mainCarY][mainCarX];
giavottop 0:22e251b14893 148 uLCD.filled_rectangle(rv[i][0],rv[i][1],rv[i][2],rv[i][3],RED);
giavottop 0:22e251b14893 149 open[mainCarY][mainCarX] = 1;
giavottop 0:22e251b14893 150 int j = spots[mainCarY][mainCarX + 1];
giavottop 0:22e251b14893 151 uLCD.filled_rectangle(rv[j][0],rv[j][1],rv[j][2],rv[j][3],RED);
giavottop 0:22e251b14893 152 open[mainCarY][mainCarX + 1] = 1;
giavottop 0:22e251b14893 153 if(mainCarX > 0 && open[mainCarY][mainCarX - 1] == 0){
giavottop 0:22e251b14893 154 int p = spots[mainCarY][mainCarX - 1];
giavottop 0:22e251b14893 155 uLCD.filled_rectangle(rv[p][0],rv[p][1],rv[p][2],rv[p][3],BLUE);
giavottop 0:22e251b14893 156 }
giavottop 0:22e251b14893 157 if(mainCarX < 4 && open[mainCarY][mainCarX + 2] == 0){
giavottop 0:22e251b14893 158 int p = spots[mainCarY][mainCarX + 2];
giavottop 0:22e251b14893 159 uLCD.filled_rectangle(rv[p][0],rv[p][1],rv[p][2],rv[p][3],BLUE);
giavottop 0:22e251b14893 160 }
giavottop 0:22e251b14893 161
giavottop 0:22e251b14893 162
giavottop 0:22e251b14893 163
giavottop 0:22e251b14893 164 if((selectedX == mainCarX || selectedX == mainCarX + 1) && selectedY == mainCarY){
giavottop 0:22e251b14893 165 if(direction == 2 && open[mainCarY][mainCarX - 1] == 0){
giavottop 0:22e251b14893 166 if(mainCarX != 0){
giavottop 0:22e251b14893 167 mainCarX--;
giavottop 0:22e251b14893 168 selectedX--;
giavottop 0:22e251b14893 169 stickXloc--;
giavottop 0:22e251b14893 170 open[mainCarY][mainCarX + 2] = 0;
giavottop 0:22e251b14893 171 }
giavottop 0:22e251b14893 172
giavottop 0:22e251b14893 173 }
giavottop 0:22e251b14893 174 if(direction == 0 && open[mainCarY][mainCarX + 2] == 0){
giavottop 0:22e251b14893 175 if(mainCarX != 4){
giavottop 0:22e251b14893 176 mainCarX++;
giavottop 0:22e251b14893 177 selectedX++;
giavottop 0:22e251b14893 178 stickXloc++;
giavottop 0:22e251b14893 179 open[mainCarY][mainCarX - 1] = 0;
giavottop 0:22e251b14893 180 }
giavottop 0:22e251b14893 181 }
giavottop 0:22e251b14893 182
giavottop 0:22e251b14893 183 }
giavottop 0:22e251b14893 184 }
giavottop 0:22e251b14893 185
giavottop 0:22e251b14893 186 //void updateHorCar(int direction, Vehicle hold){
giavottop 0:22e251b14893 187 // int i = spots[hold.getY()][hold.getX()];
giavottop 0:22e251b14893 188 // uLCD.filled_rectangle(rv[i][0],rv[i][1],rv[i][2],rv[i][3],GREEN);
giavottop 0:22e251b14893 189 // int j = spots[hold.getY()][hold.getX() + 1];
giavottop 0:22e251b14893 190 // uLCD.filled_rectangle(rv[j][0],rv[j][1],rv[j][2],rv[j][3],GREEN);
giavottop 0:22e251b14893 191 // if(hold.getX() > 0){
giavottop 0:22e251b14893 192 // int p = spots[hold.getY()][hold.getX() - 1];
giavottop 0:22e251b14893 193 // uLCD.filled_rectangle(rv[p][0],rv[p][1],rv[p][2],rv[p][3],BLUE);
giavottop 0:22e251b14893 194 // }
giavottop 0:22e251b14893 195 // if(hold.getX() < 4){
giavottop 0:22e251b14893 196 // int p = spots[hold.getY()][hold.getX() + 2];
giavottop 0:22e251b14893 197 // uLCD.filled_rectangle(rv[p][0],rv[p][1],rv[p][2],rv[p][3],BLUE);
giavottop 0:22e251b14893 198 // }
giavottop 0:22e251b14893 199 //
giavottop 0:22e251b14893 200 //
giavottop 0:22e251b14893 201 //
giavottop 0:22e251b14893 202 // if((selectedX == hold.getX() || selectedX == hold.getX() + 1) && selectedY == hold.getY()){
giavottop 0:22e251b14893 203 // if(direction == 2){
giavottop 0:22e251b14893 204 // if(hold.getX() != 0){
giavottop 0:22e251b14893 205 // hold.dimX();
giavottop 0:22e251b14893 206 // selectedX--;
giavottop 0:22e251b14893 207 // stickXloc--;
giavottop 0:22e251b14893 208 // }
giavottop 0:22e251b14893 209 //
giavottop 0:22e251b14893 210 // }
giavottop 0:22e251b14893 211 // if(direction == 0){
giavottop 0:22e251b14893 212 // if(hold.getX() != 4){
giavottop 0:22e251b14893 213 // hold.incX();
giavottop 0:22e251b14893 214 // uLCD.printf("%i",hold.getX());
giavottop 0:22e251b14893 215 // selectedX++;
giavottop 0:22e251b14893 216 // stickXloc++;
giavottop 0:22e251b14893 217 // }
giavottop 0:22e251b14893 218 // }
giavottop 0:22e251b14893 219 //
giavottop 0:22e251b14893 220 // }
giavottop 0:22e251b14893 221 //
giavottop 0:22e251b14893 222 //}
giavottop 0:22e251b14893 223 //
giavottop 0:22e251b14893 224 //void updateVertVehicle(int xPos, int yPos){
giavottop 0:22e251b14893 225 //
giavottop 0:22e251b14893 226 //
giavottop 0:22e251b14893 227 //}
giavottop 0:22e251b14893 228
giavottop 0:22e251b14893 229 void easyLevel(){
giavottop 0:22e251b14893 230 FILE *wave_file1;
giavottop 0:22e251b14893 231
giavottop 0:22e251b14893 232 wave_file1=fopen("/sd/wavfiles/horn.wav","r");
giavottop 0:22e251b14893 233 waver.play(wave_file1);
giavottop 0:22e251b14893 234 fclose(wave_file1);
giavottop 0:22e251b14893 235
giavottop 0:22e251b14893 236 mainCarX = 1;
giavottop 0:22e251b14893 237 mainCarY = 2;
giavottop 0:22e251b14893 238
giavottop 0:22e251b14893 239 Vehicle car1(0,0);
giavottop 0:22e251b14893 240 Vehicle car2(4,4);
giavottop 0:22e251b14893 241 Vehicle car3(4,0);
giavottop 0:22e251b14893 242 Vehicle truck1(0,5);
giavottop 0:22e251b14893 243 Vehicle truck2(1,0);
giavottop 0:22e251b14893 244 Vehicle truck3(1,3);
giavottop 0:22e251b14893 245 Vehicle truck4(5,2);
giavottop 0:22e251b14893 246
giavottop 0:22e251b14893 247 uLCD.filled_rectangle(121,39,128,56,RED);
giavottop 0:22e251b14893 248
giavottop 0:22e251b14893 249 while(1){
giavottop 0:22e251b14893 250 int direction = getInput();
giavottop 0:22e251b14893 251 updateStickLocation(direction);
giavottop 0:22e251b14893 252 updateMainCar(direction);
giavottop 0:22e251b14893 253 //updateHorCar(direction, car1);
giavottop 0:22e251b14893 254
giavottop 0:22e251b14893 255
giavottop 0:22e251b14893 256 int i = spots[car1.getY()][car1.getX()];
giavottop 0:22e251b14893 257 uLCD.filled_rectangle(rv[i][0],rv[i][1],rv[i][2],rv[i][3],GREEN);
giavottop 0:22e251b14893 258 open[car1.getY()][car1.getX()] = 1;
giavottop 0:22e251b14893 259 int j = spots[car1.getY()][car1.getX() + 1];
giavottop 0:22e251b14893 260 uLCD.filled_rectangle(rv[j][0],rv[j][1],rv[j][2],rv[j][3],GREEN);
giavottop 0:22e251b14893 261 open[car1.getY()][car1.getX() + 1] = 1;
giavottop 0:22e251b14893 262 if(car1.getX() > 0 && open[car1.getY()][car1.getX() - 1] == 0){
giavottop 0:22e251b14893 263 int p = spots[car1.getY()][car1.getX() - 1];
giavottop 0:22e251b14893 264 uLCD.filled_rectangle(rv[p][0],rv[p][1],rv[p][2],rv[p][3],BLUE);
giavottop 0:22e251b14893 265 }
giavottop 0:22e251b14893 266 if(car1.getX() < 4 && open[car1.getY()][car1.getX() + 2] == 0){
giavottop 0:22e251b14893 267 int p = spots[car1.getY()][car1.getX() + 2];
giavottop 0:22e251b14893 268 uLCD.filled_rectangle(rv[p][0],rv[p][1],rv[p][2],rv[p][3],BLUE);
giavottop 0:22e251b14893 269 }
giavottop 0:22e251b14893 270
giavottop 0:22e251b14893 271
giavottop 0:22e251b14893 272
giavottop 0:22e251b14893 273 if((selectedX == car1.getX() || selectedX == car1.getX() + 1) && selectedY == car1.getY()){
giavottop 0:22e251b14893 274 if(direction == 2 && open[car1.getY()][car1.getX() - 1] == 0){
giavottop 0:22e251b14893 275 if(car1.getX() != 0){
giavottop 0:22e251b14893 276 car1.dimX();
giavottop 0:22e251b14893 277 selectedX--;
giavottop 0:22e251b14893 278 stickXloc--;
giavottop 0:22e251b14893 279 open[car1.getY()][car1.getX() + 2] = 0;
giavottop 0:22e251b14893 280 }
giavottop 0:22e251b14893 281
giavottop 0:22e251b14893 282 }
giavottop 0:22e251b14893 283 if(direction == 0 && open[car1.getY()][car1.getX() + 2] == 0){
giavottop 0:22e251b14893 284 if(car1.getX() != 4){
giavottop 0:22e251b14893 285 car1.incX();
giavottop 0:22e251b14893 286 selectedX++;
giavottop 0:22e251b14893 287 stickXloc++;
giavottop 0:22e251b14893 288 open[car1.getY()][car1.getX() - 1] = 0;
giavottop 0:22e251b14893 289 }
giavottop 0:22e251b14893 290 }
giavottop 0:22e251b14893 291
giavottop 0:22e251b14893 292 }
giavottop 0:22e251b14893 293
giavottop 0:22e251b14893 294 i = spots[car2.getY()][car2.getX()];
giavottop 0:22e251b14893 295 uLCD.filled_rectangle(rv[i][0],rv[i][1],rv[i][2],rv[i][3],GREEN);
giavottop 0:22e251b14893 296 open[car2.getY()][car2.getX()] = 1;
giavottop 0:22e251b14893 297 j = spots[car2.getY()][car2.getX() + 1];
giavottop 0:22e251b14893 298 uLCD.filled_rectangle(rv[j][0],rv[j][1],rv[j][2],rv[j][3],GREEN);
giavottop 0:22e251b14893 299 open[car2.getY()][car2.getX() + 1] = 1;
giavottop 0:22e251b14893 300 if(car2.getX() > 0 && open[car2.getY()][car2.getX() - 1] == 0){
giavottop 0:22e251b14893 301 int p = spots[car2.getY()][car2.getX() - 1];
giavottop 0:22e251b14893 302 uLCD.filled_rectangle(rv[p][0],rv[p][1],rv[p][2],rv[p][3],BLUE);
giavottop 0:22e251b14893 303 }
giavottop 0:22e251b14893 304 if(car2.getX() < 4 && open[car2.getY()][car2.getX() + 2] == 0){
giavottop 0:22e251b14893 305 int p = spots[car2.getY()][car2.getX() + 2];
giavottop 0:22e251b14893 306 uLCD.filled_rectangle(rv[p][0],rv[p][1],rv[p][2],rv[p][3],BLUE);
giavottop 0:22e251b14893 307 }
giavottop 0:22e251b14893 308
giavottop 0:22e251b14893 309
giavottop 0:22e251b14893 310
giavottop 0:22e251b14893 311 if((selectedX == car2.getX() || selectedX == car2.getX() + 1) && selectedY == car2.getY()){
giavottop 0:22e251b14893 312 if(direction == 2 && open[car2.getY()][car2.getX() - 1] == 0){
giavottop 0:22e251b14893 313 if(car2.getX() != 0){
giavottop 0:22e251b14893 314 car2.dimX();
giavottop 0:22e251b14893 315 selectedX--;
giavottop 0:22e251b14893 316 stickXloc--;
giavottop 0:22e251b14893 317 open[car2.getY()][car2.getX() + 2] = 0;
giavottop 0:22e251b14893 318 }
giavottop 0:22e251b14893 319
giavottop 0:22e251b14893 320 }
giavottop 0:22e251b14893 321 if(direction == 0 && open[car2.getY()][car2.getX() + 2] == 0){
giavottop 0:22e251b14893 322 if(car2.getX() != 4){
giavottop 0:22e251b14893 323 car2.incX();
giavottop 0:22e251b14893 324 selectedX++;
giavottop 0:22e251b14893 325 stickXloc++;
giavottop 0:22e251b14893 326 open[car2.getY()][car2.getX() - 1] = 0;
giavottop 0:22e251b14893 327 }
giavottop 0:22e251b14893 328 }
giavottop 0:22e251b14893 329
giavottop 0:22e251b14893 330 }
giavottop 0:22e251b14893 331
giavottop 0:22e251b14893 332 i = spots[car3.getY()][car3.getX()];
giavottop 0:22e251b14893 333 uLCD.filled_rectangle(rv[i][0],rv[i][1],rv[i][2],rv[i][3],GREEN);
giavottop 0:22e251b14893 334 open[car3.getY()][car3.getX()] = 1;
giavottop 0:22e251b14893 335 j = spots[car3.getY() + 1][car3.getX()];
giavottop 0:22e251b14893 336 uLCD.filled_rectangle(rv[j][0],rv[j][1],rv[j][2],rv[j][3],GREEN);
giavottop 0:22e251b14893 337 open[car3.getY() + 1][car3.getX()] = 1;
giavottop 0:22e251b14893 338 if(car3.getY() > 0 && open[car3.getY() - 1][car3.getX()] == 0){
giavottop 0:22e251b14893 339 int p = spots[car3.getY() - 1][car3.getX()];
giavottop 0:22e251b14893 340 uLCD.filled_rectangle(rv[p][0],rv[p][1],rv[p][2],rv[p][3],BLUE);
giavottop 0:22e251b14893 341 }
giavottop 0:22e251b14893 342 if(car3.getY() < 4 && open[car3.getY() + 2][car3.getX()] == 0){
giavottop 0:22e251b14893 343 int p = spots[car3.getY() + 2][car3.getX()];
giavottop 0:22e251b14893 344 uLCD.filled_rectangle(rv[p][0],rv[p][1],rv[p][2],rv[p][3],BLUE);
giavottop 0:22e251b14893 345 }
giavottop 0:22e251b14893 346
giavottop 0:22e251b14893 347
giavottop 0:22e251b14893 348
giavottop 0:22e251b14893 349 if((selectedY == car3.getY() || selectedY == car3.getY() + 1) && selectedX == car3.getX()){
giavottop 0:22e251b14893 350 if(direction == 1 && open[car3.getY() - 1][car3.getX()] == 0){
giavottop 0:22e251b14893 351 if(car3.getY() != 0){
giavottop 0:22e251b14893 352 car3.dimY();
giavottop 0:22e251b14893 353 selectedY--;
giavottop 0:22e251b14893 354 stickYloc--;
giavottop 0:22e251b14893 355 open[car3.getY() + 2][car3.getX()] = 0;
giavottop 0:22e251b14893 356 }
giavottop 0:22e251b14893 357
giavottop 0:22e251b14893 358 }
giavottop 0:22e251b14893 359 if(direction == 3 && open[car3.getY() + 2][car3.getX()] == 0){
giavottop 0:22e251b14893 360 if(car3.getY() != 4){
giavottop 0:22e251b14893 361 car3.incY();
giavottop 0:22e251b14893 362 selectedY++;
giavottop 0:22e251b14893 363 stickYloc++;
giavottop 0:22e251b14893 364 open[car3.getY() - 1][car3.getX()] = 0;
giavottop 0:22e251b14893 365 }
giavottop 0:22e251b14893 366 }
giavottop 0:22e251b14893 367
giavottop 0:22e251b14893 368 }
giavottop 0:22e251b14893 369
giavottop 0:22e251b14893 370 i = spots[truck1.getY()][truck1.getX()];
giavottop 0:22e251b14893 371 uLCD.filled_rectangle(rv[i][0],rv[i][1],rv[i][2],rv[i][3], 0xFFFF00);
giavottop 0:22e251b14893 372 open[truck1.getY()][truck1.getX()] = 1;
giavottop 0:22e251b14893 373 j = spots[truck1.getY() + 1][truck1.getX()];
giavottop 0:22e251b14893 374 uLCD.filled_rectangle(rv[j][0],rv[j][1],rv[j][2],rv[j][3], 0xFFFF00);
giavottop 0:22e251b14893 375 open[truck1.getY() + 1][truck1.getX()] = 1;
giavottop 0:22e251b14893 376 j = spots[truck1.getY() + 2][truck1.getX()];
giavottop 0:22e251b14893 377 uLCD.filled_rectangle(rv[j][0],rv[j][1],rv[j][2],rv[j][3], 0xFFFF00);
giavottop 0:22e251b14893 378 open[truck1.getY() + 2][truck1.getX()] = 1;
giavottop 0:22e251b14893 379 if(truck1.getY() > 0 && open[truck1.getY() - 1][truck1.getX()] == 0){
giavottop 0:22e251b14893 380 int p = spots[truck1.getY() - 1][truck1.getX()];
giavottop 0:22e251b14893 381 uLCD.filled_rectangle(rv[p][0],rv[p][1],rv[p][2],rv[p][3],BLUE);
giavottop 0:22e251b14893 382 }
giavottop 0:22e251b14893 383 if(truck1.getY() < 3 && open[truck1.getY() + 3][truck1.getX()] == 0){
giavottop 0:22e251b14893 384 int p = spots[truck1.getY() + 3][truck1.getX()];
giavottop 0:22e251b14893 385 uLCD.filled_rectangle(rv[p][0],rv[p][1],rv[p][2],rv[p][3],BLUE);
giavottop 0:22e251b14893 386 }
giavottop 0:22e251b14893 387
giavottop 0:22e251b14893 388
giavottop 0:22e251b14893 389
giavottop 0:22e251b14893 390 if((selectedY == truck1.getY() || selectedY == truck1.getY() + 1 || selectedY == truck1.getY() + 2) && selectedX == truck1.getX()){
giavottop 0:22e251b14893 391 if(direction == 1 && open[truck1.getY() - 1][truck1.getX()] == 0){
giavottop 0:22e251b14893 392 if(truck1.getY() != 0){
giavottop 0:22e251b14893 393 truck1.dimY();
giavottop 0:22e251b14893 394 selectedY--;
giavottop 0:22e251b14893 395 stickYloc--;
giavottop 0:22e251b14893 396 open[truck1.getY() + 3][truck1.getX()] = 0;
giavottop 0:22e251b14893 397 }
giavottop 0:22e251b14893 398
giavottop 0:22e251b14893 399 }
giavottop 0:22e251b14893 400 if(direction == 3 && open[truck1.getY() + 3][truck1.getX()] == 0){
giavottop 0:22e251b14893 401 if(truck1.getY() != 3){
giavottop 0:22e251b14893 402 truck1.incY();
giavottop 0:22e251b14893 403 selectedY++;
giavottop 0:22e251b14893 404 stickYloc++;
giavottop 0:22e251b14893 405 open[truck1.getY() - 1][truck1.getX()] = 0;
giavottop 0:22e251b14893 406 }
giavottop 0:22e251b14893 407 }
giavottop 0:22e251b14893 408
giavottop 0:22e251b14893 409 }
giavottop 0:22e251b14893 410
giavottop 0:22e251b14893 411
giavottop 0:22e251b14893 412
giavottop 0:22e251b14893 413 i = spots[truck2.getY()][truck2.getX()];
giavottop 0:22e251b14893 414 uLCD.filled_rectangle(rv[i][0],rv[i][1],rv[i][2],rv[i][3], 0xFFFF00);
giavottop 0:22e251b14893 415 open[truck2.getY()][truck2.getX()] = 1;
giavottop 0:22e251b14893 416 j = spots[truck2.getY() + 1][truck2.getX()];
giavottop 0:22e251b14893 417 uLCD.filled_rectangle(rv[j][0],rv[j][1],rv[j][2],rv[j][3], 0xFFFF00);
giavottop 0:22e251b14893 418 open[truck2.getY() + 1][truck2.getX()] = 1;
giavottop 0:22e251b14893 419 j = spots[truck2.getY() + 2][truck2.getX()];
giavottop 0:22e251b14893 420 uLCD.filled_rectangle(rv[j][0],rv[j][1],rv[j][2],rv[j][3], 0xFFFF00);
giavottop 0:22e251b14893 421 open[truck2.getY() + 2][truck2.getX()] = 1;
giavottop 0:22e251b14893 422 if(truck2.getY() > 0 && open[truck2.getY() - 1][truck2.getX()] == 0){
giavottop 0:22e251b14893 423 int p = spots[truck2.getY() - 1][truck2.getX()];
giavottop 0:22e251b14893 424 uLCD.filled_rectangle(rv[p][0],rv[p][1],rv[p][2],rv[p][3],BLUE);
giavottop 0:22e251b14893 425 }
giavottop 0:22e251b14893 426 if(truck2.getY() < 3 && open[truck2.getY() + 3][truck2.getX()] == 0){
giavottop 0:22e251b14893 427 int p = spots[truck2.getY() + 3][truck2.getX()];
giavottop 0:22e251b14893 428 uLCD.filled_rectangle(rv[p][0],rv[p][1],rv[p][2],rv[p][3],BLUE);
giavottop 0:22e251b14893 429 }
giavottop 0:22e251b14893 430
giavottop 0:22e251b14893 431
giavottop 0:22e251b14893 432
giavottop 0:22e251b14893 433 if((selectedY == truck2.getY() || selectedY == truck2.getY() + 1 || selectedY == truck2.getY() + 2) && selectedX == truck2.getX()){
giavottop 0:22e251b14893 434 if(direction == 1 && open[truck2.getY() - 1][truck2.getX()] == 0){
giavottop 0:22e251b14893 435 if(truck2.getY() != 0){
giavottop 0:22e251b14893 436 truck2.dimY();
giavottop 0:22e251b14893 437 selectedY--;
giavottop 0:22e251b14893 438 stickYloc--;
giavottop 0:22e251b14893 439 open[truck2.getY() + 3][truck2.getX()] = 0;
giavottop 0:22e251b14893 440 }
giavottop 0:22e251b14893 441
giavottop 0:22e251b14893 442 }
giavottop 0:22e251b14893 443 if(direction == 3 && open[truck2.getY() + 3][truck2.getX()] == 0){
giavottop 0:22e251b14893 444 if(truck2.getY() != 3){
giavottop 0:22e251b14893 445 truck2.incY();
giavottop 0:22e251b14893 446 selectedY++;
giavottop 0:22e251b14893 447 stickYloc++;
giavottop 0:22e251b14893 448 open[truck2.getY() - 1][truck2.getX()] = 0;
giavottop 0:22e251b14893 449 }
giavottop 0:22e251b14893 450 }
giavottop 0:22e251b14893 451
giavottop 0:22e251b14893 452 }
giavottop 0:22e251b14893 453
giavottop 0:22e251b14893 454 i = spots[truck3.getY()][truck3.getX()];
giavottop 0:22e251b14893 455 uLCD.filled_rectangle(rv[i][0],rv[i][1],rv[i][2],rv[i][3], 0xFFFF00);
giavottop 0:22e251b14893 456 open[truck3.getY()][truck3.getX()] = 1;
giavottop 0:22e251b14893 457 j = spots[truck3.getY() + 1][truck3.getX()];
giavottop 0:22e251b14893 458 uLCD.filled_rectangle(rv[j][0],rv[j][1],rv[j][2],rv[j][3], 0xFFFF00);
giavottop 0:22e251b14893 459 open[truck3.getY() + 1][truck3.getX()] = 1;
giavottop 0:22e251b14893 460 j = spots[truck3.getY() + 2][truck3.getX()];
giavottop 0:22e251b14893 461 uLCD.filled_rectangle(rv[j][0],rv[j][1],rv[j][2],rv[j][3], 0xFFFF00);
giavottop 0:22e251b14893 462 open[truck3.getY() + 2][truck3.getX()] = 1;
giavottop 0:22e251b14893 463 if(truck3.getY() > 0 && open[truck3.getY() - 1][truck3.getX()] == 0){
giavottop 0:22e251b14893 464 int p = spots[truck3.getY() - 1][truck3.getX()];
giavottop 0:22e251b14893 465 uLCD.filled_rectangle(rv[p][0],rv[p][1],rv[p][2],rv[p][3],BLUE);
giavottop 0:22e251b14893 466 }
giavottop 0:22e251b14893 467 if(truck3.getY() < 3 && open[truck3.getY() + 3][truck3.getX()] == 0){
giavottop 0:22e251b14893 468 int p = spots[truck3.getY() + 3][truck3.getX()];
giavottop 0:22e251b14893 469 uLCD.filled_rectangle(rv[p][0],rv[p][1],rv[p][2],rv[p][3],BLUE);
giavottop 0:22e251b14893 470 }
giavottop 0:22e251b14893 471
giavottop 0:22e251b14893 472
giavottop 0:22e251b14893 473
giavottop 0:22e251b14893 474 if((selectedY == truck3.getY() || selectedY == truck3.getY() + 1 || selectedY == truck3.getY() + 2) && selectedX == truck3.getX()){
giavottop 0:22e251b14893 475 if(direction == 1 && open[truck3.getY() - 1][truck3.getX()] == 0){
giavottop 0:22e251b14893 476 if(truck3.getY() != 0){
giavottop 0:22e251b14893 477 truck3.dimY();
giavottop 0:22e251b14893 478 selectedY--;
giavottop 0:22e251b14893 479 stickYloc--;
giavottop 0:22e251b14893 480 open[truck3.getY() + 3][truck3.getX()] = 0;
giavottop 0:22e251b14893 481 }
giavottop 0:22e251b14893 482
giavottop 0:22e251b14893 483 }
giavottop 0:22e251b14893 484 if(direction == 3 && open[truck3.getY() + 3][truck3.getX()] == 0){
giavottop 0:22e251b14893 485 if(truck3.getY() != 3){
giavottop 0:22e251b14893 486 truck3.incY();
giavottop 0:22e251b14893 487 selectedY++;
giavottop 0:22e251b14893 488 stickYloc++;
giavottop 0:22e251b14893 489 open[truck3.getY() - 1][truck3.getX()] = 0;
giavottop 0:22e251b14893 490 }
giavottop 0:22e251b14893 491 }
giavottop 0:22e251b14893 492
giavottop 0:22e251b14893 493 }
giavottop 0:22e251b14893 494
giavottop 0:22e251b14893 495
giavottop 0:22e251b14893 496 i = spots[truck4.getY()][truck4.getX()];
giavottop 0:22e251b14893 497 uLCD.filled_rectangle(rv[i][0],rv[i][1],rv[i][2],rv[i][3], 0xFFFF00);
giavottop 0:22e251b14893 498 open[truck4.getY()][truck4.getX()] = 1;
giavottop 0:22e251b14893 499 j = spots[truck4.getY()][truck4.getX() + 1];
giavottop 0:22e251b14893 500 uLCD.filled_rectangle(rv[j][0],rv[j][1],rv[j][2],rv[j][3], 0xFFFF00);
giavottop 0:22e251b14893 501 open[truck4.getY()][truck4.getX() + 1] = 1;
giavottop 0:22e251b14893 502 j = spots[truck4.getY()][truck4.getX() + 2];
giavottop 0:22e251b14893 503 uLCD.filled_rectangle(rv[j][0],rv[j][1],rv[j][2],rv[j][3], 0xFFFF00);
giavottop 0:22e251b14893 504 open[truck4.getY()][truck4.getX() + 2] = 1;
giavottop 0:22e251b14893 505 if(truck4.getX() > 0 && open[truck4.getY()][truck4.getX() - 1] == 0){
giavottop 0:22e251b14893 506 int p = spots[truck4.getY()][truck4.getX() - 1];
giavottop 0:22e251b14893 507 uLCD.filled_rectangle(rv[p][0],rv[p][1],rv[p][2],rv[p][3],BLUE);
giavottop 0:22e251b14893 508 }
giavottop 0:22e251b14893 509 if(truck4.getX() < 3 && open[truck4.getY()][truck4.getX() + 3] == 0){
giavottop 0:22e251b14893 510 int p = spots[truck4.getY()][truck4.getX() + 3];
giavottop 0:22e251b14893 511 uLCD.filled_rectangle(rv[p][0],rv[p][1],rv[p][2],rv[p][3],BLUE);
giavottop 0:22e251b14893 512 }
giavottop 0:22e251b14893 513
giavottop 0:22e251b14893 514
giavottop 0:22e251b14893 515
giavottop 0:22e251b14893 516 if((selectedX == truck4.getX() || selectedX == truck4.getX() + 1 || selectedX == truck4.getX() + 2) && selectedY == truck4.getY()){
giavottop 0:22e251b14893 517 if(direction == 2 && open[truck4.getY()][truck4.getX() - 1] == 0){
giavottop 0:22e251b14893 518 if(truck4.getX() != 0){
giavottop 0:22e251b14893 519 truck4.dimX();
giavottop 0:22e251b14893 520 selectedX--;
giavottop 0:22e251b14893 521 stickXloc--;
giavottop 0:22e251b14893 522 open[truck4.getY()][truck4.getX() + 3] = 0;
giavottop 0:22e251b14893 523 }
giavottop 0:22e251b14893 524
giavottop 0:22e251b14893 525 }
giavottop 0:22e251b14893 526 if(direction == 0 && open[truck4.getY()][truck4.getX() + 3] == 0){
giavottop 0:22e251b14893 527 if(truck4.getX() != 3){
giavottop 0:22e251b14893 528 truck4.incX();
giavottop 0:22e251b14893 529 selectedX++;
giavottop 0:22e251b14893 530 stickXloc++;
giavottop 0:22e251b14893 531 open[truck4.getY()][truck4.getX() - 1] = 0;
giavottop 0:22e251b14893 532 }
giavottop 0:22e251b14893 533 }
giavottop 0:22e251b14893 534
giavottop 0:22e251b14893 535 }
giavottop 0:22e251b14893 536
giavottop 0:22e251b14893 537 if(mainCarX == 4){
giavottop 0:22e251b14893 538 uLCD.text_width(2); //4X size text
giavottop 0:22e251b14893 539 uLCD.text_height(2);
giavottop 0:22e251b14893 540 uLCD.printf("\nYOU WIN\n");
giavottop 0:22e251b14893 541
giavottop 0:22e251b14893 542 FILE *wave_file;
giavottop 0:22e251b14893 543
giavottop 0:22e251b14893 544 for(int i=0; i<4; ++i) {
giavottop 0:22e251b14893 545 wave_file=fopen("/sd/wavfiles/boo_yah.wav","r");
giavottop 0:22e251b14893 546 waver.play(wave_file);
giavottop 0:22e251b14893 547 fclose(wave_file);
giavottop 0:22e251b14893 548 }
giavottop 0:22e251b14893 549
giavottop 0:22e251b14893 550
giavottop 0:22e251b14893 551 wait(2.0);
giavottop 0:22e251b14893 552 return;
giavottop 0:22e251b14893 553 }
giavottop 0:22e251b14893 554
giavottop 0:22e251b14893 555
giavottop 0:22e251b14893 556 }
giavottop 0:22e251b14893 557
giavottop 0:22e251b14893 558 }
giavottop 0:22e251b14893 559
giavottop 0:22e251b14893 560 void mediumLevel(){
giavottop 0:22e251b14893 561 FILE *wave_file1;
giavottop 0:22e251b14893 562
giavottop 0:22e251b14893 563 wave_file1=fopen("/sd/wavfiles/horn.wav","r");
giavottop 0:22e251b14893 564 waver.play(wave_file1);
giavottop 0:22e251b14893 565 fclose(wave_file1);
giavottop 0:22e251b14893 566
giavottop 0:22e251b14893 567 mainCarX = 0;
giavottop 0:22e251b14893 568 mainCarY = 2;
giavottop 0:22e251b14893 569
giavottop 0:22e251b14893 570 Vehicle car1(0,1);
giavottop 0:22e251b14893 571 Vehicle car2(0,0);
giavottop 0:22e251b14893 572 Vehicle car3(4,4);
giavottop 0:22e251b14893 573 Vehicle truck1(1,2);
giavottop 0:22e251b14893 574 Vehicle truck2(0,5);
giavottop 0:22e251b14893 575 Vehicle truck3(3,3);
giavottop 0:22e251b14893 576 Vehicle truck4(5,0);
giavottop 0:22e251b14893 577
giavottop 0:22e251b14893 578 uLCD.filled_rectangle(121,39,128,56,RED);
giavottop 0:22e251b14893 579
giavottop 0:22e251b14893 580 while(1){
giavottop 0:22e251b14893 581 int direction = getInput();
giavottop 0:22e251b14893 582 updateStickLocation(direction);
giavottop 0:22e251b14893 583 updateMainCar(direction);
giavottop 0:22e251b14893 584 //updateHorCar(direction, car1);
giavottop 0:22e251b14893 585
giavottop 0:22e251b14893 586
giavottop 0:22e251b14893 587 int i = spots[car1.getY()][car1.getX()];
giavottop 0:22e251b14893 588 uLCD.filled_rectangle(rv[i][0],rv[i][1],rv[i][2],rv[i][3],GREEN);
giavottop 0:22e251b14893 589 open[car1.getY()][car1.getX()] = 1;
giavottop 0:22e251b14893 590 int j = spots[car1.getY()][car1.getX() + 1];
giavottop 0:22e251b14893 591 uLCD.filled_rectangle(rv[j][0],rv[j][1],rv[j][2],rv[j][3],GREEN);
giavottop 0:22e251b14893 592 open[car1.getY()][car1.getX() + 1] = 1;
giavottop 0:22e251b14893 593 if(car1.getX() > 0 && open[car1.getY()][car1.getX() - 1] == 0){
giavottop 0:22e251b14893 594 int p = spots[car1.getY()][car1.getX() - 1];
giavottop 0:22e251b14893 595 uLCD.filled_rectangle(rv[p][0],rv[p][1],rv[p][2],rv[p][3],BLUE);
giavottop 0:22e251b14893 596 }
giavottop 0:22e251b14893 597 if(car1.getX() < 4 && open[car1.getY()][car1.getX() + 2] == 0){
giavottop 0:22e251b14893 598 int p = spots[car1.getY()][car1.getX() + 2];
giavottop 0:22e251b14893 599 uLCD.filled_rectangle(rv[p][0],rv[p][1],rv[p][2],rv[p][3],BLUE);
giavottop 0:22e251b14893 600 }
giavottop 0:22e251b14893 601
giavottop 0:22e251b14893 602
giavottop 0:22e251b14893 603
giavottop 0:22e251b14893 604 if((selectedX == car1.getX() || selectedX == car1.getX() + 1) && selectedY == car1.getY()){
giavottop 0:22e251b14893 605 if(direction == 2 && open[car1.getY()][car1.getX() - 1] == 0){
giavottop 0:22e251b14893 606 if(car1.getX() != 0){
giavottop 0:22e251b14893 607 car1.dimX();
giavottop 0:22e251b14893 608 selectedX--;
giavottop 0:22e251b14893 609 stickXloc--;
giavottop 0:22e251b14893 610 open[car1.getY()][car1.getX() + 2] = 0;
giavottop 0:22e251b14893 611 }
giavottop 0:22e251b14893 612
giavottop 0:22e251b14893 613 }
giavottop 0:22e251b14893 614 if(direction == 0 && open[car1.getY()][car1.getX() + 2] == 0){
giavottop 0:22e251b14893 615 if(car1.getX() != 4){
giavottop 0:22e251b14893 616 car1.incX();
giavottop 0:22e251b14893 617 selectedX++;
giavottop 0:22e251b14893 618 stickXloc++;
giavottop 0:22e251b14893 619 open[car1.getY()][car1.getX() - 1] = 0;
giavottop 0:22e251b14893 620 }
giavottop 0:22e251b14893 621 }
giavottop 0:22e251b14893 622
giavottop 0:22e251b14893 623 }
giavottop 0:22e251b14893 624
giavottop 0:22e251b14893 625 i = spots[car2.getY()][car2.getX()];
giavottop 0:22e251b14893 626 uLCD.filled_rectangle(rv[i][0],rv[i][1],rv[i][2],rv[i][3],DGREY);
giavottop 0:22e251b14893 627 open[car2.getY()][car2.getX()] = 1;
giavottop 0:22e251b14893 628 j = spots[car2.getY() + 1][car2.getX()];
giavottop 0:22e251b14893 629 uLCD.filled_rectangle(rv[j][0],rv[j][1],rv[j][2],rv[j][3],DGREY);
giavottop 0:22e251b14893 630 open[car2.getY() + 1][car2.getX()] = 1;
giavottop 0:22e251b14893 631 if(car2.getY() > 0 && open[car2.getY() - 1][car2.getX()] == 0){
giavottop 0:22e251b14893 632 int p = spots[car2.getY() - 1][car2.getX()];
giavottop 0:22e251b14893 633 uLCD.filled_rectangle(rv[p][0],rv[p][1],rv[p][2],rv[p][3],BLUE);
giavottop 0:22e251b14893 634 }
giavottop 0:22e251b14893 635 if(car2.getY() < 4 && open[car2.getY() + 2][car2.getX()] == 0){
giavottop 0:22e251b14893 636 int p = spots[car2.getY() + 2][car2.getX()];
giavottop 0:22e251b14893 637 uLCD.filled_rectangle(rv[p][0],rv[p][1],rv[p][2],rv[p][3],BLUE);
giavottop 0:22e251b14893 638 }
giavottop 0:22e251b14893 639
giavottop 0:22e251b14893 640
giavottop 0:22e251b14893 641
giavottop 0:22e251b14893 642 if((selectedY == car2.getY() || selectedY == car2.getY() + 1) && selectedX == car2.getX()){
giavottop 0:22e251b14893 643 if(direction == 1 && open[car2.getY() - 1][car2.getX()] == 0){
giavottop 0:22e251b14893 644 if(car2.getY() != 0){
giavottop 0:22e251b14893 645 car2.dimY();
giavottop 0:22e251b14893 646 selectedY--;
giavottop 0:22e251b14893 647 stickYloc--;
giavottop 0:22e251b14893 648 open[car2.getY() + 2][car2.getX()] = 0;
giavottop 0:22e251b14893 649 }
giavottop 0:22e251b14893 650
giavottop 0:22e251b14893 651 }
giavottop 0:22e251b14893 652 if(direction == 3 && open[car2.getY() + 2][car2.getX()] == 0){
giavottop 0:22e251b14893 653 if(car2.getY() != 4){
giavottop 0:22e251b14893 654 car2.incY();
giavottop 0:22e251b14893 655 selectedY++;
giavottop 0:22e251b14893 656 stickYloc++;
giavottop 0:22e251b14893 657 open[car2.getY() - 1][car2.getX()] = 0;
giavottop 0:22e251b14893 658 }
giavottop 0:22e251b14893 659 }
giavottop 0:22e251b14893 660
giavottop 0:22e251b14893 661 }
giavottop 0:22e251b14893 662
giavottop 0:22e251b14893 663 i = spots[car3.getY()][car3.getX()];
giavottop 0:22e251b14893 664 uLCD.filled_rectangle(rv[i][0],rv[i][1],rv[i][2],rv[i][3],DGREY);
giavottop 0:22e251b14893 665 open[car3.getY()][car3.getX()] = 1;
giavottop 0:22e251b14893 666 j = spots[car3.getY() + 1][car3.getX()];
giavottop 0:22e251b14893 667 uLCD.filled_rectangle(rv[j][0],rv[j][1],rv[j][2],rv[j][3],DGREY);
giavottop 0:22e251b14893 668 open[car3.getY() + 1][car3.getX()] = 1;
giavottop 0:22e251b14893 669 if(car3.getY() > 0 && open[car3.getY() - 1][car3.getX()] == 0){
giavottop 0:22e251b14893 670 int p = spots[car3.getY() - 1][car3.getX()];
giavottop 0:22e251b14893 671 uLCD.filled_rectangle(rv[p][0],rv[p][1],rv[p][2],rv[p][3],BLUE);
giavottop 0:22e251b14893 672 }
giavottop 0:22e251b14893 673 if(car3.getY() < 4 && open[car3.getY() + 2][car3.getX()] == 0){
giavottop 0:22e251b14893 674 int p = spots[car3.getY() + 2][car3.getX()];
giavottop 0:22e251b14893 675 uLCD.filled_rectangle(rv[p][0],rv[p][1],rv[p][2],rv[p][3],BLUE);
giavottop 0:22e251b14893 676 }
giavottop 0:22e251b14893 677
giavottop 0:22e251b14893 678
giavottop 0:22e251b14893 679
giavottop 0:22e251b14893 680 if((selectedY == car3.getY() || selectedY == car3.getY() + 1) && selectedX == car3.getX()){
giavottop 0:22e251b14893 681 if(direction == 1 && open[car3.getY() - 1][car3.getX()] == 0){
giavottop 0:22e251b14893 682 if(car3.getY() != 0){
giavottop 0:22e251b14893 683 car3.dimY();
giavottop 0:22e251b14893 684 selectedY--;
giavottop 0:22e251b14893 685 stickYloc--;
giavottop 0:22e251b14893 686 open[car3.getY() + 2][car3.getX()] = 0;
giavottop 0:22e251b14893 687 }
giavottop 0:22e251b14893 688
giavottop 0:22e251b14893 689 }
giavottop 0:22e251b14893 690 if(direction == 3 && open[car3.getY() + 2][car3.getX()] == 0){
giavottop 0:22e251b14893 691 if(car3.getY() != 4){
giavottop 0:22e251b14893 692 car3.incY();
giavottop 0:22e251b14893 693 selectedY++;
giavottop 0:22e251b14893 694 stickYloc++;
giavottop 0:22e251b14893 695 open[car3.getY() - 1][car3.getX()] = 0;
giavottop 0:22e251b14893 696 }
giavottop 0:22e251b14893 697 }
giavottop 0:22e251b14893 698
giavottop 0:22e251b14893 699 }
giavottop 0:22e251b14893 700
giavottop 0:22e251b14893 701 i = spots[truck1.getY()][truck1.getX()];
giavottop 0:22e251b14893 702 uLCD.filled_rectangle(rv[i][0],rv[i][1],rv[i][2],rv[i][3], 0xFFFF00);
giavottop 0:22e251b14893 703 open[truck1.getY()][truck1.getX()] = 1;
giavottop 0:22e251b14893 704 j = spots[truck1.getY() + 1][truck1.getX()];
giavottop 0:22e251b14893 705 uLCD.filled_rectangle(rv[j][0],rv[j][1],rv[j][2],rv[j][3], 0xFFFF00);
giavottop 0:22e251b14893 706 open[truck1.getY() + 1][truck1.getX()] = 1;
giavottop 0:22e251b14893 707 j = spots[truck1.getY() + 2][truck1.getX()];
giavottop 0:22e251b14893 708 uLCD.filled_rectangle(rv[j][0],rv[j][1],rv[j][2],rv[j][3], 0xFFFF00);
giavottop 0:22e251b14893 709 open[truck1.getY() + 2][truck1.getX()] = 1;
giavottop 0:22e251b14893 710 if(truck1.getY() > 0 && open[truck1.getY() - 1][truck1.getX()] == 0){
giavottop 0:22e251b14893 711 int p = spots[truck1.getY() - 1][truck1.getX()];
giavottop 0:22e251b14893 712 uLCD.filled_rectangle(rv[p][0],rv[p][1],rv[p][2],rv[p][3],BLUE);
giavottop 0:22e251b14893 713 }
giavottop 0:22e251b14893 714 if(truck1.getY() < 3 && open[truck1.getY() + 3][truck1.getX()] == 0){
giavottop 0:22e251b14893 715 int p = spots[truck1.getY() + 3][truck1.getX()];
giavottop 0:22e251b14893 716 uLCD.filled_rectangle(rv[p][0],rv[p][1],rv[p][2],rv[p][3],BLUE);
giavottop 0:22e251b14893 717 }
giavottop 0:22e251b14893 718
giavottop 0:22e251b14893 719
giavottop 0:22e251b14893 720
giavottop 0:22e251b14893 721 if((selectedY == truck1.getY() || selectedY == truck1.getY() + 1 || selectedY == truck1.getY() + 2) && selectedX == truck1.getX()){
giavottop 0:22e251b14893 722 if(direction == 1 && open[truck1.getY() - 1][truck1.getX()] == 0){
giavottop 0:22e251b14893 723 if(truck1.getY() != 0){
giavottop 0:22e251b14893 724 truck1.dimY();
giavottop 0:22e251b14893 725 selectedY--;
giavottop 0:22e251b14893 726 stickYloc--;
giavottop 0:22e251b14893 727 open[truck1.getY() + 3][truck1.getX()] = 0;
giavottop 0:22e251b14893 728 }
giavottop 0:22e251b14893 729
giavottop 0:22e251b14893 730 }
giavottop 0:22e251b14893 731 if(direction == 3 && open[truck1.getY() + 3][truck1.getX()] == 0){
giavottop 0:22e251b14893 732 if(truck1.getY() != 3){
giavottop 0:22e251b14893 733 truck1.incY();
giavottop 0:22e251b14893 734 selectedY++;
giavottop 0:22e251b14893 735 stickYloc++;
giavottop 0:22e251b14893 736 open[truck1.getY() - 1][truck1.getX()] = 0;
giavottop 0:22e251b14893 737 }
giavottop 0:22e251b14893 738 }
giavottop 0:22e251b14893 739
giavottop 0:22e251b14893 740 }
giavottop 0:22e251b14893 741
giavottop 0:22e251b14893 742
giavottop 0:22e251b14893 743
giavottop 0:22e251b14893 744 i = spots[truck2.getY()][truck2.getX()];
giavottop 0:22e251b14893 745 uLCD.filled_rectangle(rv[i][0],rv[i][1],rv[i][2],rv[i][3], 0xFFFF00);
giavottop 0:22e251b14893 746 open[truck2.getY()][truck2.getX()] = 1;
giavottop 0:22e251b14893 747 j = spots[truck2.getY() + 1][truck2.getX()];
giavottop 0:22e251b14893 748 uLCD.filled_rectangle(rv[j][0],rv[j][1],rv[j][2],rv[j][3], 0xFFFF00);
giavottop 0:22e251b14893 749 open[truck2.getY() + 1][truck2.getX()] = 1;
giavottop 0:22e251b14893 750 j = spots[truck2.getY() + 2][truck2.getX()];
giavottop 0:22e251b14893 751 uLCD.filled_rectangle(rv[j][0],rv[j][1],rv[j][2],rv[j][3], 0xFFFF00);
giavottop 0:22e251b14893 752 open[truck2.getY() + 2][truck2.getX()] = 1;
giavottop 0:22e251b14893 753 if(truck2.getY() > 0 && open[truck2.getY() - 1][truck2.getX()] == 0){
giavottop 0:22e251b14893 754 int p = spots[truck2.getY() - 1][truck2.getX()];
giavottop 0:22e251b14893 755 uLCD.filled_rectangle(rv[p][0],rv[p][1],rv[p][2],rv[p][3],BLUE);
giavottop 0:22e251b14893 756 }
giavottop 0:22e251b14893 757 if(truck2.getY() < 3 && open[truck2.getY() + 3][truck2.getX()] == 0){
giavottop 0:22e251b14893 758 int p = spots[truck2.getY() + 3][truck2.getX()];
giavottop 0:22e251b14893 759 uLCD.filled_rectangle(rv[p][0],rv[p][1],rv[p][2],rv[p][3],BLUE);
giavottop 0:22e251b14893 760 }
giavottop 0:22e251b14893 761
giavottop 0:22e251b14893 762
giavottop 0:22e251b14893 763
giavottop 0:22e251b14893 764 if((selectedY == truck2.getY() || selectedY == truck2.getY() + 1 || selectedY == truck2.getY() + 2) && selectedX == truck2.getX()){
giavottop 0:22e251b14893 765 if(direction == 1 && open[truck2.getY() - 1][truck2.getX()] == 0){
giavottop 0:22e251b14893 766 if(truck2.getY() != 0){
giavottop 0:22e251b14893 767 truck2.dimY();
giavottop 0:22e251b14893 768 selectedY--;
giavottop 0:22e251b14893 769 stickYloc--;
giavottop 0:22e251b14893 770 open[truck2.getY() + 3][truck2.getX()] = 0;
giavottop 0:22e251b14893 771 }
giavottop 0:22e251b14893 772
giavottop 0:22e251b14893 773 }
giavottop 0:22e251b14893 774 if(direction == 3 && open[truck2.getY() + 3][truck2.getX()] == 0){
giavottop 0:22e251b14893 775 if(truck2.getY() != 3){
giavottop 0:22e251b14893 776 truck2.incY();
giavottop 0:22e251b14893 777 selectedY++;
giavottop 0:22e251b14893 778 stickYloc++;
giavottop 0:22e251b14893 779 open[truck2.getY() - 1][truck2.getX()] = 0;
giavottop 0:22e251b14893 780 }
giavottop 0:22e251b14893 781 }
giavottop 0:22e251b14893 782
giavottop 0:22e251b14893 783 }
giavottop 0:22e251b14893 784
giavottop 0:22e251b14893 785 i = spots[truck3.getY()][truck3.getX()];
giavottop 0:22e251b14893 786 uLCD.filled_rectangle(rv[i][0],rv[i][1],rv[i][2],rv[i][3], GREEN);
giavottop 0:22e251b14893 787 open[truck3.getY()][truck3.getX()] = 1;
giavottop 0:22e251b14893 788 j = spots[truck3.getY()][truck3.getX() + 1];
giavottop 0:22e251b14893 789 uLCD.filled_rectangle(rv[j][0],rv[j][1],rv[j][2],rv[j][3], GREEN);
giavottop 0:22e251b14893 790 open[truck3.getY()][truck3.getX() + 1] = 1;
giavottop 0:22e251b14893 791 j = spots[truck3.getY()][truck3.getX() + 2];
giavottop 0:22e251b14893 792 uLCD.filled_rectangle(rv[j][0],rv[j][1],rv[j][2],rv[j][3], GREEN);
giavottop 0:22e251b14893 793 open[truck3.getY()][truck3.getX() + 2] = 1;
giavottop 0:22e251b14893 794 if(truck3.getX() > 0 && open[truck3.getY()][truck3.getX() - 1] == 0){
giavottop 0:22e251b14893 795 int p = spots[truck3.getY()][truck3.getX() - 1];
giavottop 0:22e251b14893 796 uLCD.filled_rectangle(rv[p][0],rv[p][1],rv[p][2],rv[p][3],BLUE);
giavottop 0:22e251b14893 797 }
giavottop 0:22e251b14893 798 if(truck3.getX() < 3 && open[truck3.getY()][truck3.getX() + 3] == 0){
giavottop 0:22e251b14893 799 int p = spots[truck3.getY()][truck3.getX() + 3];
giavottop 0:22e251b14893 800 uLCD.filled_rectangle(rv[p][0],rv[p][1],rv[p][2],rv[p][3],BLUE);
giavottop 0:22e251b14893 801 }
giavottop 0:22e251b14893 802
giavottop 0:22e251b14893 803
giavottop 0:22e251b14893 804
giavottop 0:22e251b14893 805 if((selectedX == truck3.getX() || selectedX == truck3.getX() + 1 || selectedX == truck3.getX() + 2) && selectedY == truck3.getY()){
giavottop 0:22e251b14893 806 if(direction == 2 && open[truck3.getY()][truck3.getX() - 1] == 0){
giavottop 0:22e251b14893 807 if(truck3.getX() != 0){
giavottop 0:22e251b14893 808 truck3.dimX();
giavottop 0:22e251b14893 809 selectedX--;
giavottop 0:22e251b14893 810 stickXloc--;
giavottop 0:22e251b14893 811 open[truck3.getY()][truck3.getX() + 3] = 0;
giavottop 0:22e251b14893 812 }
giavottop 0:22e251b14893 813
giavottop 0:22e251b14893 814 }
giavottop 0:22e251b14893 815 if(direction == 0 && open[truck3.getY()][truck3.getX() + 3] == 0){
giavottop 0:22e251b14893 816 if(truck3.getX() != 3){
giavottop 0:22e251b14893 817 truck3.incX();
giavottop 0:22e251b14893 818 selectedX++;
giavottop 0:22e251b14893 819 stickXloc++;
giavottop 0:22e251b14893 820 open[truck3.getY()][truck3.getX() - 1] = 0;
giavottop 0:22e251b14893 821 }
giavottop 0:22e251b14893 822 }
giavottop 0:22e251b14893 823
giavottop 0:22e251b14893 824 }
giavottop 0:22e251b14893 825
giavottop 0:22e251b14893 826
giavottop 0:22e251b14893 827 i = spots[truck4.getY()][truck4.getX()];
giavottop 0:22e251b14893 828 uLCD.filled_rectangle(rv[i][0],rv[i][1],rv[i][2],rv[i][3], 0xFFFF00);
giavottop 0:22e251b14893 829 open[truck4.getY()][truck4.getX()] = 1;
giavottop 0:22e251b14893 830 j = spots[truck4.getY()][truck4.getX() + 1];
giavottop 0:22e251b14893 831 uLCD.filled_rectangle(rv[j][0],rv[j][1],rv[j][2],rv[j][3], 0xFFFF00);
giavottop 0:22e251b14893 832 open[truck4.getY()][truck4.getX() + 1] = 1;
giavottop 0:22e251b14893 833 j = spots[truck4.getY()][truck4.getX() + 2];
giavottop 0:22e251b14893 834 uLCD.filled_rectangle(rv[j][0],rv[j][1],rv[j][2],rv[j][3], 0xFFFF00);
giavottop 0:22e251b14893 835 open[truck4.getY()][truck4.getX() + 2] = 1;
giavottop 0:22e251b14893 836 if(truck4.getX() > 0 && open[truck4.getY()][truck4.getX() - 1] == 0){
giavottop 0:22e251b14893 837 int p = spots[truck4.getY()][truck4.getX() - 1];
giavottop 0:22e251b14893 838 uLCD.filled_rectangle(rv[p][0],rv[p][1],rv[p][2],rv[p][3],BLUE);
giavottop 0:22e251b14893 839 }
giavottop 0:22e251b14893 840 if(truck4.getX() < 3 && open[truck4.getY()][truck4.getX() + 3] == 0){
giavottop 0:22e251b14893 841 int p = spots[truck4.getY()][truck4.getX() + 3];
giavottop 0:22e251b14893 842 uLCD.filled_rectangle(rv[p][0],rv[p][1],rv[p][2],rv[p][3],BLUE);
giavottop 0:22e251b14893 843 }
giavottop 0:22e251b14893 844
giavottop 0:22e251b14893 845
giavottop 0:22e251b14893 846
giavottop 0:22e251b14893 847 if((selectedX == truck4.getX() || selectedX == truck4.getX() + 1 || selectedX == truck4.getX() + 2) && selectedY == truck4.getY()){
giavottop 0:22e251b14893 848 if(direction == 2 && open[truck4.getY()][truck4.getX() - 1] == 0){
giavottop 0:22e251b14893 849 if(truck4.getX() != 0){
giavottop 0:22e251b14893 850 truck4.dimX();
giavottop 0:22e251b14893 851 selectedX--;
giavottop 0:22e251b14893 852 stickXloc--;
giavottop 0:22e251b14893 853 open[truck4.getY()][truck4.getX() + 3] = 0;
giavottop 0:22e251b14893 854 }
giavottop 0:22e251b14893 855
giavottop 0:22e251b14893 856 }
giavottop 0:22e251b14893 857 if(direction == 0 && open[truck4.getY()][truck4.getX() + 3] == 0){
giavottop 0:22e251b14893 858 if(truck4.getX() != 3){
giavottop 0:22e251b14893 859 truck4.incX();
giavottop 0:22e251b14893 860 selectedX++;
giavottop 0:22e251b14893 861 stickXloc++;
giavottop 0:22e251b14893 862 open[truck4.getY()][truck4.getX() - 1] = 0;
giavottop 0:22e251b14893 863 }
giavottop 0:22e251b14893 864 }
giavottop 0:22e251b14893 865
giavottop 0:22e251b14893 866 }
giavottop 0:22e251b14893 867
giavottop 0:22e251b14893 868 if(mainCarX == 4){
giavottop 0:22e251b14893 869 uLCD.text_width(2); //4X size text
giavottop 0:22e251b14893 870 uLCD.text_height(2);
giavottop 0:22e251b14893 871 uLCD.printf("\nYOU WIN\n");
giavottop 0:22e251b14893 872
giavottop 0:22e251b14893 873 FILE *wave_file;
giavottop 0:22e251b14893 874
giavottop 0:22e251b14893 875 for(int i=0; i<4; ++i) {
giavottop 0:22e251b14893 876 wave_file=fopen("/sd/wavfiles/boo_yah.wav","r");
giavottop 0:22e251b14893 877 waver.play(wave_file);
giavottop 0:22e251b14893 878 fclose(wave_file);
giavottop 0:22e251b14893 879 }
giavottop 0:22e251b14893 880
giavottop 0:22e251b14893 881
giavottop 0:22e251b14893 882 wait(2.0);
giavottop 0:22e251b14893 883 return;
giavottop 0:22e251b14893 884 }
giavottop 0:22e251b14893 885
giavottop 0:22e251b14893 886
giavottop 0:22e251b14893 887 }
giavottop 0:22e251b14893 888
giavottop 0:22e251b14893 889 }
giavottop 0:22e251b14893 890
giavottop 0:22e251b14893 891
giavottop 0:22e251b14893 892 void hardLevel(){
giavottop 0:22e251b14893 893 FILE *wave_file1;
giavottop 0:22e251b14893 894
giavottop 0:22e251b14893 895 wave_file1=fopen("/sd/wavfiles/horn.wav","r");
giavottop 0:22e251b14893 896 waver.play(wave_file1);
giavottop 0:22e251b14893 897 fclose(wave_file1);
giavottop 0:22e251b14893 898
giavottop 0:22e251b14893 899
giavottop 0:22e251b14893 900 mainCarX = 1;
giavottop 0:22e251b14893 901 mainCarY = 2;
giavottop 0:22e251b14893 902
giavottop 0:22e251b14893 903 Vehicle car1(0,0);
giavottop 0:22e251b14893 904 Vehicle car2(0,2);
giavottop 0:22e251b14893 905 // Vehicle car3(4,4);
giavottop 0:22e251b14893 906 Vehicle truck1(1,0);
giavottop 0:22e251b14893 907 Vehicle truck2(0,3);
giavottop 0:22e251b14893 908 Vehicle truck3(3,1);
giavottop 0:22e251b14893 909 Vehicle truck4(5,3);
giavottop 0:22e251b14893 910
giavottop 0:22e251b14893 911 uLCD.filled_rectangle(121,39,128,56,RED);
giavottop 0:22e251b14893 912
giavottop 0:22e251b14893 913 while(1){
giavottop 0:22e251b14893 914 int direction = getInput();
giavottop 0:22e251b14893 915 updateStickLocation(direction);
giavottop 0:22e251b14893 916 updateMainCar(direction);
giavottop 0:22e251b14893 917 //updateHorCar(direction, car1);
giavottop 0:22e251b14893 918
giavottop 0:22e251b14893 919
giavottop 0:22e251b14893 920 int i = spots[car1.getY()][car1.getX()];
giavottop 0:22e251b14893 921 uLCD.filled_rectangle(rv[i][0],rv[i][1],rv[i][2],rv[i][3],GREEN);
giavottop 0:22e251b14893 922 open[car1.getY()][car1.getX()] = 1;
giavottop 0:22e251b14893 923 int j = spots[car1.getY()][car1.getX() + 1];
giavottop 0:22e251b14893 924 uLCD.filled_rectangle(rv[j][0],rv[j][1],rv[j][2],rv[j][3],GREEN);
giavottop 0:22e251b14893 925 open[car1.getY()][car1.getX() + 1] = 1;
giavottop 0:22e251b14893 926 if(car1.getX() > 0 && open[car1.getY()][car1.getX() - 1] == 0){
giavottop 0:22e251b14893 927 int p = spots[car1.getY()][car1.getX() - 1];
giavottop 0:22e251b14893 928 uLCD.filled_rectangle(rv[p][0],rv[p][1],rv[p][2],rv[p][3],BLUE);
giavottop 0:22e251b14893 929 }
giavottop 0:22e251b14893 930 if(car1.getX() < 4 && open[car1.getY()][car1.getX() + 2] == 0){
giavottop 0:22e251b14893 931 int p = spots[car1.getY()][car1.getX() + 2];
giavottop 0:22e251b14893 932 uLCD.filled_rectangle(rv[p][0],rv[p][1],rv[p][2],rv[p][3],BLUE);
giavottop 0:22e251b14893 933 }
giavottop 0:22e251b14893 934
giavottop 0:22e251b14893 935
giavottop 0:22e251b14893 936
giavottop 0:22e251b14893 937 if((selectedX == car1.getX() || selectedX == car1.getX() + 1) && selectedY == car1.getY()){
giavottop 0:22e251b14893 938 if(direction == 2 && open[car1.getY()][car1.getX() - 1] == 0){
giavottop 0:22e251b14893 939 if(car1.getX() != 0){
giavottop 0:22e251b14893 940 car1.dimX();
giavottop 0:22e251b14893 941 selectedX--;
giavottop 0:22e251b14893 942 stickXloc--;
giavottop 0:22e251b14893 943 open[car1.getY()][car1.getX() + 2] = 0;
giavottop 0:22e251b14893 944 }
giavottop 0:22e251b14893 945
giavottop 0:22e251b14893 946 }
giavottop 0:22e251b14893 947 if(direction == 0 && open[car1.getY()][car1.getX() + 2] == 0){
giavottop 0:22e251b14893 948 if(car1.getX() != 4){
giavottop 0:22e251b14893 949 car1.incX();
giavottop 0:22e251b14893 950 selectedX++;
giavottop 0:22e251b14893 951 stickXloc++;
giavottop 0:22e251b14893 952 open[car1.getY()][car1.getX() - 1] = 0;
giavottop 0:22e251b14893 953 }
giavottop 0:22e251b14893 954 }
giavottop 0:22e251b14893 955
giavottop 0:22e251b14893 956 }
giavottop 0:22e251b14893 957
giavottop 0:22e251b14893 958 i = spots[car2.getY()][car2.getX()];
giavottop 0:22e251b14893 959 uLCD.filled_rectangle(rv[i][0],rv[i][1],rv[i][2],rv[i][3],DGREY);
giavottop 0:22e251b14893 960 open[car2.getY()][car2.getX()] = 1;
giavottop 0:22e251b14893 961 j = spots[car2.getY() + 1][car2.getX()];
giavottop 0:22e251b14893 962 uLCD.filled_rectangle(rv[j][0],rv[j][1],rv[j][2],rv[j][3],DGREY);
giavottop 0:22e251b14893 963 open[car2.getY() + 1][car2.getX()] = 1;
giavottop 0:22e251b14893 964 if(car2.getY() > 0 && open[car2.getY() - 1][car2.getX()] == 0){
giavottop 0:22e251b14893 965 int p = spots[car2.getY() - 1][car2.getX()];
giavottop 0:22e251b14893 966 uLCD.filled_rectangle(rv[p][0],rv[p][1],rv[p][2],rv[p][3],BLUE);
giavottop 0:22e251b14893 967 }
giavottop 0:22e251b14893 968 if(car2.getY() < 4 && open[car2.getY() + 2][car2.getX()] == 0){
giavottop 0:22e251b14893 969 int p = spots[car2.getY() + 2][car2.getX()];
giavottop 0:22e251b14893 970 uLCD.filled_rectangle(rv[p][0],rv[p][1],rv[p][2],rv[p][3],BLUE);
giavottop 0:22e251b14893 971 }
giavottop 0:22e251b14893 972
giavottop 0:22e251b14893 973
giavottop 0:22e251b14893 974
giavottop 0:22e251b14893 975 if((selectedY == car2.getY() || selectedY == car2.getY() + 1) && selectedX == car2.getX()){
giavottop 0:22e251b14893 976 if(direction == 1 && open[car2.getY() - 1][car2.getX()] == 0){
giavottop 0:22e251b14893 977 if(car2.getY() != 0){
giavottop 0:22e251b14893 978 car2.dimY();
giavottop 0:22e251b14893 979 selectedY--;
giavottop 0:22e251b14893 980 stickYloc--;
giavottop 0:22e251b14893 981 open[car2.getY() + 2][car2.getX()] = 0;
giavottop 0:22e251b14893 982 }
giavottop 0:22e251b14893 983
giavottop 0:22e251b14893 984 }
giavottop 0:22e251b14893 985 if(direction == 3 && open[car2.getY() + 2][car2.getX()] == 0){
giavottop 0:22e251b14893 986 if(car2.getY() != 4){
giavottop 0:22e251b14893 987 car2.incY();
giavottop 0:22e251b14893 988 selectedY++;
giavottop 0:22e251b14893 989 stickYloc++;
giavottop 0:22e251b14893 990 open[car2.getY() - 1][car2.getX()] = 0;
giavottop 0:22e251b14893 991 }
giavottop 0:22e251b14893 992 }
giavottop 0:22e251b14893 993
giavottop 0:22e251b14893 994 }
giavottop 0:22e251b14893 995
giavottop 0:22e251b14893 996 // i = spots[car3.getY()][car3.getX()];
giavottop 0:22e251b14893 997 // uLCD.filled_rectangle(rv[i][0],rv[i][1],rv[i][2],rv[i][3],DGREY);
giavottop 0:22e251b14893 998 // open[car3.getY()][car3.getX()] = 1;
giavottop 0:22e251b14893 999 // j = spots[car3.getY() + 1][car3.getX()];
giavottop 0:22e251b14893 1000 // uLCD.filled_rectangle(rv[j][0],rv[j][1],rv[j][2],rv[j][3],DGREY);
giavottop 0:22e251b14893 1001 // open[car3.getY() + 1][car3.getX()] = 1;
giavottop 0:22e251b14893 1002 // if(car3.getY() > 0 && open[car3.getY() - 1][car3.getX()] == 0){
giavottop 0:22e251b14893 1003 // int p = spots[car3.getY() - 1][car3.getX()];
giavottop 0:22e251b14893 1004 // uLCD.filled_rectangle(rv[p][0],rv[p][1],rv[p][2],rv[p][3],BLUE);
giavottop 0:22e251b14893 1005 // }
giavottop 0:22e251b14893 1006 // if(car3.getY() < 4 && open[car3.getY() + 2][car3.getX()] == 0){
giavottop 0:22e251b14893 1007 // int p = spots[car3.getY() + 2][car3.getX()];
giavottop 0:22e251b14893 1008 // uLCD.filled_rectangle(rv[p][0],rv[p][1],rv[p][2],rv[p][3],BLUE);
giavottop 0:22e251b14893 1009 // }
giavottop 0:22e251b14893 1010 //
giavottop 0:22e251b14893 1011 //
giavottop 0:22e251b14893 1012 //
giavottop 0:22e251b14893 1013 // if((selectedY == car3.getY() || selectedY == car3.getY() + 1) && selectedX == car3.getX()){
giavottop 0:22e251b14893 1014 // if(direction == 1 && open[car3.getY() - 1][car3.getX()] == 0){
giavottop 0:22e251b14893 1015 // if(car3.getY() != 0){
giavottop 0:22e251b14893 1016 // car3.dimY();
giavottop 0:22e251b14893 1017 // selectedY--;
giavottop 0:22e251b14893 1018 // stickYloc--;
giavottop 0:22e251b14893 1019 // open[car3.getY() + 2][car3.getX()] = 0;
giavottop 0:22e251b14893 1020 // }
giavottop 0:22e251b14893 1021 //
giavottop 0:22e251b14893 1022 // }
giavottop 0:22e251b14893 1023 // if(direction == 3 && open[car3.getY() + 2][car3.getX()] == 0){
giavottop 0:22e251b14893 1024 // if(car3.getY() != 4){
giavottop 0:22e251b14893 1025 // car3.incY();
giavottop 0:22e251b14893 1026 // selectedY++;
giavottop 0:22e251b14893 1027 // stickYloc++;
giavottop 0:22e251b14893 1028 // open[car3.getY() - 1][car3.getX()] = 0;
giavottop 0:22e251b14893 1029 // }
giavottop 0:22e251b14893 1030 // }
giavottop 0:22e251b14893 1031 //
giavottop 0:22e251b14893 1032 // }
giavottop 0:22e251b14893 1033
giavottop 0:22e251b14893 1034 i = spots[truck1.getY()][truck1.getX()];
giavottop 0:22e251b14893 1035 uLCD.filled_rectangle(rv[i][0],rv[i][1],rv[i][2],rv[i][3], 0xFFFF00);
giavottop 0:22e251b14893 1036 open[truck1.getY()][truck1.getX()] = 1;
giavottop 0:22e251b14893 1037 j = spots[truck1.getY() + 1][truck1.getX()];
giavottop 0:22e251b14893 1038 uLCD.filled_rectangle(rv[j][0],rv[j][1],rv[j][2],rv[j][3], 0xFFFF00);
giavottop 0:22e251b14893 1039 open[truck1.getY() + 1][truck1.getX()] = 1;
giavottop 0:22e251b14893 1040 j = spots[truck1.getY() + 2][truck1.getX()];
giavottop 0:22e251b14893 1041 uLCD.filled_rectangle(rv[j][0],rv[j][1],rv[j][2],rv[j][3], 0xFFFF00);
giavottop 0:22e251b14893 1042 open[truck1.getY() + 2][truck1.getX()] = 1;
giavottop 0:22e251b14893 1043 if(truck1.getY() > 0 && open[truck1.getY() - 1][truck1.getX()] == 0){
giavottop 0:22e251b14893 1044 int p = spots[truck1.getY() - 1][truck1.getX()];
giavottop 0:22e251b14893 1045 uLCD.filled_rectangle(rv[p][0],rv[p][1],rv[p][2],rv[p][3],BLUE);
giavottop 0:22e251b14893 1046 }
giavottop 0:22e251b14893 1047 if(truck1.getY() < 3 && open[truck1.getY() + 3][truck1.getX()] == 0){
giavottop 0:22e251b14893 1048 int p = spots[truck1.getY() + 3][truck1.getX()];
giavottop 0:22e251b14893 1049 uLCD.filled_rectangle(rv[p][0],rv[p][1],rv[p][2],rv[p][3],BLUE);
giavottop 0:22e251b14893 1050 }
giavottop 0:22e251b14893 1051
giavottop 0:22e251b14893 1052
giavottop 0:22e251b14893 1053
giavottop 0:22e251b14893 1054 if((selectedY == truck1.getY() || selectedY == truck1.getY() + 1 || selectedY == truck1.getY() + 2) && selectedX == truck1.getX()){
giavottop 0:22e251b14893 1055 if(direction == 1 && open[truck1.getY() - 1][truck1.getX()] == 0){
giavottop 0:22e251b14893 1056 if(truck1.getY() != 0){
giavottop 0:22e251b14893 1057 truck1.dimY();
giavottop 0:22e251b14893 1058 selectedY--;
giavottop 0:22e251b14893 1059 stickYloc--;
giavottop 0:22e251b14893 1060 open[truck1.getY() + 3][truck1.getX()] = 0;
giavottop 0:22e251b14893 1061 }
giavottop 0:22e251b14893 1062
giavottop 0:22e251b14893 1063 }
giavottop 0:22e251b14893 1064 if(direction == 3 && open[truck1.getY() + 3][truck1.getX()] == 0){
giavottop 0:22e251b14893 1065 if(truck1.getY() != 3){
giavottop 0:22e251b14893 1066 truck1.incY();
giavottop 0:22e251b14893 1067 selectedY++;
giavottop 0:22e251b14893 1068 stickYloc++;
giavottop 0:22e251b14893 1069 open[truck1.getY() - 1][truck1.getX()] = 0;
giavottop 0:22e251b14893 1070 }
giavottop 0:22e251b14893 1071 }
giavottop 0:22e251b14893 1072
giavottop 0:22e251b14893 1073 }
giavottop 0:22e251b14893 1074
giavottop 0:22e251b14893 1075
giavottop 0:22e251b14893 1076
giavottop 0:22e251b14893 1077 i = spots[truck2.getY()][truck2.getX()];
giavottop 0:22e251b14893 1078 uLCD.filled_rectangle(rv[i][0],rv[i][1],rv[i][2],rv[i][3], 0xFFFF00);
giavottop 0:22e251b14893 1079 open[truck2.getY()][truck2.getX()] = 1;
giavottop 0:22e251b14893 1080 j = spots[truck2.getY() + 1][truck2.getX()];
giavottop 0:22e251b14893 1081 uLCD.filled_rectangle(rv[j][0],rv[j][1],rv[j][2],rv[j][3], 0xFFFF00);
giavottop 0:22e251b14893 1082 open[truck2.getY() + 1][truck2.getX()] = 1;
giavottop 0:22e251b14893 1083 j = spots[truck2.getY() + 2][truck2.getX()];
giavottop 0:22e251b14893 1084 uLCD.filled_rectangle(rv[j][0],rv[j][1],rv[j][2],rv[j][3], 0xFFFF00);
giavottop 0:22e251b14893 1085 open[truck2.getY() + 2][truck2.getX()] = 1;
giavottop 0:22e251b14893 1086 if(truck2.getY() > 0 && open[truck2.getY() - 1][truck2.getX()] == 0){
giavottop 0:22e251b14893 1087 int p = spots[truck2.getY() - 1][truck2.getX()];
giavottop 0:22e251b14893 1088 uLCD.filled_rectangle(rv[p][0],rv[p][1],rv[p][2],rv[p][3],BLUE);
giavottop 0:22e251b14893 1089 }
giavottop 0:22e251b14893 1090 if(truck2.getY() < 3 && open[truck2.getY() + 3][truck2.getX()] == 0){
giavottop 0:22e251b14893 1091 int p = spots[truck2.getY() + 3][truck2.getX()];
giavottop 0:22e251b14893 1092 uLCD.filled_rectangle(rv[p][0],rv[p][1],rv[p][2],rv[p][3],BLUE);
giavottop 0:22e251b14893 1093 }
giavottop 0:22e251b14893 1094
giavottop 0:22e251b14893 1095
giavottop 0:22e251b14893 1096
giavottop 0:22e251b14893 1097 if((selectedY == truck2.getY() || selectedY == truck2.getY() + 1 || selectedY == truck2.getY() + 2) && selectedX == truck2.getX()){
giavottop 0:22e251b14893 1098 if(direction == 1 && open[truck2.getY() - 1][truck2.getX()] == 0){
giavottop 0:22e251b14893 1099 if(truck2.getY() != 0){
giavottop 0:22e251b14893 1100 truck2.dimY();
giavottop 0:22e251b14893 1101 selectedY--;
giavottop 0:22e251b14893 1102 stickYloc--;
giavottop 0:22e251b14893 1103 open[truck2.getY() + 3][truck2.getX()] = 0;
giavottop 0:22e251b14893 1104 }
giavottop 0:22e251b14893 1105
giavottop 0:22e251b14893 1106 }
giavottop 0:22e251b14893 1107 if(direction == 3 && open[truck2.getY() + 3][truck2.getX()] == 0){
giavottop 0:22e251b14893 1108 if(truck2.getY() != 3){
giavottop 0:22e251b14893 1109 truck2.incY();
giavottop 0:22e251b14893 1110 selectedY++;
giavottop 0:22e251b14893 1111 stickYloc++;
giavottop 0:22e251b14893 1112 open[truck2.getY() - 1][truck2.getX()] = 0;
giavottop 0:22e251b14893 1113 }
giavottop 0:22e251b14893 1114 }
giavottop 0:22e251b14893 1115
giavottop 0:22e251b14893 1116 }
giavottop 0:22e251b14893 1117
giavottop 0:22e251b14893 1118 i = spots[truck3.getY()][truck3.getX()];
giavottop 0:22e251b14893 1119 uLCD.filled_rectangle(rv[i][0],rv[i][1],rv[i][2],rv[i][3], GREEN);
giavottop 0:22e251b14893 1120 open[truck3.getY()][truck3.getX()] = 1;
giavottop 0:22e251b14893 1121 j = spots[truck3.getY()][truck3.getX() + 1];
giavottop 0:22e251b14893 1122 uLCD.filled_rectangle(rv[j][0],rv[j][1],rv[j][2],rv[j][3], GREEN);
giavottop 0:22e251b14893 1123 open[truck3.getY()][truck3.getX() + 1] = 1;
giavottop 0:22e251b14893 1124 j = spots[truck3.getY()][truck3.getX() + 2];
giavottop 0:22e251b14893 1125 uLCD.filled_rectangle(rv[j][0],rv[j][1],rv[j][2],rv[j][3], GREEN);
giavottop 0:22e251b14893 1126 open[truck3.getY()][truck3.getX() + 2] = 1;
giavottop 0:22e251b14893 1127 if(truck3.getX() > 0 && open[truck3.getY()][truck3.getX() - 1] == 0){
giavottop 0:22e251b14893 1128 int p = spots[truck3.getY()][truck3.getX() - 1];
giavottop 0:22e251b14893 1129 uLCD.filled_rectangle(rv[p][0],rv[p][1],rv[p][2],rv[p][3],BLUE);
giavottop 0:22e251b14893 1130 }
giavottop 0:22e251b14893 1131 if(truck3.getX() < 3 && open[truck3.getY()][truck3.getX() + 3] == 0){
giavottop 0:22e251b14893 1132 int p = spots[truck3.getY()][truck3.getX() + 3];
giavottop 0:22e251b14893 1133 uLCD.filled_rectangle(rv[p][0],rv[p][1],rv[p][2],rv[p][3],BLUE);
giavottop 0:22e251b14893 1134 }
giavottop 0:22e251b14893 1135
giavottop 0:22e251b14893 1136
giavottop 0:22e251b14893 1137
giavottop 0:22e251b14893 1138 if((selectedX == truck3.getX() || selectedX == truck3.getX() + 1 || selectedX == truck3.getX() + 2) && selectedY == truck3.getY()){
giavottop 0:22e251b14893 1139 if(direction == 2 && open[truck3.getY()][truck3.getX() - 1] == 0){
giavottop 0:22e251b14893 1140 if(truck3.getX() != 0){
giavottop 0:22e251b14893 1141 truck3.dimX();
giavottop 0:22e251b14893 1142 selectedX--;
giavottop 0:22e251b14893 1143 stickXloc--;
giavottop 0:22e251b14893 1144 open[truck3.getY()][truck3.getX() + 3] = 0;
giavottop 0:22e251b14893 1145 }
giavottop 0:22e251b14893 1146
giavottop 0:22e251b14893 1147 }
giavottop 0:22e251b14893 1148 if(direction == 0 && open[truck3.getY()][truck3.getX() + 3] == 0){
giavottop 0:22e251b14893 1149 if(truck3.getX() != 3){
giavottop 0:22e251b14893 1150 truck3.incX();
giavottop 0:22e251b14893 1151 selectedX++;
giavottop 0:22e251b14893 1152 stickXloc++;
giavottop 0:22e251b14893 1153 open[truck3.getY()][truck3.getX() - 1] = 0;
giavottop 0:22e251b14893 1154 }
giavottop 0:22e251b14893 1155 }
giavottop 0:22e251b14893 1156
giavottop 0:22e251b14893 1157 }
giavottop 0:22e251b14893 1158
giavottop 0:22e251b14893 1159
giavottop 0:22e251b14893 1160 i = spots[truck4.getY()][truck4.getX()];
giavottop 0:22e251b14893 1161 uLCD.filled_rectangle(rv[i][0],rv[i][1],rv[i][2],rv[i][3], GREEN);
giavottop 0:22e251b14893 1162 open[truck4.getY()][truck4.getX()] = 1;
giavottop 0:22e251b14893 1163 j = spots[truck4.getY()][truck4.getX() + 1];
giavottop 0:22e251b14893 1164 uLCD.filled_rectangle(rv[j][0],rv[j][1],rv[j][2],rv[j][3], GREEN);
giavottop 0:22e251b14893 1165 open[truck4.getY()][truck4.getX() + 1] = 1;
giavottop 0:22e251b14893 1166 j = spots[truck4.getY()][truck4.getX() + 2];
giavottop 0:22e251b14893 1167 uLCD.filled_rectangle(rv[j][0],rv[j][1],rv[j][2],rv[j][3], GREEN);
giavottop 0:22e251b14893 1168 open[truck4.getY()][truck4.getX() + 2] = 1;
giavottop 0:22e251b14893 1169 if(truck4.getX() > 0 && open[truck4.getY()][truck4.getX() - 1] == 0){
giavottop 0:22e251b14893 1170 int p = spots[truck4.getY()][truck4.getX() - 1];
giavottop 0:22e251b14893 1171 uLCD.filled_rectangle(rv[p][0],rv[p][1],rv[p][2],rv[p][3],BLUE);
giavottop 0:22e251b14893 1172 }
giavottop 0:22e251b14893 1173 if(truck4.getX() < 3 && open[truck4.getY()][truck4.getX() + 3] == 0){
giavottop 0:22e251b14893 1174 int p = spots[truck4.getY()][truck4.getX() + 3];
giavottop 0:22e251b14893 1175 uLCD.filled_rectangle(rv[p][0],rv[p][1],rv[p][2],rv[p][3],BLUE);
giavottop 0:22e251b14893 1176 }
giavottop 0:22e251b14893 1177
giavottop 0:22e251b14893 1178
giavottop 0:22e251b14893 1179
giavottop 0:22e251b14893 1180 if((selectedX == truck4.getX() || selectedX == truck4.getX() + 1 || selectedX == truck4.getX() + 2) && selectedY == truck4.getY()){
giavottop 0:22e251b14893 1181 if(direction == 2 && open[truck4.getY()][truck4.getX() - 1] == 0){
giavottop 0:22e251b14893 1182 if(truck4.getX() != 0){
giavottop 0:22e251b14893 1183 truck4.dimX();
giavottop 0:22e251b14893 1184 selectedX--;
giavottop 0:22e251b14893 1185 stickXloc--;
giavottop 0:22e251b14893 1186 open[truck4.getY()][truck4.getX() + 3] = 0;
giavottop 0:22e251b14893 1187 }
giavottop 0:22e251b14893 1188
giavottop 0:22e251b14893 1189 }
giavottop 0:22e251b14893 1190 if(direction == 0 && open[truck4.getY()][truck4.getX() + 3] == 0){
giavottop 0:22e251b14893 1191 if(truck4.getX() != 3){
giavottop 0:22e251b14893 1192 truck4.incX();
giavottop 0:22e251b14893 1193 selectedX++;
giavottop 0:22e251b14893 1194 stickXloc++;
giavottop 0:22e251b14893 1195 open[truck4.getY()][truck4.getX() - 1] = 0;
giavottop 0:22e251b14893 1196 }
giavottop 0:22e251b14893 1197 }
giavottop 0:22e251b14893 1198
giavottop 0:22e251b14893 1199 }
giavottop 0:22e251b14893 1200
giavottop 0:22e251b14893 1201 if(mainCarX == 4){
giavottop 0:22e251b14893 1202 uLCD.text_width(2); //4X size text
giavottop 0:22e251b14893 1203 uLCD.text_height(2);
giavottop 0:22e251b14893 1204 uLCD.printf("\nYOU WIN\n");
giavottop 0:22e251b14893 1205
giavottop 0:22e251b14893 1206 FILE *wave_file;
giavottop 0:22e251b14893 1207
giavottop 0:22e251b14893 1208 for(int i=0; i<4; ++i) {
giavottop 0:22e251b14893 1209 wave_file=fopen("/sd/wavfiles/boo_yah.wav","r");
giavottop 0:22e251b14893 1210 waver.play(wave_file);
giavottop 0:22e251b14893 1211 fclose(wave_file);
giavottop 0:22e251b14893 1212 }
giavottop 0:22e251b14893 1213
giavottop 0:22e251b14893 1214
giavottop 0:22e251b14893 1215 wait(2.0);
giavottop 0:22e251b14893 1216 return;
giavottop 0:22e251b14893 1217 }
giavottop 0:22e251b14893 1218
giavottop 0:22e251b14893 1219
giavottop 0:22e251b14893 1220 }
giavottop 0:22e251b14893 1221
giavottop 0:22e251b14893 1222 }
giavottop 0:22e251b14893 1223
giavottop 0:22e251b14893 1224
giavottop 0:22e251b14893 1225
giavottop 0:22e251b14893 1226
giavottop 0:22e251b14893 1227 int main() {
giavottop 0:22e251b14893 1228
giavottop 0:22e251b14893 1229 // uLCD.baudrate(3000000);
giavottop 0:22e251b14893 1230
giavottop 0:22e251b14893 1231 uLCD.textbackground_color(BLACK);
giavottop 0:22e251b14893 1232 uLCD.color(RED);
giavottop 0:22e251b14893 1233
giavottop 0:22e251b14893 1234 uLCD.locate(7,4);
giavottop 0:22e251b14893 1235 uLCD.printf("Easy");
giavottop 0:22e251b14893 1236 uLCD.locate(6,7);
giavottop 0:22e251b14893 1237 uLCD.printf("Medium");
giavottop 0:22e251b14893 1238 uLCD.locate(7,11);
giavottop 0:22e251b14893 1239 uLCD.printf("Hard");
giavottop 0:22e251b14893 1240
giavottop 0:22e251b14893 1241 uLCD.line(22, 42, 106, 42, WHITE);
giavottop 0:22e251b14893 1242
giavottop 0:22e251b14893 1243 while(1) {
giavottop 0:22e251b14893 1244
giavottop 0:22e251b14893 1245 int direction = getInput();
giavottop 0:22e251b14893 1246
giavottop 0:22e251b14893 1247 while(direction == 0 || direction == 2)
giavottop 0:22e251b14893 1248 direction = getInput();
giavottop 0:22e251b14893 1249
giavottop 0:22e251b14893 1250 // If clicked in
giavottop 0:22e251b14893 1251 if(direction == 5) {
giavottop 0:22e251b14893 1252 if(selection == 0) {
giavottop 0:22e251b14893 1253 uLCD.cls();
giavottop 0:22e251b14893 1254 wait(0.2);
giavottop 0:22e251b14893 1255 setUpGrid();
giavottop 0:22e251b14893 1256 int i = spots[stickYloc][stickXloc];
giavottop 0:22e251b14893 1257 uLCD.filled_rectangle(rv[i][0],rv[i][1],rv[i][2],rv[i][3],WHITE);
giavottop 0:22e251b14893 1258 easyLevel();
giavottop 0:22e251b14893 1259 }
giavottop 0:22e251b14893 1260 else if(selection == 1) {
giavottop 0:22e251b14893 1261 uLCD.cls();
giavottop 0:22e251b14893 1262 wait(0.2);
giavottop 0:22e251b14893 1263 setUpGrid();
giavottop 0:22e251b14893 1264 int i = spots[stickYloc][stickXloc];
giavottop 0:22e251b14893 1265 uLCD.filled_rectangle(rv[i][0],rv[i][1],rv[i][2],rv[i][3],WHITE);
giavottop 0:22e251b14893 1266 mediumLevel();
giavottop 0:22e251b14893 1267 }
giavottop 0:22e251b14893 1268 else if(selection == 2) {
giavottop 0:22e251b14893 1269 uLCD.cls();
giavottop 0:22e251b14893 1270 wait(0.2);
giavottop 0:22e251b14893 1271 setUpGrid();
giavottop 0:22e251b14893 1272 int i = spots[stickYloc][stickXloc];
giavottop 0:22e251b14893 1273 uLCD.filled_rectangle(rv[i][0],rv[i][1],rv[i][2],rv[i][3],WHITE);
giavottop 0:22e251b14893 1274 hardLevel();
giavottop 0:22e251b14893 1275 }
giavottop 0:22e251b14893 1276
giavottop 0:22e251b14893 1277 uLCD.cls();
giavottop 0:22e251b14893 1278 wait(0.2);
giavottop 0:22e251b14893 1279 uLCD.locate(7,4);
giavottop 0:22e251b14893 1280 uLCD.printf("Easy ");
giavottop 0:22e251b14893 1281 uLCD.locate(6,7);
giavottop 0:22e251b14893 1282 uLCD.printf("Medium");
giavottop 0:22e251b14893 1283 uLCD.locate(7,11);
giavottop 0:22e251b14893 1284 uLCD.printf("Hard");
giavottop 0:22e251b14893 1285
giavottop 0:22e251b14893 1286 uLCD.line(22, 42, 106, 42, WHITE);
giavottop 0:22e251b14893 1287 }
giavottop 0:22e251b14893 1288 else if(direction == 1 && (selection == 1 || selection == 2)) {
giavottop 0:22e251b14893 1289 selection = selection-1;
giavottop 0:22e251b14893 1290 if(selection == 0) {
giavottop 0:22e251b14893 1291 uLCD.line(22, 42, 106, 42, WHITE);
giavottop 0:22e251b14893 1292 uLCD.line(22, 68, 106, 68, BLACK);
giavottop 0:22e251b14893 1293 uLCD.line(22, 98, 106, 98, BLACK);
giavottop 0:22e251b14893 1294 }
giavottop 0:22e251b14893 1295 else {
giavottop 0:22e251b14893 1296 uLCD.line(22, 42, 106, 42, BLACK);
giavottop 0:22e251b14893 1297 uLCD.line(22, 68, 106, 68, WHITE);
giavottop 0:22e251b14893 1298 uLCD.line(22, 98, 106, 98, BLACK);
giavottop 0:22e251b14893 1299 }
giavottop 0:22e251b14893 1300 }
giavottop 0:22e251b14893 1301 else if(direction == 3 && (selection == 0 || selection == 1)) {
giavottop 0:22e251b14893 1302 selection = selection+1;
giavottop 0:22e251b14893 1303 if(selection == 1) {
giavottop 0:22e251b14893 1304 uLCD.line(22, 42, 106, 42, BLACK);
giavottop 0:22e251b14893 1305 uLCD.line(22, 68, 106, 68, WHITE);
giavottop 0:22e251b14893 1306 uLCD.line(22, 98, 106, 98, BLACK);
giavottop 0:22e251b14893 1307 }
giavottop 0:22e251b14893 1308 else {
giavottop 0:22e251b14893 1309 uLCD.line(22, 42, 106, 42, BLACK);
giavottop 0:22e251b14893 1310 uLCD.line(22, 68, 106, 68, BLACK);
giavottop 0:22e251b14893 1311 uLCD.line(22, 98, 106, 98, WHITE);
giavottop 0:22e251b14893 1312 }
giavottop 0:22e251b14893 1313 }
giavottop 0:22e251b14893 1314
giavottop 0:22e251b14893 1315 //Wait to essentialially debounce (want to flick switch)
giavottop 0:22e251b14893 1316 wait(0.3);
giavottop 0:22e251b14893 1317
giavottop 0:22e251b14893 1318 }
giavottop 0:22e251b14893 1319 }