Tolu Owoso / Mbed 2 deprecated ELEC2645_Project_el18to

Dependencies:   mbed ELEC2645_Project_el18to

Committer:
Tolu__
Date:
Sun May 03 15:49:33 2020 +0000
Revision:
7:2116d5bcc08d
Parent:
6:314240662849
Child:
8:37efdea02311
c;

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