Mortal Kombat Game ELEC2645

Dependencies:   mbed N5110 ShiftReg Joystick

Revision:
16:4a1d916d97c5
Parent:
15:7fd2d34f3be5
Child:
17:928edcdd1058
--- a/GameEngine.cpp	Mon Apr 26 23:58:35 2021 +0000
+++ b/GameEngine.cpp	Tue Apr 27 22:46:33 2021 +0000
@@ -12,6 +12,7 @@
     enemy_AI(lcd);
     // function that draws fighter and allows user to control it 
     _fighter.move_fighter(lcd, buttonA, buttonB, buttonC, buttonD, joy_v, joy_h);
+    check_collision(lcd, buttonC);
     lcd.refresh();
 
 }
@@ -30,20 +31,20 @@
         input = 1;
         }
     else {input = 0;}
-    if (diff >= -12 && diff <= 12){ // randomize enemy fight moves only in fighting range
+    if (diff >= -10 && diff <= 10){ // randomize enemy fight moves only in fighting range
         _enemy.draw(lcd, input);
         _enemy.randomize_moves(lcd, input);
         // check for collision (without guard ON)
         // function to reduce enemy health or fighter health
-        // check_enemy_dead and deploy next god 
+        // check_end_of_game 
         }
     // code for enemy to move to fighter if he is to the right 
-    else if ((enemy_pos < fighter_pos) && (diff > 12) && (rand()%2 > 0)) {
+    else if ((enemy_pos < fighter_pos) && (diff > 10) && (rand()%3 < 1)) {
         _enemy.add_x(5);
         _enemy.move_right(lcd);
     }
     // code for enemy to move to fighter if he is to the left 
-    else if ((enemy_pos > fighter_pos) && (diff < 12) && (rand()%2 > 0)) {
+    else if ((enemy_pos > fighter_pos) && (diff < 10) && (rand()%3 < 1)) {
         _enemy.add_x(-5);
         _enemy.move_left(lcd);
     }
@@ -52,10 +53,22 @@
     }
 }
 
-void GameEngine::check_collision(N5110 &lcd) {
-    
-    // int fighter_pos = _fighter.get_x();
-    // int enemy_pos = _enemy.get_x();
-    // int diff = fighter_pos - enemy_pos;
+void GameEngine::check_collision(N5110 &lcd, DigitalIn &buttonC) {
+    int fighter_pos = _fighter.get_x();
+    int enemy_pos = _enemy.get_x();
+    int diff = fighter_pos - enemy_pos;
+    int input;
+    if (diff > 0) {
+        input = 1;
+        }
+    else {input = 0;}
+    int fighter_y = _fighter.get_y(); // getting fighter y pos to avoid enemy hitting fighter while fighter is above him 
+    // code to check enemy collision
+    //     check in fight range             check enemy fight move        check fighter is not guarding     check fighter is on gound
+    if ((diff >= -10 && diff <= 10) && (_enemy.randomize_moves(lcd, input)) && (buttonC.read() != 1) && (fighter_y == 34)) {
+        printf("enemy collision detected!");
+        printf("random move = %i", _enemy.randomize_moves(lcd, input));
+    }
+    // code to check fight collision
 }