Mortal Kombat Game ELEC2645

Dependencies:   mbed N5110 ShiftReg Joystick

GameEngine.cpp

Committer:
ozy
Date:
2021-04-26
Revision:
14:7f23841685ad
Parent:
13:eaf070d5f599
Child:
15:7fd2d34f3be5

File content as of revision 14:7f23841685ad:

#include "GameEngine.h"

GameEngine::GameEngine() {}

void GameEngine::init(){
    _fighter.init();
    _enemy.init();
}

void GameEngine::start(N5110 &lcd, DigitalIn &buttonA, DigitalIn &buttonB, DigitalIn &buttonC, DigitalIn &buttonD, AnalogIn  &joy_v, AnalogIn  &joy_h) {
    // initializing and drawing enemy
    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);
    lcd.refresh();

}

void GameEngine::enemy_AI(N5110 &lcd) {
    int fighter_pos = _fighter.get_x();
    printf("f pos = %i \n", fighter_pos);
    int enemy_pos = _enemy.get_x();
    printf("e pos = %i \n", enemy_pos);
    
    int input = 0;
    int diff = fighter_pos - enemy_pos;
    printf("diff = %i \n", diff);
    // if difference is positive, fighter is to the right so enemy must look right (if input is 1, enemy looks right) and vice versa
    if (diff > 0) {
        input = 1;
        }
    else {input = 0;}
    if (diff >= -15 && diff <= 15){ // 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 
        }
    // code for enemy to move to fighter if he is to the right 
    else if ((enemy_pos < fighter_pos) && (diff > 15) && (rand()%2 > 0)) {
        _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 < 15) && (rand()%2 > 0)) {
        _enemy.add_x(-5);
        _enemy.move_left(lcd);
    }
    else {
        _enemy.draw(lcd, input);
    }
}
/*
void GameEngine::enemy_move_around(N5110 &lcd) {
    int fighter_pos = _fighter.get_x();
    printf("f pos = %i \n", fighter_pos);
    int enemy_pos = _enemy.get_x();
    printf("e pos = %i \n", enemy_pos);
    int diff = fighter_pos - enemy_pos;
    if (diff < 0) { // negative difference so fighter is to the left so enemy must move left
        _enemy.move_left(lcd);
    }
}
*/