Tolu Owoso / Mbed 2 deprecated ELEC2645_Project_el18to

Dependencies:   mbed ELEC2645_Project_el18to

Committer:
Tolu__
Date:
Sat May 02 09:52:17 2020 +0000
Revision:
4:536a62daa959
Parent:
3:793a6186b557
Child:
5:3fda09f927b8
rough code, no classes implemented yet

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