Niemożliwe, ale mam jeszcze lepszą wersję kodu, już bez zmiennych bool (wystarczyło chwile posiedzieć i pomyśleć, bo coś myślałem, że nie są one potrzebne ).
#include <SFML/Graphics.hpp>
#include <SFML/Audio.hpp>
int main()
{
sf::RenderWindow window(sf::VideoMode(800, 600), "TEST");
sf::Font font;
font.loadFromFile("HussarPrintA.otf");
sf::Text text[3];
text[0] = sf::Text("NAPIS_1", font, 30);
text[0].setPosition(sf::Vector2f(0, 0));
text[1] = sf::Text("NAPIS_2", font, 30);
text[1].setPosition(sf::Vector2f(0, 100));
text[2] = sf::Text("NAPIS_3", font, 30);
text[2].setPosition(sf::Vector2f(0, 200));
sf::SoundBuffer sound_buffer;
sound_buffer.loadFromFile("shot.ogg");
sf::Sound sound(sound_buffer);
while(window.isOpen())
{
sf::Vector2f mouse(sf::Mouse::getPosition(window));
sf::Event event;
while(window.pollEvent(event))
{
if(event.type == sf::Event::Closed)
window.close();
}
for(int i = 0; i < 3; i++)
{
if(text[i].getGlobalBounds().contains(mouse) && (text[i].getColor() == sf::Color(255, 0, 255)))
{
text[i].setColor(sf::Color(255, 255, 255));
sound.play();
}
if(!text[i].getGlobalBounds().contains(mouse))
{
text[i].setColor(sf::Color(255, 0, 255));
}
}
window.clear();
window.draw(text[0]);
window.draw(text[1]);
window.draw(text[2]);
window.display();
}
return 0;
}