Mortal Kombat Game ELEC2645
Dependencies: mbed N5110 ShiftReg Joystick
main.cpp@14:7f23841685ad, 2021-04-26 (annotated)
- Committer:
- ozy
- Date:
- Mon Apr 26 22:19:28 2021 +0000
- Revision:
- 14:7f23841685ad
- Parent:
- 12:b4477a312158
- Child:
- 18:22bda659c70a
Code after enemy move around success
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ozy | 0:99b49fd71085 | 1 | ///////////// includes ///////////////////// |
ozy | 0:99b49fd71085 | 2 | #include "mbed.h" |
ozy | 0:99b49fd71085 | 3 | #include "N5110.h" |
ozy | 0:99b49fd71085 | 4 | #include "Fighter.h" |
ozy | 0:99b49fd71085 | 5 | #include "Joystick.h" |
ozy | 0:99b49fd71085 | 6 | #include "Menu.h" |
ozy | 9:8c840b08a633 | 7 | #include "Enemy.h" |
ozy | 6:a1a7dc264fed | 8 | #include "GameEngine.h" |
ozy | 0:99b49fd71085 | 9 | ///////////// defines ///////////////////// |
ozy | 0:99b49fd71085 | 10 | #define GROUND 34 |
ozy | 9:8c840b08a633 | 11 | ///////////// objects ///////////////////// |
ozy | 6:a1a7dc264fed | 12 | GameEngine game; |
ozy | 3:1d99b6ad4f9e | 13 | Fighter fighter; |
ozy | 0:99b49fd71085 | 14 | Menu menu; |
ozy | 7:737fb0c3dbef | 15 | Enemy enemy; |
ozy | 3:1d99b6ad4f9e | 16 | DigitalIn buttonA(p29); |
ozy | 3:1d99b6ad4f9e | 17 | DigitalIn buttonB(p28); |
ozy | 3:1d99b6ad4f9e | 18 | DigitalIn buttonC(p27); |
ozy | 3:1d99b6ad4f9e | 19 | DigitalIn buttonD(p26); |
ozy | 0:99b49fd71085 | 20 | AnalogIn joy_v(p20); |
ozy | 0:99b49fd71085 | 21 | AnalogIn joy_h(p19); |
ozy | 0:99b49fd71085 | 22 | N5110 lcd(p14,p8,p9,p10,p11,p13,p21); |
ozy | 0:99b49fd71085 | 23 | BusOut leds(LED4,LED3,LED2,LED1); |
ozy | 0:99b49fd71085 | 24 | Serial pc(USBTX, USBRX); |
ozy | 0:99b49fd71085 | 25 | //////////// functions //////////////////// |
ozy | 0:99b49fd71085 | 26 | void init(); |
ozy | 0:99b49fd71085 | 27 | void menu_screen(); |
ozy | 0:99b49fd71085 | 28 | void move_sprite(); |
ozy | 0:99b49fd71085 | 29 | void draw_background(); |
ozy | 1:3bdadf6f6dbd | 30 | void move_enemy(); |
ozy | 3:1d99b6ad4f9e | 31 | |
ozy | 0:99b49fd71085 | 32 | |
ozy | 0:99b49fd71085 | 33 | int main() { |
ozy | 0:99b49fd71085 | 34 | init(); |
ozy | 3:1d99b6ad4f9e | 35 | // menu_screen(); |
ozy | 0:99b49fd71085 | 36 | while(1) { |
ozy | 2:1703eb2a68f8 | 37 | lcd.clear(); |
ozy | 3:1d99b6ad4f9e | 38 | draw_background(); |
ozy | 10:e83899f11e8a | 39 | // fighter.move_fighter(lcd, buttonA, buttonB, buttonC, buttonD, joy_v, joy_h); |
ozy | 10:e83899f11e8a | 40 | game.start(lcd, buttonA, buttonB, buttonC, buttonD, joy_v, joy_h); |
ozy | 10:e83899f11e8a | 41 | lcd.refresh(); |
ozy | 12:b4477a312158 | 42 | wait(0.22); |
ozy | 0:99b49fd71085 | 43 | } |
ozy | 0:99b49fd71085 | 44 | } |
ozy | 0:99b49fd71085 | 45 | |
ozy | 0:99b49fd71085 | 46 | void init() { // initialize all devices |
ozy | 0:99b49fd71085 | 47 | lcd.init(); |
ozy | 0:99b49fd71085 | 48 | lcd.setContrast(0.5); |
ozy | 10:e83899f11e8a | 49 | game.init(); |
ozy | 10:e83899f11e8a | 50 | // fighter.init(); |
ozy | 0:99b49fd71085 | 51 | } |
ozy | 0:99b49fd71085 | 52 | |
ozy | 3:1d99b6ad4f9e | 53 | void menu_screen() { |
ozy | 3:1d99b6ad4f9e | 54 | menu.main_menu(lcd); // printing the menu screen |
ozy | 0:99b49fd71085 | 55 | wait(3.5f); |
ozy | 0:99b49fd71085 | 56 | menu.created_by(lcd); // 2nd menu screen |
ozy | 0:99b49fd71085 | 57 | wait(3.5f); |
ozy | 1:3bdadf6f6dbd | 58 | menu.homescreen(lcd); // print homescreen |
ozy | 1:3bdadf6f6dbd | 59 | menu.menu_selection(lcd, buttonA, buttonB, buttonC, buttonD); // function to ask user to select menu item |
ozy | 0:99b49fd71085 | 60 | } |
ozy | 0:99b49fd71085 | 61 | |
ozy | 0:99b49fd71085 | 62 | |
ozy | 0:99b49fd71085 | 63 | void draw_background() { |
ozy | 0:99b49fd71085 | 64 | // lcd.drawLine(x1, y1, x2, y2, type); |
ozy | 0:99b49fd71085 | 65 | lcd.drawLine(0,46,82,46,1); // draws ground platform |
ozy | 0:99b49fd71085 | 66 | lcd.drawLine(0,46,0,25,1); // draws first side wall |
ozy | 0:99b49fd71085 | 67 | lcd.drawLine(82,46,82,25,1); // draws second side wall |
ozy | 0:99b49fd71085 | 68 | lcd.refresh(); |
ozy | 0:99b49fd71085 | 69 | } |
ozy | 0:99b49fd71085 | 70 | |
ozy | 0:99b49fd71085 | 71 | |
ozy | 3:1d99b6ad4f9e | 72 | |
ozy | 3:1d99b6ad4f9e | 73 | /* |
ozy | 6:a1a7dc264fed | 74 | // IGNORE THIS FUNCTION FOR NOW (look at fighter class function 'draw') |
ozy | 1:3bdadf6f6dbd | 75 | void move_enemy() { |
ozy | 3:1d99b6ad4f9e | 76 | // read each of the pins |
ozy | 1:3bdadf6f6dbd | 77 | float x = joy_h.read(); |
ozy | 1:3bdadf6f6dbd | 78 | float y = joy_v.read(); |
ozy | 1:3bdadf6f6dbd | 79 | printf("x = %.2f | y = %.2f \n",x,y); |
ozy | 5:889ad974b64d | 80 | // get x position of enemy |
ozy | 5:889ad974b64d | 81 | int x_pos = enemy.get_x(); |
ozy | 5:889ad974b64d | 82 | printf("enemy x pos = %i \n", x_pos); |
ozy | 3:1d99b6ad4f9e | 83 | |
ozy | 4:6b1de03716d6 | 84 | 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 | 5:889ad974b64d | 85 | enemy.draw(lcd); // draw enemy |
ozy | 1:3bdadf6f6dbd | 86 | lcd.refresh(); |
ozy | 5:889ad974b64d | 87 | wait(0.3); |
ozy | 3:1d99b6ad4f9e | 88 | // Preform kick move if user presses button A |
ozy | 5:889ad974b64d | 89 | if (buttonA.read() == 1) { |
ozy | 5:889ad974b64d | 90 | enemy.kick_right(lcd); // draw kick on same coordinates as the standing sprite |
ozy | 1:3bdadf6f6dbd | 91 | lcd.refresh(); |
ozy | 5:889ad974b64d | 92 | wait(0.3); |
ozy | 1:3bdadf6f6dbd | 93 | } |
ozy | 1:3bdadf6f6dbd | 94 | // Preform punch move if user presses button B |
ozy | 5:889ad974b64d | 95 | if (buttonB.read() == 1) { |
ozy | 5:889ad974b64d | 96 | enemy.sword_right(lcd); // draw sword move on same coordinates as the standing sprite |
ozy | 1:3bdadf6f6dbd | 97 | lcd.refresh(); |
ozy | 5:889ad974b64d | 98 | wait(0.3); |
ozy | 1:3bdadf6f6dbd | 99 | } |
ozy | 1:3bdadf6f6dbd | 100 | } |
ozy | 1:3bdadf6f6dbd | 101 | else if(x < 0.48) { // joystick moved to the right |
ozy | 5:889ad974b64d | 102 | enemy.add_x(5); // increment by 5 |
ozy | 1:3bdadf6f6dbd | 103 | // print the move_right animation, refresh, then print the 2nd move_right animation (toggling animations to create moving legs!) |
ozy | 5:889ad974b64d | 104 | enemy.move_right(lcd); // draw standing fighter, multiply by speed -69 (negative to correct for direction!) |
ozy | 1:3bdadf6f6dbd | 105 | lcd.refresh(); |
ozy | 1:3bdadf6f6dbd | 106 | wait(0.1); |
ozy | 5:889ad974b64d | 107 | enemy.move_right2(lcd); |
ozy | 1:3bdadf6f6dbd | 108 | lcd.refresh(); |
ozy | 1:3bdadf6f6dbd | 109 | wait(0.08); |
ozy | 5:889ad974b64d | 110 | |
ozy | 5:889ad974b64d | 111 | if (x_pos >= 65) { // code to stop enemy moving out of lcd screen |
ozy | 5:889ad974b64d | 112 | enemy.add_x(-5); |
ozy | 5:889ad974b64d | 113 | } |
ozy | 5:889ad974b64d | 114 | |
ozy | 3:1d99b6ad4f9e | 115 | // kick if user presses button A |
ozy | 5:889ad974b64d | 116 | if (buttonA.read() == 1) { |
ozy | 5:889ad974b64d | 117 | enemy.kick_right(lcd); |
ozy | 5:889ad974b64d | 118 | lcd.refresh(); |
ozy | 5:889ad974b64d | 119 | wait(0.3); |
ozy | 5:889ad974b64d | 120 | } |
ozy | 1:3bdadf6f6dbd | 121 | // Preform punch move if user presses button B |
ozy | 5:889ad974b64d | 122 | if (buttonB.read() == 1) { |
ozy | 5:889ad974b64d | 123 | enemy.sword_right(lcd); // draw kick on same coordinates as the sprite |
ozy | 1:3bdadf6f6dbd | 124 | lcd.refresh(); |
ozy | 5:889ad974b64d | 125 | wait(0.3); |
ozy | 1:3bdadf6f6dbd | 126 | } |
ozy | 1:3bdadf6f6dbd | 127 | } |
ozy | 1:3bdadf6f6dbd | 128 | else if(x > 0.52) { // joystick moved to the left |
ozy | 5:889ad974b64d | 129 | enemy.add_x(-5); // decrement by 5 |
ozy | 5:889ad974b64d | 130 | enemy.move_left(lcd); |
ozy | 1:3bdadf6f6dbd | 131 | lcd.refresh(); |
ozy | 1:3bdadf6f6dbd | 132 | wait(0.1); |
ozy | 5:889ad974b64d | 133 | enemy.move_left2(lcd); |
ozy | 1:3bdadf6f6dbd | 134 | lcd.refresh(); |
ozy | 1:3bdadf6f6dbd | 135 | wait(0.08); |
ozy | 5:889ad974b64d | 136 | |
ozy | 5:889ad974b64d | 137 | |
ozy | 5:889ad974b64d | 138 | if (x_pos <= 6) { // code to stop enemy moving out of lcd screen |
ozy | 5:889ad974b64d | 139 | enemy.add_x(5); |
ozy | 5:889ad974b64d | 140 | } |
ozy | 3:1d99b6ad4f9e | 141 | |
ozy | 3:1d99b6ad4f9e | 142 | // kick if user presses button A |
ozy | 5:889ad974b64d | 143 | if (buttonA.read() == 1) { |
ozy | 5:889ad974b64d | 144 | enemy.kick_left(lcd); |
ozy | 14:7f23841685ad | 145 | |
ozy | 1:3bdadf6f6dbd | 146 | } |
ozy | 5:889ad974b64d | 147 | if (buttonB.read() == 1) { |
ozy | 5:889ad974b64d | 148 | enemy.sword_left(lcd); // draw kick on same coordinates as the sprite |
ozy | 14:7f23841685ad | 149 | |
ozy | 1:3bdadf6f6dbd | 150 | } |
ozy | 5:889ad974b64d | 151 | } |
ozy | 0:99b49fd71085 | 152 | } |
ozy | 6:a1a7dc264fed | 153 | */ |
ozy | 0:99b49fd71085 | 154 | |
ozy | 2:1703eb2a68f8 | 155 |