Osman Ali / Mbed 2 deprecated MORTAL_KOMBAT_2645

Dependencies:   mbed N5110 ShiftReg Joystick

Committer:
ozy
Date:
Fri Apr 23 22:20:24 2021 +0000
Revision:
9:8c840b08a633
Parent:
8:e2e2eb4ea0ca
Child:
10:e83899f11e8a
Code before removing wait functions

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ozy 0:99b49fd71085 1 #include "Fighter.h"
ozy 0:99b49fd71085 2 #include "mbed.h"
ozy 9:8c840b08a633 3 #include <stdlib.h>
ozy 0:99b49fd71085 4
ozy 0:99b49fd71085 5 Fighter::Fighter() {}
ozy 0:99b49fd71085 6
ozy 3:1d99b6ad4f9e 7 int Fighter::get_x() {
ozy 3:1d99b6ad4f9e 8 return _x;
ozy 3:1d99b6ad4f9e 9 }
ozy 3:1d99b6ad4f9e 10
ozy 3:1d99b6ad4f9e 11 int Fighter::get_y() {
ozy 3:1d99b6ad4f9e 12 return _y;
ozy 3:1d99b6ad4f9e 13 }
ozy 3:1d99b6ad4f9e 14
ozy 7:737fb0c3dbef 15 void Fighter::init() {
ozy 7:737fb0c3dbef 16 // initialize fighter position
ozy 7:737fb0c3dbef 17 set_x(15);
ozy 7:737fb0c3dbef 18 set_y(34);
ozy 7:737fb0c3dbef 19 }
ozy 7:737fb0c3dbef 20
ozy 3:1d99b6ad4f9e 21 void Fighter::set_x(int x) {
ozy 3:1d99b6ad4f9e 22 _x = x;
ozy 3:1d99b6ad4f9e 23 }
ozy 3:1d99b6ad4f9e 24
ozy 3:1d99b6ad4f9e 25 void Fighter::set_y(int y) {
ozy 3:1d99b6ad4f9e 26 _y = y;
ozy 3:1d99b6ad4f9e 27 }
ozy 3:1d99b6ad4f9e 28
ozy 7:737fb0c3dbef 29 void Fighter::add_x(int x) {
ozy 3:1d99b6ad4f9e 30 _x += x;
ozy 3:1d99b6ad4f9e 31 }
ozy 3:1d99b6ad4f9e 32
ozy 7:737fb0c3dbef 33 void Fighter::add_y(int y) {
ozy 3:1d99b6ad4f9e 34 _y += y;
ozy 3:1d99b6ad4f9e 35 }
ozy 3:1d99b6ad4f9e 36
ozy 9:8c840b08a633 37
ozy 7:737fb0c3dbef 38 void Fighter::draw(N5110 &lcd) { // drawing standing Fighter
ozy 0:99b49fd71085 39
ozy 0:99b49fd71085 40 const int standsprite[12][10] = {
ozy 0:99b49fd71085 41 { 0,0,0,0,1,1,0,0,0,0 },
ozy 0:99b49fd71085 42 { 0,0,0,0,1,1,0,0,0,0 },
ozy 0:99b49fd71085 43 { 0,0,1,1,1,1,1,1,0,0 },
ozy 0:99b49fd71085 44 { 0,0,1,0,1,1,0,1,0,0 },
ozy 0:99b49fd71085 45 { 0,1,1,0,1,1,0,1,1,0 },
ozy 0:99b49fd71085 46 { 0,1,0,0,1,1,0,0,1,0 },
ozy 0:99b49fd71085 47 { 0,0,0,1,1,1,1,0,0,0 },
ozy 0:99b49fd71085 48 { 0,0,1,1,0,0,1,1,0,0 },
ozy 0:99b49fd71085 49 { 0,0,1,0,0,0,0,1,0,0 },
ozy 0:99b49fd71085 50 { 0,1,1,0,0,0,0,1,1,0 },
ozy 0:99b49fd71085 51 { 0,1,0,0,0,0,0,0,1,0 },
ozy 0:99b49fd71085 52 { 0,1,0,0,0,0,0,0,1,0 },
ozy 0:99b49fd71085 53 };
ozy 7:737fb0c3dbef 54
ozy 7:737fb0c3dbef 55 lcd.drawSprite(_x,_y,12,10,(int *)standsprite);
ozy 7:737fb0c3dbef 56 }
ozy 7:737fb0c3dbef 57
ozy 7:737fb0c3dbef 58 // ************************************************************************
ozy 7:737fb0c3dbef 59
ozy 7:737fb0c3dbef 60 void Fighter::move_left(N5110 &lcd){
ozy 0:99b49fd71085 61 const int run_left[12][10] = {
ozy 0:99b49fd71085 62 { 0,0,1,1,1,0,0,0,0,0 },
ozy 0:99b49fd71085 63 { 0,0,1,1,1,0,0,0,0,0 },
ozy 0:99b49fd71085 64 { 0,0,0,1,1,1,1,0,0,0 },
ozy 0:99b49fd71085 65 { 0,0,1,0,1,1,1,1,0,0 },
ozy 0:99b49fd71085 66 { 1,1,1,0,1,1,0,1,1,0 },
ozy 0:99b49fd71085 67 { 0,0,0,0,1,1,0,0,0,1 },
ozy 0:99b49fd71085 68 { 0,0,0,1,1,1,1,0,0,0 },
ozy 0:99b49fd71085 69 { 0,0,1,1,0,0,1,1,0,0 },
ozy 0:99b49fd71085 70 { 0,1,1,0,0,0,1,1,1,1 },
ozy 0:99b49fd71085 71 { 0,0,1,1,0,0,0,0,0,0 },
ozy 0:99b49fd71085 72 { 0,0,0,1,1,0,0,0,0,0 },
ozy 0:99b49fd71085 73 { 0,0,0,0,1,1,0,0,0,0 },
ozy 0:99b49fd71085 74 };
ozy 7:737fb0c3dbef 75 lcd.drawSprite(_x,_y,12,10,(int *)run_left);
ozy 7:737fb0c3dbef 76 }
ozy 7:737fb0c3dbef 77
ozy 7:737fb0c3dbef 78 // ************************************************************************
ozy 7:737fb0c3dbef 79
ozy 7:737fb0c3dbef 80 void Fighter::move_left2(N5110 &lcd){
ozy 7:737fb0c3dbef 81 const int midrun_left[12][10] = {
ozy 0:99b49fd71085 82 { 0,0,1,1,1,0,0,0,0,0 },
ozy 0:99b49fd71085 83 { 0,0,1,1,1,0,0,0,0,0 },
ozy 0:99b49fd71085 84 { 0,0,0,1,1,1,1,0,0,0 },
ozy 0:99b49fd71085 85 { 0,0,1,0,1,1,1,1,0,0 },
ozy 0:99b49fd71085 86 { 1,1,1,0,1,1,0,1,1,0 },
ozy 0:99b49fd71085 87 { 0,0,0,0,1,1,0,0,0,1 },
ozy 0:99b49fd71085 88 { 0,0,0,1,1,1,1,0,0,0 },
ozy 0:99b49fd71085 89 { 0,0,1,1,0,0,1,1,0,0 },
ozy 1:3bdadf6f6dbd 90 { 0,0,0,1,1,1,1,0,0,0 },
ozy 1:3bdadf6f6dbd 91 { 0,0,0,0,1,1,0,0,0,0 },
ozy 1:3bdadf6f6dbd 92 { 0,0,0,0,1,0,1,0,0,0 },
ozy 1:3bdadf6f6dbd 93 { 0,0,0,1,0,0,0,1,0,0 },
ozy 0:99b49fd71085 94 };
ozy 7:737fb0c3dbef 95 lcd.drawSprite(_x,_y,12,10,(int *)midrun_left);
ozy 7:737fb0c3dbef 96 }
ozy 7:737fb0c3dbef 97
ozy 7:737fb0c3dbef 98 // ************************************************************************
ozy 7:737fb0c3dbef 99
ozy 7:737fb0c3dbef 100 void Fighter::move_right(N5110 &lcd) {
ozy 7:737fb0c3dbef 101
ozy 0:99b49fd71085 102 const int run_right[12][10] = {
ozy 0:99b49fd71085 103 { 0,0,0,0,0,1,1,1,0,0 },
ozy 0:99b49fd71085 104 { 0,0,0,0,0,1,1,1,0,0 },
ozy 0:99b49fd71085 105 { 0,0,0,1,1,1,1,0,0,0 },
ozy 0:99b49fd71085 106 { 0,0,1,1,1,1,0,1,0,0 },
ozy 0:99b49fd71085 107 { 0,1,1,0,1,1,0,1,1,1 },
ozy 0:99b49fd71085 108 { 1,0,0,0,1,1,0,0,0,0 },
ozy 0:99b49fd71085 109 { 0,0,0,1,1,1,1,0,0,0 },
ozy 0:99b49fd71085 110 { 0,0,1,1,0,0,1,1,0,0 },
ozy 0:99b49fd71085 111 { 1,1,1,1,0,0,0,1,1,0 },
ozy 0:99b49fd71085 112 { 0,0,0,0,0,0,1,1,0,0 },
ozy 0:99b49fd71085 113 { 0,0,0,0,0,1,1,0,0,0 },
ozy 0:99b49fd71085 114 { 0,0,0,0,1,1,0,0,0,0 },
ozy 0:99b49fd71085 115 };
ozy 7:737fb0c3dbef 116 lcd.drawSprite(_x,_y,12,10,(int *)run_right);
ozy 7:737fb0c3dbef 117 }
ozy 0:99b49fd71085 118
ozy 7:737fb0c3dbef 119 // ************************************************************************
ozy 7:737fb0c3dbef 120
ozy 7:737fb0c3dbef 121 void Fighter::move_right2(N5110 &lcd) {
ozy 7:737fb0c3dbef 122 const int midrun_right[12][10] = {
ozy 0:99b49fd71085 123 { 0,0,0,0,0,1,1,1,0,0 },
ozy 0:99b49fd71085 124 { 0,0,0,0,0,1,1,1,0,0 },
ozy 0:99b49fd71085 125 { 0,0,0,1,1,1,1,0,0,0 },
ozy 0:99b49fd71085 126 { 0,0,1,1,1,1,0,1,0,0 },
ozy 0:99b49fd71085 127 { 0,1,1,0,1,1,0,1,1,1 },
ozy 0:99b49fd71085 128 { 1,0,0,0,1,1,0,0,0,0 },
ozy 0:99b49fd71085 129 { 0,0,0,1,1,1,1,0,0,0 },
ozy 0:99b49fd71085 130 { 0,0,1,1,0,0,1,1,0,0 },
ozy 0:99b49fd71085 131 { 0,0,0,1,1,1,1,0,0,0 },
ozy 0:99b49fd71085 132 { 0,0,0,0,1,1,0,0,0,0 },
ozy 1:3bdadf6f6dbd 133 { 0,0,0,1,0,1,0,0,0,0 },
ozy 0:99b49fd71085 134 { 0,0,1,0,0,0,1,0,0,0 },
ozy 0:99b49fd71085 135 };
ozy 7:737fb0c3dbef 136
ozy 7:737fb0c3dbef 137 lcd.drawSprite(_x,_y,12,10,(int *)midrun_right);
ozy 7:737fb0c3dbef 138 }
ozy 7:737fb0c3dbef 139
ozy 7:737fb0c3dbef 140 // ************************************************************************
ozy 7:737fb0c3dbef 141
ozy 7:737fb0c3dbef 142 void Fighter::kick_right(N5110 &lcd) {
ozy 7:737fb0c3dbef 143 const int kick[12][10] = {
ozy 0:99b49fd71085 144 { 0,1,1,0,0,0,0,0,0,0 },
ozy 0:99b49fd71085 145 { 0,1,1,0,1,1,0,0,0,0 },
ozy 0:99b49fd71085 146 { 0,0,0,1,1,1,1,0,0,1 },
ozy 0:99b49fd71085 147 { 0,0,1,1,1,0,0,0,1,1 },
ozy 0:99b49fd71085 148 { 0,1,1,1,1,1,1,1,0,0 },
ozy 0:99b49fd71085 149 { 0,1,0,0,1,1,1,0,0,0 },
ozy 0:99b49fd71085 150 { 1,1,0,0,1,1,0,0,0,0 },
ozy 0:99b49fd71085 151 { 0,0,0,0,1,0,0,0,0,0 },
ozy 0:99b49fd71085 152 { 0,0,0,1,1,0,0,0,0,0 },
ozy 0:99b49fd71085 153 { 0,0,0,1,0,0,0,0,0,0 },
ozy 0:99b49fd71085 154 { 0,0,1,1,0,0,0,0,0,0 },
ozy 0:99b49fd71085 155 { 0,0,1,1,0,0,0,0,0,0 },
ozy 0:99b49fd71085 156 };
ozy 7:737fb0c3dbef 157 lcd.drawSprite(_x,_y,12,10,(int *)kick);
ozy 7:737fb0c3dbef 158 }
ozy 7:737fb0c3dbef 159
ozy 7:737fb0c3dbef 160 // ************************************************************************
ozy 7:737fb0c3dbef 161
ozy 7:737fb0c3dbef 162 void Fighter::kick_left(N5110 &lcd) {
ozy 7:737fb0c3dbef 163 const int kick[12][10] = {
ozy 0:99b49fd71085 164 { 0,0,0,0,0,0,0,1,1,0 },
ozy 0:99b49fd71085 165 { 0,0,0,0,1,1,0,1,1,0 },
ozy 0:99b49fd71085 166 { 1,0,0,1,1,1,1,0,0,0 },
ozy 0:99b49fd71085 167 { 1,1,0,0,0,1,1,1,0,0 },
ozy 0:99b49fd71085 168 { 0,0,1,1,1,1,1,1,1,0 },
ozy 0:99b49fd71085 169 { 0,0,0,1,1,1,0,0,1,0 },
ozy 0:99b49fd71085 170 { 0,0,0,0,1,1,0,0,1,1 },
ozy 0:99b49fd71085 171 { 0,0,0,0,0,1,0,0,0,0 },
ozy 0:99b49fd71085 172 { 0,0,0,0,1,1,0,0,0,0 },
ozy 0:99b49fd71085 173 { 0,0,0,0,1,0,0,0,0,0 },
ozy 0:99b49fd71085 174 { 0,0,0,0,1,1,0,0,0,0 },
ozy 0:99b49fd71085 175 { 0,0,0,0,1,1,0,0,0,0 },
ozy 0:99b49fd71085 176 };
ozy 7:737fb0c3dbef 177 lcd.drawSprite(_x,_y,12,10,(int *)kick);
ozy 7:737fb0c3dbef 178 }
ozy 7:737fb0c3dbef 179
ozy 7:737fb0c3dbef 180 // ************************************************************************
ozy 7:737fb0c3dbef 181
ozy 7:737fb0c3dbef 182 void Fighter::punch_right(N5110 &lcd) {
ozy 7:737fb0c3dbef 183 const int punch[12][10] = {
ozy 0:99b49fd71085 184 { 0,0,0,0,1,1,0,0,0,1 },
ozy 0:99b49fd71085 185 { 0,0,0,0,1,1,0,0,1,1 },
ozy 0:99b49fd71085 186 { 0,0,1,1,1,1,0,1,1,0 },
ozy 0:99b49fd71085 187 { 0,1,0,0,1,1,1,1,0,0 },
ozy 0:99b49fd71085 188 { 0,1,1,0,1,1,0,0,0,0 },
ozy 0:99b49fd71085 189 { 0,0,0,0,1,1,0,0,0,0 },
ozy 0:99b49fd71085 190 { 0,0,0,1,1,1,1,0,0,0 },
ozy 0:99b49fd71085 191 { 0,0,0,1,0,0,1,1,0,0 },
ozy 0:99b49fd71085 192 { 0,0,1,1,0,0,1,1,0,0 },
ozy 0:99b49fd71085 193 { 0,0,1,0,0,0,1,0,0,0 },
ozy 0:99b49fd71085 194 { 0,1,1,0,0,0,1,0,0,0 },
ozy 0:99b49fd71085 195 { 1,1,0,0,0,1,1,0,0,0 },
ozy 0:99b49fd71085 196 };
ozy 7:737fb0c3dbef 197 lcd.drawSprite(_x,_y,12,10,(int *)punch);
ozy 7:737fb0c3dbef 198 }
ozy 7:737fb0c3dbef 199
ozy 7:737fb0c3dbef 200 // ************************************************************************
ozy 7:737fb0c3dbef 201
ozy 7:737fb0c3dbef 202 void Fighter::punch_left(N5110 &lcd) {
ozy 7:737fb0c3dbef 203 const int punch[12][10] = {
ozy 0:99b49fd71085 204 { 1,0,0,0,1,1,0,0,0,0 },
ozy 0:99b49fd71085 205 { 1,1,0,0,1,1,0,0,0,0 },
ozy 0:99b49fd71085 206 { 0,1,1,0,1,1,1,1,0,0 },
ozy 0:99b49fd71085 207 { 0,0,1,1,1,1,0,0,1,0 },
ozy 0:99b49fd71085 208 { 0,0,0,0,1,1,0,1,1,0 },
ozy 0:99b49fd71085 209 { 0,0,0,0,1,1,0,0,0,0 },
ozy 0:99b49fd71085 210 { 0,0,0,1,1,1,1,0,0,0 },
ozy 0:99b49fd71085 211 { 0,0,1,1,0,0,1,0,0,0 },
ozy 0:99b49fd71085 212 { 0,0,1,1,0,0,1,1,0,0 },
ozy 0:99b49fd71085 213 { 0,0,0,1,0,0,0,1,0,0 },
ozy 0:99b49fd71085 214 { 0,0,0,1,0,0,0,1,1,0 },
ozy 0:99b49fd71085 215 { 0,0,0,1,1,0,0,0,1,1 },
ozy 0:99b49fd71085 216 };
ozy 7:737fb0c3dbef 217 lcd.drawSprite(_x,_y,12,10,(int *)punch);
ozy 7:737fb0c3dbef 218 }
ozy 7:737fb0c3dbef 219
ozy 7:737fb0c3dbef 220 // ************************************************************************
ozy 7:737fb0c3dbef 221
ozy 7:737fb0c3dbef 222 void Fighter::guard(N5110 &lcd) {
ozy 0:99b49fd71085 223 const int guard[12][10] = {
ozy 0:99b49fd71085 224 { 0,0,0,0,1,1,0,0,0,0 },
ozy 0:99b49fd71085 225 { 0,0,0,0,1,1,0,0,0,0 },
ozy 0:99b49fd71085 226 { 0,0,0,1,1,1,1,0,0,0 },
ozy 0:99b49fd71085 227 { 0,0,1,0,1,1,0,1,0,0 },
ozy 0:99b49fd71085 228 { 0,0,1,0,1,1,0,1,0,0 },
ozy 0:99b49fd71085 229 { 0,0,0,1,1,1,1,0,0,0 },
ozy 0:99b49fd71085 230 { 0,0,0,0,1,1,0,0,0,0 },
ozy 0:99b49fd71085 231 { 0,0,0,1,1,1,1,0,0,0 },
ozy 0:99b49fd71085 232 { 0,0,1,1,1,1,1,1,0,0 },
ozy 0:99b49fd71085 233 { 0,1,0,0,0,0,0,0,1,0 },
ozy 0:99b49fd71085 234 { 0,1,0,0,0,0,0,0,1,0 },
ozy 0:99b49fd71085 235 { 0,1,0,0,0,0,0,0,1,0 },
ozy 0:99b49fd71085 236 };
ozy 7:737fb0c3dbef 237 lcd.drawSprite(_x,_y,12,10,(int *)guard);
ozy 7:737fb0c3dbef 238 }
ozy 6:a1a7dc264fed 239
ozy 7:737fb0c3dbef 240 void Fighter::move_fighter(N5110 &lcd, DigitalIn &buttonA, DigitalIn &buttonB, DigitalIn &buttonC, DigitalIn &buttonD, AnalogIn &joy_v, AnalogIn &joy_h) {
ozy 6:a1a7dc264fed 241 // getting joystick coordinates using read() function
ozy 6:a1a7dc264fed 242 // joystick centered at (0.50,0.50) with utmost left at (1.00,0.50) and utmost right being (0.00,0.50)
ozy 6:a1a7dc264fed 243 // read each of the pins
ozy 7:737fb0c3dbef 244 float x = joy_h.read();
ozy 7:737fb0c3dbef 245 float y = joy_v.read();
ozy 8:e2e2eb4ea0ca 246 // printf("x = %.2f | y = %.2f \n",x,y);
ozy 7:737fb0c3dbef 247
ozy 7:737fb0c3dbef 248 int x_pos = get_x();
ozy 8:e2e2eb4ea0ca 249 // printf("fighter x pos = %i \n", x_pos);
ozy 7:737fb0c3dbef 250
ozy 6:a1a7dc264fed 251 /*
ozy 6:a1a7dc264fed 252 Code idea:
ozy 6:a1a7dc264fed 253 if joystick is not moved , display standing sprite
ozy 6:a1a7dc264fed 254 if joystick is moved right, toggle between runright and midrunright
ozy 6:a1a7dc264fed 255 if joystick is moved left, toggle between runleft and midrunleft
ozy 6:a1a7dc264fed 256 */
ozy 7:737fb0c3dbef 257 if(x > 0.48 && x < 0.52) { // joystick not moved - we use ± 0.02 to take account of fluctuation in joystick tolerance and noice on ADC
ozy 7:737fb0c3dbef 258 draw(lcd); // draw standing fighter
ozy 6:a1a7dc264fed 259 lcd.refresh();
ozy 6:a1a7dc264fed 260 wait(0.3);
ozy 6:a1a7dc264fed 261
ozy 6:a1a7dc264fed 262 // Preform kick move if user presses button A
ozy 6:a1a7dc264fed 263 if (buttonA.read() == 1) {
ozy 7:737fb0c3dbef 264 kick_right(lcd); // draw kick on same coordinates as the standing sprite
ozy 6:a1a7dc264fed 265 lcd.refresh();
ozy 6:a1a7dc264fed 266 wait(0.3);
ozy 6:a1a7dc264fed 267 }
ozy 6:a1a7dc264fed 268 // Preform punch move if user presses button B
ozy 6:a1a7dc264fed 269 if (buttonB.read() == 1) {
ozy 7:737fb0c3dbef 270 punch_right(lcd); // draw kick
ozy 6:a1a7dc264fed 271 lcd.refresh();
ozy 6:a1a7dc264fed 272 wait(0.3);
ozy 6:a1a7dc264fed 273 }
ozy 6:a1a7dc264fed 274 // Guard if user presses button C
ozy 8:e2e2eb4ea0ca 275 if (buttonC.read() == 1) {
ozy 7:737fb0c3dbef 276 guard(lcd); // draw guard move frame
ozy 8:e2e2eb4ea0ca 277 wait(0.5);
ozy 6:a1a7dc264fed 278 lcd.refresh();
ozy 6:a1a7dc264fed 279 wait(0.3);
ozy 6:a1a7dc264fed 280 }
ozy 7:737fb0c3dbef 281 }
ozy 7:737fb0c3dbef 282 else if(x < 0.48) { // joystick moved to the right
ozy 6:a1a7dc264fed 283 // print the move_right animation, refresh, then print the 2nd move_right animation (toggling animations to create moving legs!)
ozy 7:737fb0c3dbef 284 add_x(5); // increment by 5
ozy 7:737fb0c3dbef 285 move_right(lcd);
ozy 6:a1a7dc264fed 286 lcd.refresh();
ozy 6:a1a7dc264fed 287 wait(0.1);
ozy 7:737fb0c3dbef 288 move_right2(lcd);
ozy 6:a1a7dc264fed 289 lcd.refresh();
ozy 6:a1a7dc264fed 290 wait(0.08);
ozy 7:737fb0c3dbef 291
ozy 7:737fb0c3dbef 292 if (x_pos >= 65) { // code to stop fighter moving out of lcd screen
ozy 7:737fb0c3dbef 293 add_x(-5);
ozy 6:a1a7dc264fed 294 }
ozy 7:737fb0c3dbef 295
ozy 7:737fb0c3dbef 296
ozy 6:a1a7dc264fed 297 // kick if user presses button A
ozy 6:a1a7dc264fed 298 if (buttonA.read() == 1) {
ozy 7:737fb0c3dbef 299 kick_right(lcd);
ozy 6:a1a7dc264fed 300 lcd.refresh();
ozy 6:a1a7dc264fed 301 wait(0.3);
ozy 7:737fb0c3dbef 302 }
ozy 6:a1a7dc264fed 303 // Preform punch move if user presses button B
ozy 6:a1a7dc264fed 304 if (buttonB.read() == 1) {
ozy 7:737fb0c3dbef 305 punch_right(lcd); // draw kick on same coordinates as the sprite
ozy 6:a1a7dc264fed 306 lcd.refresh();
ozy 6:a1a7dc264fed 307 wait(0.3);
ozy 6:a1a7dc264fed 308 }
ozy 6:a1a7dc264fed 309 // Guard if user presses button C
ozy 8:e2e2eb4ea0ca 310 if (buttonC.read() == 1) { // we use while not if here because user would hold to guard
ozy 7:737fb0c3dbef 311 guard(lcd); // draw kick on same coordinates as the sprite
ozy 8:e2e2eb4ea0ca 312 wait(0.5);
ozy 6:a1a7dc264fed 313 lcd.refresh();
ozy 6:a1a7dc264fed 314 wait(0.3);
ozy 6:a1a7dc264fed 315 }
ozy 9:8c840b08a633 316 if (buttonD.read() == 1) { // code for fighter to jump while running
ozy 9:8c840b08a633 317 add_y(-13); // temporarily increase y coordinates
ozy 9:8c840b08a633 318 add_x(10); // increment by 10
ozy 9:8c840b08a633 319 move_right(lcd);
ozy 9:8c840b08a633 320 wait(0.15);
ozy 9:8c840b08a633 321 lcd.refresh();
ozy 9:8c840b08a633 322 add_y(13); // return back to ground
ozy 9:8c840b08a633 323 draw(lcd);
ozy 9:8c840b08a633 324 wait(0.15);
ozy 9:8c840b08a633 325 lcd.refresh();
ozy 9:8c840b08a633 326 }
ozy 6:a1a7dc264fed 327 }
ozy 6:a1a7dc264fed 328
ozy 7:737fb0c3dbef 329 else if(x > 0.52) { // joystick moved to the left
ozy 7:737fb0c3dbef 330 add_x(-5); // decrement left by 5
ozy 7:737fb0c3dbef 331 move_left(lcd);
ozy 7:737fb0c3dbef 332 lcd.refresh();
ozy 7:737fb0c3dbef 333 wait(0.1);
ozy 7:737fb0c3dbef 334 move_left2(lcd);
ozy 7:737fb0c3dbef 335 lcd.refresh();
ozy 7:737fb0c3dbef 336 wait(0.08);
ozy 0:99b49fd71085 337
ozy 7:737fb0c3dbef 338 if (x_pos <= 6) { // code to stop fighter moving out of lcd screen
ozy 7:737fb0c3dbef 339 add_x(5);
ozy 7:737fb0c3dbef 340 }
ozy 0:99b49fd71085 341
ozy 7:737fb0c3dbef 342 // kick if user presses button A
ozy 7:737fb0c3dbef 343 if (buttonA.read() == 1) {
ozy 7:737fb0c3dbef 344 kick_left(lcd);
ozy 7:737fb0c3dbef 345 lcd.refresh();
ozy 7:737fb0c3dbef 346 wait(0.3);
ozy 7:737fb0c3dbef 347 }
ozy 7:737fb0c3dbef 348 if (buttonB.read() == 1) {
ozy 7:737fb0c3dbef 349 punch_left(lcd); // draw punch on same coordinates as the sprite
ozy 7:737fb0c3dbef 350 lcd.refresh();
ozy 7:737fb0c3dbef 351 wait(0.3);
ozy 7:737fb0c3dbef 352 }
ozy 7:737fb0c3dbef 353 // Guard if user presses button C
ozy 8:e2e2eb4ea0ca 354 if (buttonC.read() == 1) {
ozy 8:e2e2eb4ea0ca 355 guard(lcd);
ozy 8:e2e2eb4ea0ca 356 wait(0.5);
ozy 7:737fb0c3dbef 357 lcd.refresh();
ozy 7:737fb0c3dbef 358 wait(0.3);
ozy 7:737fb0c3dbef 359 }
ozy 9:8c840b08a633 360 if (buttonD.read() == 1) { // code for fighter to jump while running
ozy 9:8c840b08a633 361 add_y(-13); // temporarily increase y coordinates
ozy 9:8c840b08a633 362 add_x(-10); // decrement by 10
ozy 9:8c840b08a633 363 move_left(lcd);
ozy 9:8c840b08a633 364 wait(0.15);
ozy 9:8c840b08a633 365 lcd.refresh();
ozy 9:8c840b08a633 366 add_y(13); // return back to ground
ozy 9:8c840b08a633 367 draw(lcd);
ozy 9:8c840b08a633 368 wait(0.15);
ozy 9:8c840b08a633 369 lcd.refresh();
ozy 9:8c840b08a633 370 }
ozy 7:737fb0c3dbef 371 }
ozy 7:737fb0c3dbef 372 }