Welcome, Guest. Please login or register. Did you miss your activation email?

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - Zidane

Pages: [1]
1
Audio / Re: [SOLVED]Cant Pass a sound to a function to play
« on: March 31, 2015, 03:08:57 am »
Alright thanks for the tips ya i got alot to work on my coding habit thanks for the help

2
Audio / [SOLVED]Cant Pass a sound to a function to play
« on: March 30, 2015, 10:42:39 pm »
i want to pass my sound to collision_check but when i try program compiles fine and everything works but (when the circle collides which happens every 5 seconds or so) it wont play a sound when that happens

Here my Code
#include <iostream>
#include <string>
#include <conio.h>
#include <cmath>
#include <ctime>
#include <Windows.h>
#include <SFML/Graphics.hpp>
#include <SFML/Audio.hpp>

using namespace std;
using namespace sf;

int sleeper, b,t;
float cx = 500, cy = 1, X = 1, Y = 1, sy = 1, sx = 1, rx = 1200, ry = 768;
Event event;

void collision_check(sf::Sound sound){
        //left
        if (sx - cx <= 100 && sx - cx > 50 && sy - cy >= -50 && sy - cy <= 50) {
                sound.play();
                t = 1;
                cx -= 102 - sx + cx;
                if (X == 1){ X = 0; }
                else X = 1;
        }
        //right
        if (cx - sx <= 100 && cx - sx > 50 && sy - cy >= -50 && sy - cy <= 50){
                cx += 102 - (cx - sx);
                t = 1;
                sound.play();
                if (X == 1){ X = 0; }
                else X = 1;
        }
        //bottom
        if (cy - sy <= 100 && cy - sy > 50 && sx - cx >= -50 && sx - cx <= 50){
                cy += 102 - (cy - sy);
                t = 1;
                sound.play();
                if (Y == 1){ Y = 0; }
                else Y = 1;
        }
        //top
        if (sy - cy <= 100 && sy - cy > 50 && sx - cx >= -50 && sx - cx <= 50){
                cy -= 102 - (sy - cy);
                t = 1;
                sound.play();
                if (Y == 1){ Y = 0; }
                else Y = 1;
        }
}
void circle_movement(){
        if (GetAsyncKeyState(VK_SPACE) & 1){
                b++;
        }
        if (X == 1 && b % 2 == 0){
                cx++;
        }
        if (X == 0 && b % 2 == 0){
                cx--;
        }
        if (cx >= rx - 101){
                X = 0;
        }
        if (cx <= 1){
                X = 1;
        }

        if (Y == 1 && b % 2 == 0){
                cy++;
        }

        if (Y == 0 && b % 2 == 0){
                cy--;
        }
        if (cy >= ry - 101){
                Y = 0;
        }
        if (cy <= 1){
                Y = 1;
        }
}
void square_movement(){
        if (GetAsyncKeyState(VK_RIGHT) & 0x8000 && sx < rx - 101 || GetAsyncKeyState(68) & 0x8000 && sx < rx - 101){
                sx += 2;
        }
        if (GetAsyncKeyState(VK_LEFT) & 0x8000 && sx >= 2 || GetAsyncKeyState(65) & 0x8000 && sx >= 2){
                sx -= 2;
        }
        if (GetAsyncKeyState(VK_UP) & 0x8000 && sy >= 2 || GetAsyncKeyState(87) & 0x8000 && sy >= 2){
                sy -= 2;
        }
        if (GetAsyncKeyState(VK_DOWN) & 0x8000 && sy < ry - 101 || GetAsyncKeyState(83) & 0x8000 && sy < ry - 101){
                sy += 2;
        }
        if (GetAsyncKeyState(VK_LSHIFT) != 0){
                sx = 1;
                sy = 1;
        }
        if (GetAsyncKeyState(VK_RSHIFT) != 0){
                sx = rx - 101;
                sy = ry - 101;
        }
}

int main(){


        RenderWindow window(VideoMode(rx, ry), "SFML Window", Style::None);
        window.setFramerateLimit(500);
        RectangleShape shape3(Vector2f(rx - 2, ry - 2));
        shape3.setPosition(1.f, 1.f);
        shape3.setFillColor(Color::Black);
        shape3.setOutlineThickness(1);
        shape3.setOutlineColor(Color::Green);


        CircleShape shape1;
        shape1.setRadius(50.f);
        shape1.setFillColor(Color::White);

        sf::Texture texture;
        if (!texture.loadFromFile("C:/Users/Mackenzie/Pictures/photo.jpg", sf::IntRect(0, 0, 101, 101)))
        {
                // error...
        }

        sf::Music music;
        if (!music.openFromFile("C:/Windows/Media/town.ogg"))
                return -1; // error
        music.play();
        music.setVolume(6);

        sf::SoundBuffer buffer;
        if (!buffer.loadFromFile("C:/Windows/Media/Windows Default.wav"))
                return -1;
        sf::Sound sound;
        sound.setBuffer(buffer);
       

        while (window.isOpen())
        {
                while (window.pollEvent(event))
                {
                        if (event.type == sf::Event::Closed)
                                window.close();
                }

                sf::Sprite shape2;
                shape2.setTexture(texture);
                window.clear(sf::Color::White);



                shape1.setPosition(cx + 0.f, cy + 0.f);
                shape2.setPosition(sx + 0.f, sy + 0.f);
                window.draw(shape3);
                window.draw(shape1);
                window.draw(shape2);
                window.display();
                collision_check(sound);
                if (t == 1){
                        sound.play();
                        t = 0;
                }
                circle_movement();
                square_movement();

        }
}

 

I used Int "t" as a trigger and the sound will only play inside of main but i want it to play inside my function that i pass it to.

Pages: [1]