int x;
int y;
int main()
{
while
{
if (sf::Mouse::isButtonPressed(sf::Mouse::Left))
{
x = sf::Event::MouseButtonEvent::x;
y = sf::Event::MouseButtonEvent::y;
}
//check that What rectangle which (x,y) is inside
(Rectangle that I clicked name).setFillColor(sf::Color::Green);
}
}
This is my approximately code.
Is that Correct?
and Please tell me How can I check that What rectangle which (x,y) is inside
Thanks
Sorry for bad English
int main()
{
cout << "enter width: ";
cin >> x;
cout << endl;
cout << "enter height: ";
cin >> y;
sf::RenderWindow window(sf::VideoMode(x * 4, y * 4), "Window");
while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
window.close();
}
window.clear();
sf::IntRect r1(100, 100, 100, 100);
sf::RectangleShape rectangle;
rectangle.setSize(sf::Vector2f(100, 100));
rectangle.setOutlineColor(sf::Color::Red);
rectangle.setFillColor(sf::Color::Blue);
rectangle.setOutlineThickness(1);
rectangle.setPosition(100, 100);
window.draw(rectangle);
if (event.type == sf::Event::MouseButtonPressed)
{
if (event.mouseButton.button == sf::Mouse::Left)
{
mx = event.mouseButton.x;
my = event.mouseButton.y;
bool b1 = r1.contains(mx, my);
if (b1 == true)
{
rectangle.setFillColor(sf::Color::Red);
window.draw(rectangle);
cout << mx << my << endl;
}
}
}
window.display();
}
system("pause");
}
I've try to write my code
Result is my rectangle change to red only I pressed my mouse
How an I fix this?
- Please reread the tutorial about events, handling events must be done in the event loop
while (window.pollEvent(event))
{
// check the type of the event...
switch (event.type)
{
// window closed
case sf::Event::Closed:
window.close();
break;
// key pressed
case sf::Event::KeyPressed:
...
break;
// we don't process other types of events
default:
break;
}
}
I don't see different between if-loop and while-loop
Please tell me How different?
- Lets see, if you create a new rectangle shape each frame how do you think it is going to stay red?
How can I create rectangle every frame? I have no idea
I've put this event between window.clear(); and window.display();
but nothing change
Sorry for ask stupid question...
Thanks