Tolu Owoso / Mbed 2 deprecated ELEC2645_Project_el18to

Dependencies:   mbed ELEC2645_Project_el18to

Committer:
Tolu__
Date:
Sun May 03 12:41:07 2020 +0000
Revision:
5:3fda09f927b8
Parent:
4:536a62daa959
Child:
6:314240662849
Toluwalakin Owoso

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Tolu__ 4:536a62daa959 1 /* ELEC2645 Gamepad Test
Tolu__ 4:536a62daa959 2 * 2nd Generation
Tolu__ 4:536a62daa959 3 * January 2020
Tolu__ 4:536a62daa959 4 * Dr Craig A. Evans & Joshua Davy
Tolu__ 4:536a62daa959 5 */
eencae 0:b7f1f47bb26a 6
Tolu__ 4:536a62daa959 7
eencae 0:b7f1f47bb26a 8
Tolu__ 4:536a62daa959 9 // Includes
eencae 0:b7f1f47bb26a 10 #include "mbed.h"
eencae 0:b7f1f47bb26a 11 #include "Gamepad.h"
eencae 0:b7f1f47bb26a 12 #include "N5110.h"
eencae 0:b7f1f47bb26a 13
eencae 0:b7f1f47bb26a 14
Tolu__ 4:536a62daa959 15
Tolu__ 4:536a62daa959 16 // objects
eencae 0:b7f1f47bb26a 17 Gamepad pad;
eencae 0:b7f1f47bb26a 18 N5110 lcd;
Tolu__ 4:536a62daa959 19
Tolu__ 4:536a62daa959 20 const int bigwh[10][10] = {
Tolu__ 4:536a62daa959 21 { 0,0,0,1,1,1,1,0,0,0 },
Tolu__ 4:536a62daa959 22 { 0,0,1,0,0,0,0,1,0,0 },
Tolu__ 4:536a62daa959 23 { 0,1,0,0,0,0,0,0,1,0 },
Tolu__ 4:536a62daa959 24 { 1,0,0,0,0,0,0,0,0,1 },
Tolu__ 4:536a62daa959 25 { 1,1,1,0,0,0,0,1,1,1 },
Tolu__ 4:536a62daa959 26 { 1,1,1,1,1,1,1,1,1,1 },
Tolu__ 4:536a62daa959 27 { 1,0,0,0,1,1,0,0,0,1 },
Tolu__ 4:536a62daa959 28 { 0,1,0,0,1,1,0,0,1,0 },
Tolu__ 4:536a62daa959 29 { 0,0,1,0,1,1,0,1,0,0 },
Tolu__ 4:536a62daa959 30 { 0,0,0,1,1,1,1,0,0,0 },
Tolu__ 4:536a62daa959 31 };
Tolu__ 4:536a62daa959 32
Tolu__ 4:536a62daa959 33 const int wheel[5][5] = {
Tolu__ 4:536a62daa959 34 { 0,1,1,1,0 },
Tolu__ 4:536a62daa959 35 { 1,0,0,0,1 },
Tolu__ 4:536a62daa959 36 { 1,1,1,1,1 },
Tolu__ 4:536a62daa959 37 { 1,0,1,0,1 },
Tolu__ 4:536a62daa959 38 { 0,1,1,1,0 },
Tolu__ 4:536a62daa959 39 };
Tolu__ 4:536a62daa959 40
Tolu__ 4:536a62daa959 41 const int rcar[10][10] = {
Tolu__ 4:536a62daa959 42 { 0,0,0,0,1,1,0,0,0,0 },
Tolu__ 4:536a62daa959 43 { 0,0,1,1,1,1,1,1,0,0 },
Tolu__ 4:536a62daa959 44 { 0,0,1,0,1,1,0,1,0,0 },
Tolu__ 4:536a62daa959 45 { 0,0,1,0,1,1,0,1,0,0 },
Tolu__ 4:536a62daa959 46 { 0,0,0,1,1,1,1,0,0,0 },
Tolu__ 4:536a62daa959 47 { 0,0,0,1,0,0,1,0,0,0 },
Tolu__ 4:536a62daa959 48 { 0,0,1,1,0,0,1,1,0,0 },
Tolu__ 4:536a62daa959 49 { 0,0,1,1,0,0,1,1,0,0 },
Tolu__ 4:536a62daa959 50 { 0,0,0,1,0,0,1,0,0,0 },
Tolu__ 4:536a62daa959 51 { 0,0,0,0,1,1,0,0,0,0 },
Tolu__ 4:536a62daa959 52 };
Tolu__ 4:536a62daa959 53
Tolu__ 4:536a62daa959 54 const int ucar[10][10] = {
Tolu__ 4:536a62daa959 55 { 0,0,0,0,0,0,0,0,0,0 },
Tolu__ 4:536a62daa959 56 { 0,0,0,1,1,1,1,0,0,0 },
Tolu__ 4:536a62daa959 57 { 0,0,1,1,0,0,1,1,0,0 },
Tolu__ 4:536a62daa959 58 { 0,0,1,1,0,0,1,1,0,0 },
Tolu__ 4:536a62daa959 59 { 0,0,0,1,1,1,1,0,0,0 },
Tolu__ 4:536a62daa959 60 { 0,0,0,1,0,0,1,0,0,0 },
Tolu__ 4:536a62daa959 61 { 0,0,1,1,0,0,1,1,0,0 },
Tolu__ 4:536a62daa959 62 { 0,0,1,1,0,0,1,1,0,0 },
Tolu__ 4:536a62daa959 63 { 0,0,0,1,1,1,1,0,0,0 },
Tolu__ 4:536a62daa959 64 { 0,0,0,0,0,0,0,0,0,0 },
Tolu__ 4:536a62daa959 65 };
eencae 0:b7f1f47bb26a 66
Tolu__ 4:536a62daa959 67 const int dcar[10][10] = {
Tolu__ 4:536a62daa959 68 { 0,0,0,0,0,0,0,0,0,0 },
Tolu__ 4:536a62daa959 69 { 0,0,0,1,1,1,1,0,0,0 },
Tolu__ 4:536a62daa959 70 { 0,0,1,1,0,0,1,1,0,0 },
Tolu__ 4:536a62daa959 71 { 0,0,1,1,0,0,1,1,0,0 },
Tolu__ 4:536a62daa959 72 { 0,0,0,1,0,0,1,0,0,0 },
Tolu__ 4:536a62daa959 73 { 0,0,0,1,1,1,1,0,0,0 },
Tolu__ 4:536a62daa959 74 { 0,0,1,1,0,0,1,1,0,0 },
Tolu__ 4:536a62daa959 75 { 0,0,1,1,0,0,1,1,0,0 },
Tolu__ 4:536a62daa959 76 { 0,0,0,1,1,1,1,0,0,0 },
Tolu__ 4:536a62daa959 77 { 0,0,0,0,0,0,0,0,0,0 },
Tolu__ 4:536a62daa959 78
Tolu__ 4:536a62daa959 79 };
Tolu__ 4:536a62daa959 80
Tolu__ 4:536a62daa959 81 const int full_crash[10][10] = {
Tolu__ 4:536a62daa959 82 { 0,0,1,0,0,0,0,0,1,0 },
Tolu__ 4:536a62daa959 83 { 0,0,0,1,1,0,0,1,0,0 },
Tolu__ 4:536a62daa959 84 { 0,0,1,1,0,1,1,0,1,0 },
Tolu__ 4:536a62daa959 85 { 0,0,0,1,0,0,0,0,1,0 },
Tolu__ 4:536a62daa959 86 { 0,0,0,0,1,0,0,1,0,0 },
Tolu__ 4:536a62daa959 87 { 0,0,0,1,0,0,0,0,1,0 },
Tolu__ 4:536a62daa959 88 { 0,0,1,0,0,1,1,1,0,0 },
Tolu__ 4:536a62daa959 89 { 0,0,1,1,0,0,0,1,0,0 },
Tolu__ 4:536a62daa959 90 { 0,0,0,0,1,1,1,0,0,0 },
Tolu__ 4:536a62daa959 91 { 0,1,1,0,0,0,0,0,0,1 },
Tolu__ 4:536a62daa959 92
Tolu__ 4:536a62daa959 93 };
Tolu__ 4:536a62daa959 94
Tolu__ 4:536a62daa959 95 volatile int x = 29;
Tolu__ 4:536a62daa959 96 volatile int y = 36;
Tolu__ 4:536a62daa959 97 volatile int xw = 4;
Tolu__ 4:536a62daa959 98 volatile int yw = 17;
Tolu__ 4:536a62daa959 99 volatile int y_u = 48;
Tolu__ 4:536a62daa959 100 volatile int y_d = 0;
Tolu__ 4:536a62daa959 101 volatile int c = 0;
Tolu__ 4:536a62daa959 102 volatile int y_di0 = 15;
Tolu__ 4:536a62daa959 103 volatile int y_di1 = 1;
Tolu__ 4:536a62daa959 104 volatile int y_di2 = 36;
Tolu__ 4:536a62daa959 105 volatile int y_di3 = 45;
Tolu__ 4:536a62daa959 106 volatile int y_di4 = 23;
Tolu__ 4:536a62daa959 107 volatile int spe = 0;
Tolu__ 4:536a62daa959 108 volatile int spec = 0;
Tolu__ 4:536a62daa959 109 volatile int specc = 0;
Tolu__ 4:536a62daa959 110 volatile int i = 2000;
Tolu__ 4:536a62daa959 111 volatile int i1 = 500;
Tolu__ 4:536a62daa959 112 volatile int is = 30;
Tolu__ 5:3fda09f927b8 113 volatile int iis;
Tolu__ 4:536a62daa959 114 volatile int g = 0;
Tolu__ 5:3fda09f927b8 115 volatile int length1;
Tolu__ 5:3fda09f927b8 116 volatile int length2;
Tolu__ 5:3fda09f927b8 117 volatile int tt;
Tolu__ 4:536a62daa959 118
Tolu__ 4:536a62daa959 119 void start_page();
Tolu__ 4:536a62daa959 120 void check_start();
Tolu__ 4:536a62daa959 121 void bound_check();
Tolu__ 4:536a62daa959 122 void pos_update();
Tolu__ 4:536a62daa959 123 void map();
Tolu__ 4:536a62daa959 124 void traffic();
Tolu__ 4:536a62daa959 125 void dirt();
Tolu__ 4:536a62daa959 126 void check_crash();
Tolu__ 4:536a62daa959 127 void game();
Tolu__ 4:536a62daa959 128 void game_over();
Tolu__ 4:536a62daa959 129 void game_modes();
Tolu__ 4:536a62daa959 130 void info();
Tolu__ 4:536a62daa959 131 void count1();
Tolu__ 4:536a62daa959 132 void count2();
Tolu__ 4:536a62daa959 133 void tail();
Tolu__ 4:536a62daa959 134 void time_heist();
Tolu__ 4:536a62daa959 135
Tolu__ 4:536a62daa959 136 int main()
Tolu__ 4:536a62daa959 137 {
Tolu__ 3:793a6186b557 138 lcd.init();
Tolu__ 4:536a62daa959 139 lcd.setContrast(0.5);
Tolu__ 4:536a62daa959 140 pad.init();
Tolu__ 4:536a62daa959 141 while(1) {
Tolu__ 5:3fda09f927b8 142 check_start();
Tolu__ 5:3fda09f927b8 143 while(g != 50) {
Tolu__ 5:3fda09f927b8 144 pad.leds_on();
Tolu__ 5:3fda09f927b8 145 lcd.clear();
Tolu__ 5:3fda09f927b8 146 game();
Tolu__ 5:3fda09f927b8 147 lcd.refresh();
Tolu__ 5:3fda09f927b8 148 wait_ms(30);
Tolu__ 5:3fda09f927b8 149 }
Tolu__ 5:3fda09f927b8 150 while(pad.start_pressed() == false) {
Tolu__ 5:3fda09f927b8 151
Tolu__ 5:3fda09f927b8 152 }
Tolu__ 5:3fda09f927b8 153 game_over();
Tolu__ 5:3fda09f927b8 154 g = 0;
Tolu__ 5:3fda09f927b8 155 xw = 4;
Tolu__ 5:3fda09f927b8 156 yw = 17;
Tolu__ 4:536a62daa959 157 }
Tolu__ 4:536a62daa959 158 }
Tolu__ 4:536a62daa959 159
Tolu__ 4:536a62daa959 160 void start_page()
Tolu__ 4:536a62daa959 161 {
Tolu__ 4:536a62daa959 162 Direction D = pad.get_direction();
Tolu__ 4:536a62daa959 163 bool Yes = pad.B_pressed();
Tolu__ 4:536a62daa959 164 lcd.printString("DRIIIIIVE!",12,0);
Tolu__ 4:536a62daa959 165 lcd.printString("GAME MODES",12,2);
Tolu__ 4:536a62daa959 166 lcd.printString("INFO",30,3);
Tolu__ 4:536a62daa959 167 if(D == S) {
Tolu__ 4:536a62daa959 168 xw = 24;
Tolu__ 4:536a62daa959 169 yw = 25;
Tolu__ 4:536a62daa959 170 }
Tolu__ 4:536a62daa959 171 if(D == N) {
Tolu__ 4:536a62daa959 172 xw = 4;
Tolu__ 4:536a62daa959 173 yw = 17;
Tolu__ 4:536a62daa959 174 }
Tolu__ 4:536a62daa959 175 lcd.drawSprite(xw,yw,5,5,( int*)wheel);
Tolu__ 4:536a62daa959 176 lcd.refresh();
Tolu__ 4:536a62daa959 177
Tolu__ 4:536a62daa959 178 if(Yes == true && xw == 4 && yw == 17) {
Tolu__ 4:536a62daa959 179 g = 1;
Tolu__ 4:536a62daa959 180 xw = 24;
Tolu__ 4:536a62daa959 181 yw = 17;
Tolu__ 4:536a62daa959 182 }
Tolu__ 4:536a62daa959 183 if(Yes == true && xw == 24 && yw == 25) {
Tolu__ 4:536a62daa959 184 g = 2;
Tolu__ 4:536a62daa959 185 }
Tolu__ 4:536a62daa959 186 }
Tolu__ 4:536a62daa959 187
Tolu__ 4:536a62daa959 188 void game_modes()
Tolu__ 4:536a62daa959 189 {
Tolu__ 4:536a62daa959 190 Direction D = pad.get_direction();
Tolu__ 4:536a62daa959 191 bool Yes = pad.B_pressed();
Tolu__ 4:536a62daa959 192 bool Back = pad.A_pressed();
Tolu__ 4:536a62daa959 193 lcd.printString("GAME MODES",12,0);
Tolu__ 4:536a62daa959 194 lcd.printString("TAIL",30,2);
Tolu__ 4:536a62daa959 195 lcd.printString("TIME HEIST",12,3);
Tolu__ 4:536a62daa959 196 if(D == S) {
Tolu__ 4:536a62daa959 197 xw = 4;
Tolu__ 4:536a62daa959 198 yw = 25;
Tolu__ 4:536a62daa959 199 }
Tolu__ 4:536a62daa959 200 if(D == N) {
Tolu__ 4:536a62daa959 201 xw = 24;
Tolu__ 4:536a62daa959 202 yw = 17;
Tolu__ 4:536a62daa959 203 }
Tolu__ 4:536a62daa959 204 lcd.drawSprite(xw,yw,5,5,( int*)wheel);
Tolu__ 4:536a62daa959 205 lcd.refresh();
Tolu__ 4:536a62daa959 206
Tolu__ 4:536a62daa959 207 if(Yes == true && xw == 24 && yw == 17) {
Tolu__ 4:536a62daa959 208 g = 13;
Tolu__ 4:536a62daa959 209 }
Tolu__ 4:536a62daa959 210 if(Yes == true && xw == 4 && yw == 25) {
Tolu__ 4:536a62daa959 211 g = 24;
Tolu__ 4:536a62daa959 212 }
Tolu__ 4:536a62daa959 213 if(Back == true) {
Tolu__ 4:536a62daa959 214 g = 0;
Tolu__ 4:536a62daa959 215 start_page();
Tolu__ 4:536a62daa959 216 xw = 4;
Tolu__ 4:536a62daa959 217 yw = 17;
Tolu__ 4:536a62daa959 218 }
Tolu__ 4:536a62daa959 219 }
Tolu__ 4:536a62daa959 220
Tolu__ 4:536a62daa959 221 void info()
Tolu__ 4:536a62daa959 222 {
Tolu__ 4:536a62daa959 223 bool Back = pad.A_pressed();
Tolu__ 4:536a62daa959 224 lcd.printString("INFO",30,0);
Tolu__ 4:536a62daa959 225 lcd.refresh();
Tolu__ 4:536a62daa959 226 if(Back == true) {
Tolu__ 4:536a62daa959 227 g = 0;
Tolu__ 4:536a62daa959 228 start_page();
Tolu__ 4:536a62daa959 229 xw = 4;
Tolu__ 4:536a62daa959 230 yw = 17;
Tolu__ 4:536a62daa959 231 }
Tolu__ 4:536a62daa959 232 }
Tolu__ 4:536a62daa959 233
Tolu__ 4:536a62daa959 234 void check_start()
Tolu__ 4:536a62daa959 235 {
Tolu__ 4:536a62daa959 236 while(g < 10) {
Tolu__ 4:536a62daa959 237 while(pad.B_pressed() == false && g == 0) {
Tolu__ 4:536a62daa959 238 lcd.clear();
Tolu__ 4:536a62daa959 239 wait_ms(100);
Tolu__ 4:536a62daa959 240 pad.leds_on();
Tolu__ 4:536a62daa959 241 wait_ms(100);
Tolu__ 4:536a62daa959 242 pad.leds_off();
Tolu__ 4:536a62daa959 243
Tolu__ 4:536a62daa959 244 start_page();
Tolu__ 4:536a62daa959 245 }
Tolu__ 4:536a62daa959 246
Tolu__ 4:536a62daa959 247 while(pad.B_pressed() == false && g == 1) {
Tolu__ 4:536a62daa959 248 lcd.clear();
Tolu__ 4:536a62daa959 249 wait_ms(100);
Tolu__ 4:536a62daa959 250 pad.leds_on();
Tolu__ 4:536a62daa959 251 wait_ms(100);
Tolu__ 4:536a62daa959 252 pad.leds_off();
Tolu__ 4:536a62daa959 253
Tolu__ 4:536a62daa959 254 game_modes();
Tolu__ 4:536a62daa959 255 }
Tolu__ 4:536a62daa959 256
Tolu__ 4:536a62daa959 257 while(pad.B_pressed() == false && g == 2) {
Tolu__ 4:536a62daa959 258 lcd.clear();
Tolu__ 4:536a62daa959 259 wait_ms(100);
Tolu__ 4:536a62daa959 260 pad.leds_on();
Tolu__ 4:536a62daa959 261 wait_ms(100);
Tolu__ 4:536a62daa959 262 pad.leds_off();
Tolu__ 4:536a62daa959 263
Tolu__ 4:536a62daa959 264 info();
Tolu__ 4:536a62daa959 265 }
Tolu__ 4:536a62daa959 266 }
Tolu__ 4:536a62daa959 267 }
Tolu__ 4:536a62daa959 268
Tolu__ 4:536a62daa959 269 void bound_check()
Tolu__ 4:536a62daa959 270 {
Tolu__ 4:536a62daa959 271 /*if(x > 76) {
Tolu__ 4:536a62daa959 272 x = 76;
Tolu__ 4:536a62daa959 273 }
Tolu__ 4:536a62daa959 274 if(x < 0) {
Tolu__ 4:536a62daa959 275 x = 0;
Tolu__ 4:536a62daa959 276 }*/
Tolu__ 4:536a62daa959 277 if(x < 25) {
Tolu__ 4:536a62daa959 278 x = 25;
Tolu__ 4:536a62daa959 279 //c = c + 1;
Tolu__ 4:536a62daa959 280 }
Tolu__ 4:536a62daa959 281 if(x > 50) {
Tolu__ 4:536a62daa959 282 x = 50;
Tolu__ 4:536a62daa959 283 //c = c + 1;
Tolu__ 4:536a62daa959 284 }
Tolu__ 4:536a62daa959 285 if(y > 38) {
Tolu__ 4:536a62daa959 286 y = 38;
Tolu__ 4:536a62daa959 287 }
Tolu__ 4:536a62daa959 288 if(y < 0) {
Tolu__ 4:536a62daa959 289 y = 0;
Tolu__ 4:536a62daa959 290 }
Tolu__ 4:536a62daa959 291 if(y > 35) {
Tolu__ 4:536a62daa959 292 y = 35;
Tolu__ 4:536a62daa959 293 }
Tolu__ 4:536a62daa959 294 if(y < 20) {
Tolu__ 4:536a62daa959 295 y = 20;
Tolu__ 4:536a62daa959 296 }
Tolu__ 4:536a62daa959 297 }
Tolu__ 4:536a62daa959 298
Tolu__ 4:536a62daa959 299
Tolu__ 4:536a62daa959 300 void pos_update()
Tolu__ 4:536a62daa959 301 {
Tolu__ 4:536a62daa959 302 Direction D = pad.get_direction();
Tolu__ 4:536a62daa959 303 float Mag = pad.get_mag();
Tolu__ 4:536a62daa959 304
Tolu__ 4:536a62daa959 305 if(Mag > 0.2) {
Tolu__ 4:536a62daa959 306 spec = 1;
Tolu__ 3:793a6186b557 307 wait_ms(10);
Tolu__ 4:536a62daa959 308 spec = 3;
Tolu__ 4:536a62daa959 309 }
Tolu__ 4:536a62daa959 310
Tolu__ 4:536a62daa959 311 if(pad.B_held() == true) {
Tolu__ 4:536a62daa959 312 wait_ms(10);
Tolu__ 4:536a62daa959 313 y = y - 1;
Tolu__ 4:536a62daa959 314 }
Tolu__ 4:536a62daa959 315 if(pad.Y_held() == true) {
Tolu__ 4:536a62daa959 316 wait_ms(10);
Tolu__ 4:536a62daa959 317 y = y + 1;
Tolu__ 4:536a62daa959 318 }
Tolu__ 4:536a62daa959 319
Tolu__ 4:536a62daa959 320
Tolu__ 4:536a62daa959 321 if(D == NE) {
Tolu__ 4:536a62daa959 322 wait_ms(10);
Tolu__ 4:536a62daa959 323 x = x + spec;
Tolu__ 4:536a62daa959 324 }
Tolu__ 4:536a62daa959 325 if(D == E) {
Tolu__ 4:536a62daa959 326 wait_ms(10);
Tolu__ 4:536a62daa959 327 x = x + spec;
Tolu__ 4:536a62daa959 328 }
Tolu__ 4:536a62daa959 329 if(D == SE) {
Tolu__ 4:536a62daa959 330 wait_ms(10);
Tolu__ 4:536a62daa959 331 x = x + spec;
Tolu__ 4:536a62daa959 332 }
Tolu__ 4:536a62daa959 333 if(D == SW) {
Tolu__ 4:536a62daa959 334 wait_ms(10);
Tolu__ 4:536a62daa959 335 x = x - spec;
Tolu__ 4:536a62daa959 336 }
Tolu__ 4:536a62daa959 337 if(D == W) {
Tolu__ 4:536a62daa959 338 wait_ms(10);
Tolu__ 4:536a62daa959 339 x = x - spec;
Tolu__ 4:536a62daa959 340 }
Tolu__ 4:536a62daa959 341 if(D == NW) {
Tolu__ 4:536a62daa959 342 wait_ms(10);
Tolu__ 4:536a62daa959 343 x = x - spec;
Tolu__ 4:536a62daa959 344 }
Tolu__ 4:536a62daa959 345 bound_check();
Tolu__ 4:536a62daa959 346 lcd.drawSprite(x,y,10,10,( int*)rcar);
Tolu__ 4:536a62daa959 347 lcd.refresh();
Tolu__ 4:536a62daa959 348
Tolu__ 4:536a62daa959 349 if(c == 3) {
Tolu__ 4:536a62daa959 350 game_over();
Tolu__ 4:536a62daa959 351 }
Tolu__ 4:536a62daa959 352
Tolu__ 4:536a62daa959 353
Tolu__ 4:536a62daa959 354 }
Tolu__ 4:536a62daa959 355
Tolu__ 4:536a62daa959 356 void map()
Tolu__ 4:536a62daa959 357 {
Tolu__ 4:536a62daa959 358 lcd.drawLine(26,0,26,48,1);
Tolu__ 4:536a62daa959 359 lcd.drawLine(40,0,40,48,1);
Tolu__ 4:536a62daa959 360 lcd.drawLine(44,0,44,48,1);
Tolu__ 4:536a62daa959 361 lcd.drawLine(58,0,58,48,1);
Tolu__ 4:536a62daa959 362 lcd.drawLine(24,0,24,48,2);
Tolu__ 4:536a62daa959 363 lcd.drawLine(60,0,60,48,2);
Tolu__ 4:536a62daa959 364 //traffic();
Tolu__ 4:536a62daa959 365 dirt();
Tolu__ 4:536a62daa959 366
Tolu__ 4:536a62daa959 367 }
Tolu__ 4:536a62daa959 368
Tolu__ 4:536a62daa959 369 void traffic()
Tolu__ 4:536a62daa959 370 {
Tolu__ 4:536a62daa959 371 lcd.drawSprite(29,y_u,10,10,( int*)ucar);
Tolu__ 4:536a62daa959 372 lcd.drawSprite(47,y_d,10,10,( int*)dcar);
Tolu__ 4:536a62daa959 373 y_u = y_u - 1;
Tolu__ 4:536a62daa959 374 y_d = y_d + 1;
Tolu__ 4:536a62daa959 375
Tolu__ 4:536a62daa959 376 if (y_u == 0) {
Tolu__ 4:536a62daa959 377 y_u = 48;
Tolu__ 4:536a62daa959 378 }
Tolu__ 4:536a62daa959 379
Tolu__ 4:536a62daa959 380 if (y_d == 48) {
Tolu__ 4:536a62daa959 381 y_d = 0;
Tolu__ 3:793a6186b557 382 }
Tolu__ 4:536a62daa959 383
Tolu__ 4:536a62daa959 384 wait_ms(10);
Tolu__ 4:536a62daa959 385
Tolu__ 4:536a62daa959 386 }
Tolu__ 4:536a62daa959 387
Tolu__ 4:536a62daa959 388 void dirt()
Tolu__ 4:536a62daa959 389 {
Tolu__ 4:536a62daa959 390 bool Acc = pad.B_held();
Tolu__ 4:536a62daa959 391 bool Break = pad.Y_pressed();
Tolu__ 4:536a62daa959 392 bool Reverse = pad.Y_held();
Tolu__ 4:536a62daa959 393 Direction D = pad.get_direction();
Tolu__ 4:536a62daa959 394 float Mag = pad.get_mag();
Tolu__ 4:536a62daa959 395 lcd.drawRect(1,y_di0,2,2,FILL_TRANSPARENT);
Tolu__ 4:536a62daa959 396 lcd.drawRect(5,y_di1,2,2,FILL_TRANSPARENT);
Tolu__ 4:536a62daa959 397 lcd.drawRect(10,y_di2,2,2,FILL_TRANSPARENT);
Tolu__ 4:536a62daa959 398 lcd.drawRect(15,y_di3,2,2,FILL_TRANSPARENT);
Tolu__ 4:536a62daa959 399 lcd.drawRect(20,y_di4,2,2,FILL_TRANSPARENT);
Tolu__ 4:536a62daa959 400 lcd.drawRect(65,y_di0,2,2,FILL_TRANSPARENT);
Tolu__ 4:536a62daa959 401 lcd.drawRect(73,y_di1,2,2,FILL_TRANSPARENT);
Tolu__ 4:536a62daa959 402 lcd.drawRect(62,y_di2,2,2,FILL_TRANSPARENT);
Tolu__ 4:536a62daa959 403 lcd.drawRect(79,y_di3,2,2,FILL_TRANSPARENT);
Tolu__ 4:536a62daa959 404 lcd.drawRect(81,y_di4,2,2,FILL_TRANSPARENT);
Tolu__ 4:536a62daa959 405
Tolu__ 4:536a62daa959 406 spe = 1;
Tolu__ 4:536a62daa959 407
Tolu__ 4:536a62daa959 408 if(Acc == true) {
Tolu__ 4:536a62daa959 409 wait_ms(50);
Tolu__ 4:536a62daa959 410 y_di0 = y_di0 + spe;
Tolu__ 4:536a62daa959 411 y_di1 = y_di1 + spe;
Tolu__ 4:536a62daa959 412 y_di2 = y_di2 + spe;
Tolu__ 4:536a62daa959 413 y_di3 = y_di3 + spe;
Tolu__ 4:536a62daa959 414 y_di4 = y_di4 + spe;
Tolu__ 4:536a62daa959 415 }
Tolu__ 4:536a62daa959 416 if(Break == true) {
Tolu__ 4:536a62daa959 417 wait_ms(50);
Tolu__ 4:536a62daa959 418 y_di0 = y_di0;
Tolu__ 4:536a62daa959 419 y_di1 = y_di1;
Tolu__ 4:536a62daa959 420 y_di2 = y_di2;
Tolu__ 4:536a62daa959 421 y_di3 = y_di3;
Tolu__ 4:536a62daa959 422 y_di4 = y_di4;
Tolu__ 4:536a62daa959 423 }
Tolu__ 4:536a62daa959 424 if(Reverse == true) {
Tolu__ 4:536a62daa959 425 wait_ms(50);
Tolu__ 4:536a62daa959 426 y_di0 = y_di0 - 1;
Tolu__ 4:536a62daa959 427 y_di1 = y_di1 - 1;
Tolu__ 4:536a62daa959 428 y_di2 = y_di2 - 1;
Tolu__ 4:536a62daa959 429 y_di3 = y_di3 - 1;
Tolu__ 4:536a62daa959 430 y_di4 = y_di4 - 1;
Tolu__ 4:536a62daa959 431 }
Tolu__ 4:536a62daa959 432 if(D == NE) {
Tolu__ 4:536a62daa959 433 wait_ms(10);
Tolu__ 4:536a62daa959 434 y_di0 = y_di0 + spe;
Tolu__ 4:536a62daa959 435 y_di1 = y_di1 + spe;
Tolu__ 4:536a62daa959 436 y_di2 = y_di2 + spe;
Tolu__ 4:536a62daa959 437 y_di3 = y_di3 + spe;
Tolu__ 4:536a62daa959 438 y_di4 = y_di4 + spe;
Tolu__ 4:536a62daa959 439 }
Tolu__ 4:536a62daa959 440 if(D == SE) {
Tolu__ 4:536a62daa959 441 wait_ms(10);
Tolu__ 4:536a62daa959 442 y_di0 = y_di0 - spe;
Tolu__ 4:536a62daa959 443 y_di1 = y_di1 - spe;
Tolu__ 4:536a62daa959 444 y_di2 = y_di2 - spe;
Tolu__ 4:536a62daa959 445 y_di3 = y_di3 - spe;
Tolu__ 4:536a62daa959 446 y_di4 = y_di4 - spe;
Tolu__ 4:536a62daa959 447 }
Tolu__ 4:536a62daa959 448 if(D == SW) {
Tolu__ 4:536a62daa959 449 wait_ms(10);
Tolu__ 4:536a62daa959 450 y_di0 = y_di0 - spe;
Tolu__ 4:536a62daa959 451 y_di1 = y_di1 - spe;
Tolu__ 4:536a62daa959 452 y_di2 = y_di2 - spe;
Tolu__ 4:536a62daa959 453 y_di3 = y_di3 - spe;
Tolu__ 4:536a62daa959 454 y_di4 = y_di4 - spe;
Tolu__ 4:536a62daa959 455 }
Tolu__ 4:536a62daa959 456 if(D == NW) {
Tolu__ 4:536a62daa959 457 wait_ms(50);
Tolu__ 4:536a62daa959 458 y_di0 = y_di0 + spe;
Tolu__ 4:536a62daa959 459 y_di1 = y_di1 + spe;
Tolu__ 4:536a62daa959 460 y_di2 = y_di2 + spe;
Tolu__ 4:536a62daa959 461 y_di3 = y_di3 + spe;
Tolu__ 4:536a62daa959 462 y_di4 = y_di4 + spe;
Tolu__ 4:536a62daa959 463 }
Tolu__ 4:536a62daa959 464
Tolu__ 4:536a62daa959 465 if(y_di0 > 48) {
Tolu__ 4:536a62daa959 466 y_di0 = 0;
Tolu__ 4:536a62daa959 467 }
Tolu__ 4:536a62daa959 468 if(y_di0 < 0) {
Tolu__ 4:536a62daa959 469 y_di0 = 48;
Tolu__ 4:536a62daa959 470 }
Tolu__ 4:536a62daa959 471 if(y_di1 > 48) {
Tolu__ 4:536a62daa959 472 y_di1 = 0;
Tolu__ 4:536a62daa959 473 }
Tolu__ 4:536a62daa959 474 if(y_di1 < 0) {
Tolu__ 4:536a62daa959 475 y_di1 = 48;
Tolu__ 4:536a62daa959 476 }
Tolu__ 4:536a62daa959 477 if(y_di2 > 48) {
Tolu__ 4:536a62daa959 478 y_di2 = 0;
Tolu__ 4:536a62daa959 479 }
Tolu__ 4:536a62daa959 480 if(y_di2 < 0) {
Tolu__ 4:536a62daa959 481 y_di2 = 48;
Tolu__ 4:536a62daa959 482 }
Tolu__ 4:536a62daa959 483 if(y_di3 > 48) {
Tolu__ 4:536a62daa959 484 y_di3 = 0;
Tolu__ 4:536a62daa959 485 }
Tolu__ 4:536a62daa959 486 if(y_di3 < 0) {
Tolu__ 4:536a62daa959 487 y_di3 = 48;
Tolu__ 4:536a62daa959 488 }
Tolu__ 4:536a62daa959 489 if(y_di4 > 48) {
Tolu__ 4:536a62daa959 490 y_di4 = 0;
Tolu__ 4:536a62daa959 491 }
Tolu__ 4:536a62daa959 492 if(y_di4 < 0) {
Tolu__ 4:536a62daa959 493 y_di4 = 48;
Tolu__ 4:536a62daa959 494 }
Tolu__ 4:536a62daa959 495 }
Tolu__ 4:536a62daa959 496
Tolu__ 4:536a62daa959 497 void check_crash()
Tolu__ 4:536a62daa959 498 {
Tolu__ 4:536a62daa959 499 if(c == 3) {
Tolu__ 4:536a62daa959 500 lcd.drawSprite(x,y,10,10,( int*)full_crash);
Tolu__ 4:536a62daa959 501 lcd.refresh();
Tolu__ 4:536a62daa959 502 wait_ms(100);
Tolu__ 4:536a62daa959 503 }
Tolu__ 4:536a62daa959 504 }
Tolu__ 4:536a62daa959 505
Tolu__ 4:536a62daa959 506 void tail()
Tolu__ 4:536a62daa959 507 {
Tolu__ 4:536a62daa959 508 count1();
Tolu__ 4:536a62daa959 509 map();
Tolu__ 4:536a62daa959 510 pos_update();
Tolu__ 4:536a62daa959 511 check_crash();
Tolu__ 4:536a62daa959 512
Tolu__ 4:536a62daa959 513 if (i >= 3500) {
Tolu__ 5:3fda09f927b8 514 g = 50;
Tolu__ 4:536a62daa959 515 game_over();
Tolu__ 4:536a62daa959 516 }
Tolu__ 4:536a62daa959 517 }
Tolu__ 4:536a62daa959 518
Tolu__ 4:536a62daa959 519 void time_heist()
Tolu__ 4:536a62daa959 520 {
Tolu__ 4:536a62daa959 521 count2();
Tolu__ 4:536a62daa959 522 map();
Tolu__ 4:536a62daa959 523 pos_update();
Tolu__ 4:536a62daa959 524 check_crash();
Tolu__ 4:536a62daa959 525
Tolu__ 4:536a62daa959 526 if (is <= 0) {
Tolu__ 5:3fda09f927b8 527 g = 50;
Tolu__ 4:536a62daa959 528 game_over();
Tolu__ 4:536a62daa959 529 }
Tolu__ 4:536a62daa959 530 }
Tolu__ 4:536a62daa959 531
Tolu__ 4:536a62daa959 532 void game()
Tolu__ 4:536a62daa959 533 {
Tolu__ 4:536a62daa959 534 if(g == 13) {
Tolu__ 4:536a62daa959 535 tail();
Tolu__ 4:536a62daa959 536 }
Tolu__ 4:536a62daa959 537 if(g == 24) {
Tolu__ 4:536a62daa959 538 time_heist();
Tolu__ 4:536a62daa959 539 }
Tolu__ 4:536a62daa959 540 lcd.refresh();
Tolu__ 4:536a62daa959 541 }
Tolu__ 4:536a62daa959 542
Tolu__ 4:536a62daa959 543 void game_over()
Tolu__ 4:536a62daa959 544 {
Tolu__ 4:536a62daa959 545 lcd.clear();
Tolu__ 4:536a62daa959 546 lcd.refresh();
Tolu__ 4:536a62daa959 547 lcd.printString("GAME OVER!",12,2);
Tolu__ 4:536a62daa959 548 lcd.printString("Press start",10,4);
Tolu__ 5:3fda09f927b8 549 i = 2000;
Tolu__ 5:3fda09f927b8 550 i1 = 500;
Tolu__ 5:3fda09f927b8 551 is = 30;
Tolu__ 4:536a62daa959 552 }
Tolu__ 4:536a62daa959 553
Tolu__ 4:536a62daa959 554 void count1()
Tolu__ 4:536a62daa959 555 {
Tolu__ 4:536a62daa959 556 bool cou = pad.B_held();
Tolu__ 4:536a62daa959 557 bool couu = pad.B_pressed();
Tolu__ 4:536a62daa959 558 bool cu = pad.Y_held();
Tolu__ 4:536a62daa959 559 bool cuu = pad.Y_pressed();
Tolu__ 4:536a62daa959 560
Tolu__ 4:536a62daa959 561 int length;
Tolu__ 4:536a62daa959 562 char buffer[5];
Tolu__ 4:536a62daa959 563 if(cou == true || couu == true) {
Tolu__ 4:536a62daa959 564 i = i - 5;
Tolu__ 4:536a62daa959 565 }
Tolu__ 4:536a62daa959 566 if(cou == false || couu == false) {
Tolu__ 4:536a62daa959 567 i = i + 2;
Tolu__ 4:536a62daa959 568 }
Tolu__ 4:536a62daa959 569 if(cu == true || cuu == true) {
Tolu__ 4:536a62daa959 570 i = i + 4;
Tolu__ 4:536a62daa959 571 }
Tolu__ 4:536a62daa959 572
Tolu__ 4:536a62daa959 573 if(i < 0) {
Tolu__ 4:536a62daa959 574 i = 0;
Tolu__ 4:536a62daa959 575 }
Tolu__ 4:536a62daa959 576 length = sprintf(buffer, "%2dM", i);
Tolu__ 4:536a62daa959 577 if(length <= 5) {
Tolu__ 4:536a62daa959 578 lcd.printString(buffer,0,0);
Tolu__ 4:536a62daa959 579 }
Tolu__ 4:536a62daa959 580 }
Tolu__ 4:536a62daa959 581
Tolu__ 4:536a62daa959 582 void count2()
Tolu__ 4:536a62daa959 583 {
Tolu__ 5:3fda09f927b8 584 char buffer1[5];
Tolu__ 5:3fda09f927b8 585 char buffer2[3];
Tolu__ 4:536a62daa959 586 bool cou = pad.B_held();
Tolu__ 4:536a62daa959 587 bool couu = pad.B_pressed();
Tolu__ 4:536a62daa959 588 bool cu = pad.Y_held();
Tolu__ 4:536a62daa959 589 bool cuu = pad.Y_pressed();
Tolu__ 4:536a62daa959 590
Tolu__ 4:536a62daa959 591 length1 = sprintf(buffer1, "%2dM", i1);
Tolu__ 4:536a62daa959 592 length2 = sprintf(buffer2, "%2dS", is);
Tolu__ 4:536a62daa959 593 if(length1 <= 5) {
Tolu__ 4:536a62daa959 594 lcd.printString(buffer1,0,0);
Tolu__ 4:536a62daa959 595 }
Tolu__ 4:536a62daa959 596 if(cou == true || couu == true) {
Tolu__ 4:536a62daa959 597 i1 = i1 - 5;
Tolu__ 4:536a62daa959 598 }
Tolu__ 4:536a62daa959 599 if(cu == true || cuu == true) {
Tolu__ 4:536a62daa959 600 i1 = i1 + 3;
Tolu__ 4:536a62daa959 601 }
Tolu__ 4:536a62daa959 602
Tolu__ 4:536a62daa959 603 if(i1 < 0) {
Tolu__ 4:536a62daa959 604 i1 = 500;
Tolu__ 4:536a62daa959 605 is = 30;
Tolu__ 4:536a62daa959 606 }
Tolu__ 4:536a62daa959 607 if(length2 <= 3) {
Tolu__ 4:536a62daa959 608 lcd.printString(buffer2,61,0);
Tolu__ 4:536a62daa959 609 }
Tolu__ 4:536a62daa959 610
Tolu__ 5:3fda09f927b8 611 iis = 30;
Tolu__ 5:3fda09f927b8 612 tt = tt + 1;
Tolu__ 5:3fda09f927b8 613 if(iis == tt){
Tolu__ 5:3fda09f927b8 614 tt = 0;
Tolu__ 5:3fda09f927b8 615 is = is - 1;
Tolu__ 4:536a62daa959 616 }
Tolu__ 4:536a62daa959 617 }