Spawn zombos outside of game screen

This commit is contained in:
Reimar 2025-11-03 14:33:33 +01:00
parent 35569defc2
commit 4d3300e111
3 changed files with 18 additions and 3 deletions

View File

@ -30,7 +30,7 @@ void Game::update(std::stop_token stop_token)
} }
if (ticks % 100 == 0 && zombos.size() < 20) { 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(); renderer.redraw();

View File

@ -1,5 +1,21 @@
#include "Zombo.hpp" #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) void Zombo::update(const double player_x, const double player_y)
{ {
double angle = std::atan2(player_y - y, player_x - x); double angle = std::atan2(player_y - y, player_x - x);

View File

@ -1,7 +1,6 @@
#ifndef ZOMBO_HPP #ifndef ZOMBO_HPP
#define ZOMBO_HPP #define ZOMBO_HPP
#include <memory>
#include "Sprite.hpp" #include "Sprite.hpp"
#include "GameRenderer.hpp" #include "GameRenderer.hpp"
@ -14,7 +13,7 @@ private:
static constexpr double speed = 0.5; static constexpr double speed = 0.5;
public: 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); void update(double player_x, double player_y);