diff --git a/src/Game.cpp b/src/Game.cpp index 721743b..f17c008 100644 --- a/src/Game.cpp +++ b/src/Game.cpp @@ -30,7 +30,7 @@ void Game::update(std::stop_token stop_token) } if (ticks % 100 == 0 && zombos.size() < 20) { - zombos.emplace_back(20.0, 20.0); + zombos.emplace_back(&renderer, *zombo_sprite, player.x, player.y); } renderer.redraw(); diff --git a/src/Zombo.cpp b/src/Zombo.cpp index 7043c60..d2ecba1 100644 --- a/src/Zombo.cpp +++ b/src/Zombo.cpp @@ -1,5 +1,21 @@ #include "Zombo.hpp" +Zombo::Zombo(const GameRenderer *renderer, const Sprite &sprite, double player_x, double player_y) +{ + if (rand() % 2 == 0) { + x = rand() % renderer->screen_width - renderer->screen_width / 2; + y = renderer->screen_height / 2 + sprite.height; + if (rand() % 2 == 0) y = -y; + } else { + x = renderer->screen_width / 2 + sprite.width; + y = rand() % renderer->screen_height - renderer->screen_height / 2; + if (rand() % 2 == 0) x = -x; + } + + x += player_x; + y += player_y; +} + void Zombo::update(const double player_x, const double player_y) { double angle = std::atan2(player_y - y, player_x - x); diff --git a/src/Zombo.hpp b/src/Zombo.hpp index 29efba4..e1854f9 100644 --- a/src/Zombo.hpp +++ b/src/Zombo.hpp @@ -1,7 +1,6 @@ #ifndef ZOMBO_HPP #define ZOMBO_HPP -#include #include "Sprite.hpp" #include "GameRenderer.hpp" @@ -14,7 +13,7 @@ private: static constexpr double speed = 0.5; public: - Zombo(const double x, const double y) : x(x), y(y) {} + Zombo(const GameRenderer *renderer, const Sprite &sprite, double player_x, double player_y); void update(double player_x, double player_y);