From 73b4fa5920d1b9cd356e57836c6d8fd2bdfe24b1 Mon Sep 17 00:00:00 2001 From: Joseph Aquino Date: Wed, 24 Sep 2025 18:42:28 -0400 Subject: [PATCH] added sound effects --- assets/sounds/fail.wav | Bin 0 -> 40472 bytes assets/sounds/hit1.wav | Bin 0 -> 15978 bytes assets/sounds/hit2.wav | Bin 0 -> 19094 bytes include/Game.h | 12 ++++++++- src/Game.cpp | 58 +++++++++++++++++++++++++++++++++++------ 5 files changed, 61 insertions(+), 9 deletions(-) create mode 100644 assets/sounds/fail.wav create mode 100644 assets/sounds/hit1.wav create mode 100644 assets/sounds/hit2.wav diff --git a/assets/sounds/fail.wav b/assets/sounds/fail.wav new file mode 100644 index 0000000000000000000000000000000000000000..61301638149fe484551ed9630644f74bbd8dfdd2 GIT binary patch literal 40472 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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 #include +#include #include #include @@ -17,6 +18,7 @@ struct Ball sf::Vector2f velocity; sf::Vector2f previousPos{}; bool alive{true}; + bool collided{false}; }; struct Brick @@ -71,12 +73,21 @@ private: void setupLevel(); + void soundSystem(); + private: sf::Clock clock; sf::RenderWindow window; sf::Font font; sf::Text lives; + sf::SoundBuffer collideSoundBuffer; + sf::SoundBuffer brickBreakSoundBuffer; + sf::SoundBuffer failSoundBuffer; + + sf::Sound collideSound; + sf::Sound brickBreakSound; + sf::Sound failSound; Player player; std::vector balls; @@ -102,6 +113,5 @@ private: Color brickColor{}; Color playerColor{}; Color specialBrickColor{}; - bool windowCollasped{false}; static constexpr unsigned int numPhysicsUpdates{4}; }; \ No newline at end of file diff --git a/src/Game.cpp b/src/Game.cpp index 118b20f..8c3c180 100644 --- a/src/Game.cpp +++ b/src/Game.cpp @@ -29,6 +29,12 @@ Game::Game() : window({sf::VideoMode({ 1920u, 1080u }), "project-breakout"}) , font("assets/fonts/ChakraPetch-Regular.ttf") , lives(font) + , collideSoundBuffer("assets/sounds/hit2.wav") + , brickBreakSoundBuffer("assets/sounds/hit1.wav") + , failSoundBuffer("assets/sounds/fail.wav") + , collideSound(collideSoundBuffer) + , brickBreakSound(brickBreakSoundBuffer) + , failSound(failSoundBuffer) { if (!ImGui::SFML::Init(window)) return; @@ -38,6 +44,10 @@ Game::Game() lives.setPosition({10, static_cast(window.getSize().y - 40)}); window.setFramerateLimit(framerate); + collideSound.setVolume(50); + brickBreakSound.setVolume(50); + failSound.setVolume(50); + player.pos = playerStartPos; playerHalfSize = playerSize / 2.f; brickHalfSize = brickSize / 2.f; @@ -179,11 +189,6 @@ void Game::input() player.right = true; break; - case sf::Keyboard::Scan::F1: - windowCollasped = !windowCollasped; - ImGui::SetNextWindowCollapsed(windowCollasped); - break; - case sf::Keyboard::Scan::R: resetGame(); break; @@ -250,6 +255,7 @@ void Game::checkBallCollision() { for (auto& ball : balls) { + ball.collided = false; const sf::FloatRect ballBounds = {ball.pos, {ballRadius, ballRadius}}; const sf::FloatRect previousBallBounds = {ball.previousPos, {ballRadius, ballRadius}}; @@ -262,6 +268,7 @@ void Game::checkBallCollision() // coming from x directon if (intersect.x > 0 && previousIntersect.x <= 0 && intersect.y > 0) { + ball.collided = true; brick.alive = false; ball.velocity.x *= -1; if (ball.pos.x < brick.pos.x) @@ -277,6 +284,7 @@ void Game::checkBallCollision() // coming from y direction if (intersect.y > 0 && previousIntersect.y <= 0 && intersect.x > 0) { + ball.collided = true; brick.alive = false; ball.velocity.y *= -1; if (ball.pos.y < brick.pos.y) @@ -300,6 +308,7 @@ void Game::checkBallCollision() // coming from x direction if (intersect.x > 0 && previousIntersect.x <= 0 && intersect.y > 0) { + ball.collided = true; brick.alive = false; spawnExtraBall = true; ball.velocity.x *= -1; @@ -316,6 +325,7 @@ void Game::checkBallCollision() // coming from y direction if (intersect.y > 0 && previousIntersect.y <= 0 && intersect.x > 0) { + ball.collided = true; brick.alive = false; spawnExtraBall = true; ball.velocity.y *= -1; @@ -343,18 +353,21 @@ void Game::checkBallCollision() if (ball.pos.x - ballRadius <= 0) { + ball.collided = true; ball.pos.x = ballRadius; ball.velocity.x *= -1; } if (ball.pos.x + ballRadius >= window.getSize().x) { + ball.collided = true; ball.pos.x = window.getSize().x - ballRadius; ball.velocity.x *= -1; } if (ball.pos.y - ballRadius < 0) { + ball.collided = true; ball.pos.y = ballRadius; ball.velocity.y *= -1; } @@ -369,6 +382,7 @@ void Game::checkBallCollision() // coming from x direction if (intersect.x > 0 && previousIntersect.x <= 0 && intersect.y > 0) { + ball.collided = true; ball.velocity.x *= -1; if (ball.pos.x < player.pos.x) {// from the left @@ -383,6 +397,7 @@ void Game::checkBallCollision() // coming from y direction if (intersect.y > 0 && previousIntersect.y <= 0 && intersect.x > 0) { + ball.collided = true; ball.velocity.y *= -1; if (ball.pos.y < player.pos.y) {// from the top @@ -447,7 +462,7 @@ void Game::movement() void Game::imgui() { - ImGui::SetNextWindowCollapsed(windowCollasped, ImGuiCond_Once); + ImGui::SetNextWindowCollapsed(false, ImGuiCond_Once); ImGui::SetNextWindowSize({490,375}, ImGuiCond_Once); ImGui::SetNextWindowPos({26,29}, ImGuiCond_Once); if(!ImGui::Begin("menu")) @@ -459,7 +474,6 @@ void Game::imgui() ImGui::Indent(); ImGui::Text("A/D or arrow keys: move left and right"); ImGui::Text("R: reset game"); - ImGui::Text("F1: expand/collaspe this window"); ImGui::Unindent(); ImGui::Text("Level config:"); @@ -543,6 +557,30 @@ void Game::render() window.display(); } +void Game::soundSystem() +{ + for (auto& ball : balls) + { + if (ball.collided) + { + collideSound.play(); + } + if (!ball.alive) + { + failSound.play(); + } + } + + for (auto& brick : bricks) + { + if (!brick.alive) + { + brickBreakSound.play(); + } + } + +} + void Game::resetGame() { bricks.clear(); @@ -568,8 +606,10 @@ void Game::run() movement(); collision(); + + soundSystem(); } - + checkEndGame(); imgui(); @@ -596,6 +636,8 @@ void Game::runNoImgui() movement(); collision(); + + soundSystem(); } checkEndGame();