Commit 8a529bde authored by Illia Aldabaiev's avatar Illia Aldabaiev
Browse files

improve enemy move

parent 4e973d29
Loading
Loading
Loading
Loading
+59 −0
Original line number Diff line number Diff line
@@ -48,6 +48,65 @@ void Enemies::draw_enemys(sf::RenderWindow &win)
    }
}

void Enemies::move_back_to_screen(int idx)
{
    int new_pos_x = set_rand_position_on_the_screen().position_x;
    int new_pos_y = set_rand_position_on_the_screen().position_y;

    sf::Time time = clock.getElapsedTime();
    if (time.asMicroseconds() > 0.4)
    {
        last_pos_x = enemy[idx].get_position().position_x;
        last_pos_y = enemy[idx].get_position().position_y;
        clock.restart();
    }
    sf::Time time1 = clock1.getElapsedTime();
    if (time1.asMicroseconds() > 0.1)
    {
        if (new_pos_x < last_pos_x)
            last_pos_x -= 5;
        if (new_pos_x > last_pos_x)
            last_pos_x += 5;
        if (new_pos_y < last_pos_y)
            last_pos_y -= 5;
        if (new_pos_y > last_pos_y)
            last_pos_y += 5;
            enemy[idx].set_position(last_pos_x, last_pos_y, "equel");
            clock1.restart();
    }
}

//void Enemies::move_enemies()
//{
//    for (int i = 0; i < enemy.size(); ++i)
//    {
//        Unit new_pos = set_rand_position_on_the_screen();
//        Unit pos_now = enemy[i].get_position();
//
//        sf::Time time2 = clock2.getElapsedTime();
//        if (time2.asSeconds() > 0.5)
//        {
//        while (new_pos.position_x != pos_now.position_x &&
//                new_pos.position_y != pos_now.position_y)
//        {
//            sf::Time time1 = clock1.getElapsedTime();
//            if (time1.asSeconds() > 0.5) {
//                if (pos_now.position_x < new_pos.position_x)
//                    ++pos_now.position_x;
//                if (pos_now.position_x > new_pos.position_x)
//                    --pos_now.position_x;
//                if (pos_now.position_y < new_pos.position_y)
//                    ++pos_now.position_y;
//                if (pos_now.position_y > new_pos.position_y)
//                    --pos_now.position_x;
//                enemy[i].set_position(pos_now.position_x, pos_now.position_y, "equel");
//                clock1.restart();
//            }
//        }
//        }
//    }
//}




+8 −0
Original line number Diff line number Diff line
@@ -9,13 +9,21 @@
class Enemies : public Enemy{
    std::vector<Enemy> enemy;
    GameMode mode;
    int last_pos_x;
    int last_pos_y;
    sf::Clock clock;
    sf::Clock clock1;
    sf::Clock clock2;
    sf::Time current_time;

public:
    Enemies(GameMode m);
    void add_enemy();
    void remove_enemy(int &idx);
    void move_back_to_screen(int idx);
    void check_health(int idx);
    void set_position(int n, int pos_x, int pos_y);
    void move_enemies();
    int get_enemies_count() const;
    Enemy get_enemy(int idx);
    void draw_enemys(sf::RenderWindow &win);
+43 −5
Original line number Diff line number Diff line
@@ -55,21 +55,46 @@ int Enemy::get_speed() const

void Enemy::set_rand_position()
{
    unit.position_x = rand() % 1280;
    unit.position_y = rand() % 535;
    if(rand() % 2)
    {
        unit.position_x = -200;
    }
    else
    {
        unit.position_x = 1480;
    }
    if (rand() % 2)
    {
        unit.position_y = -100;
    }
    else
    {
        unit.position_y = 820;
    }

    enemy_sprite.setPosition(unit.position_x, unit.position_y);
}

void Enemy::draw_enemy(sf::RenderWindow &win)
{
    enemy_sprite.setTexture(enemy_texture);
    enemy_sprite.setPosition(unit.position_x,unit.position_y);
    win.draw(enemy_sprite);
}

void Enemy::set_position(int pos_x, int pos_y)
void Enemy::set_position(int pos_x, int pos_y, std::string str)
{
    if (str == "equel")
    {
        unit.position_x = pos_x;
        unit.position_y = pos_y;
    }
    if (str == "increase")
    {
        unit.position_x += pos_x;
        unit.position_y += pos_y;
    }

    enemy_sprite.setPosition(unit.position_x,unit.position_y);
}

@@ -78,4 +103,17 @@ Unit Enemy::get_position()
    return unit;
}

Unit Enemy::set_rand_position_on_the_screen()
{
    Unit position;
    position.position_x = rand() % 960 + 160;
    position.position_y = rand() % 540;
    return position;
}

bool Enemy::need_or_not_move_enemy()
{
    return false;
}

+3 −1
Original line number Diff line number Diff line
@@ -26,8 +26,10 @@ public:
    void set_health(int h);
    void set_speed(int s);
    void set_rand_position();
    void set_position(int pos_x, int pos_y);
    Unit set_rand_position_on_the_screen();
    void set_position(int pos_x, int pos_y, std::string str = "increase");
    Unit get_position();
    bool need_or_not_move_enemy();
    void draw_enemy(sf::RenderWindow &win);
    int get_health() const;
    int get_speed() const;
+8 −3
Original line number Diff line number Diff line
@@ -47,8 +47,9 @@ Falcon_9::Falcon_9()

void Falcon_9::draw_falcon(sf::RenderWindow &win)
{
    sf::Time time = clock.getElapsedTime();
    current_time = time;
    set_health_bar();

    win.draw(sprite_scope);
    win.draw(sprite_cabine);
    for (int i = 0; i < health; ++i)
@@ -93,7 +94,11 @@ void Falcon_9::lasers(sf::RenderWindow &win)
        {
            win.draw(laser2);
        }
        if(current_time.asMilliseconds() > 70)
        {
            (right_or_left_laser)? right_or_left_laser = false : right_or_left_laser = true;
            clock.restart();
        }
    }
}

@@ -116,7 +121,7 @@ void Falcon_9::set_laser_pos()
void Falcon_9::key_press(sf::Event &e, bool set)
{
    int key = e.key.code;
    std::cout << key;

    switch (key)
    {
        case 71:
Loading