#include "GameScreen.h" #include #include #include "Bullets.h" GameScreen::GameScreen() : m_pos {400, 300} { m_const_bullets.reserve(10000); } void GameScreen::update(const float dt) { if (IsKeyDown(KEY_LEFT)) m_pos.x -= dt * 80; if (IsKeyDown(KEY_RIGHT)) m_pos.x += dt * 80; m_delay += dt; if (m_delay > TEST_INTERVAL) { m_delay -= TEST_INTERVAL; const int speed = 120; const int divisions = 17; for (double i = 0; i <= divisions; ++i) { const double angle = (0.1 + 0.8 * i / divisions) * M_PI; const double cos = std::cos(angle); const double sin = std::sin(angle); ConstantVelocityBullet bullet; bullet.position.x = 400; bullet.position.y = 20; bullet.velocity.x = cos * speed; bullet.velocity.y = sin * speed; m_const_bullets.push_back(std::move(bullet)); } } ::update(dt, m_const_bullets); bool collided = false; for (const auto& bullet : m_const_bullets) { if (CheckCollisionCircles(m_pos, 10, bullet.position, 6)) collided = true; } (void) collided; } void GameScreen::draw() { DrawCircle(m_pos.x, m_pos.y, 10, LIGHTGRAY); for (const auto& bullet : m_const_bullets) DrawCircle(bullet.position.x, bullet.position.y, 6, RED); DrawFPS(5, 5); DrawText(TextFormat("%d", m_const_bullets.size()), 5, 25, 20, DARKGRAY); }