diff --git a/main.cpp b/main.cpp index ccd0808..b280cf1 100644 --- a/main.cpp +++ b/main.cpp @@ -1,3 +1,4 @@ +#include #include #include #include @@ -9,12 +10,14 @@ auto screen_width = 800; auto screen_height = 600; Rectangle walls[] = { - {.x = 100, .y = 100, .width = 5, .height = 100} + // {.x = 100, .y = 100, .width = 5, .height = 100} }; Player player; auto player_speed = 5.0f; +uint32_t score; + Tear tears[100] = {}; float tear_speed = 10; float tear_range = 500; @@ -26,8 +29,8 @@ std::random_device dev; std::mt19937 rng(dev()); std::mutex enemy_mutex; -float enemy_max_speed = 5.0; -float enemy_radius = 50.0; +float enemy_max_speed = 2.0; +float enemy_radius = 25.0; Enemy enemies[100] = {}; Vector2 Player::center() const noexcept { @@ -149,6 +152,15 @@ void update_tears() { break; } } + + for (auto& enemy: enemies) { + if (CheckCollisionCircles(center, tear_radius, enemy.center, enemy.radius)) { + active = false; + enemy.alive = false; + score++; + } + } + switch (direction) { case UP: center.y -= tear_speed; @@ -182,6 +194,10 @@ int main() { player.width = 50; player.height = 50; + std::string score_text_buffer{64}; + score_text_buffer.reserve(64); + score_text_buffer.clear(); + while (!WindowShouldClose()) { if (IsWindowResized()) { screen_height = GetScreenHeight(); @@ -240,6 +256,10 @@ int main() { } } + std::format_to(std::back_inserter(score_text_buffer), "Score: {}", score); + DrawText(score_text_buffer.c_str(), 50, screen_height - 100, 20, BLACK); + score_text_buffer.clear(); + EndDrawing(); } CloseWindow();