#include <SFML/Graphics.hpp>
struct RObiekt
{
double x;
double y;
double fPredkosc;
RObiekt( double f_x = 0.0, double f_y = 0.0)
: x( f_x )
, y( f_y )
{ }
};
int main()
{
sf::RenderWindow oknoAplikacji( sf::VideoMode( 800, 600, 32 ), "Takie tam" );
oknoAplikacji.UseVerticalSync( true );
typedef std::vector < RObiekt > VObiektyT;
VObiektyT vObiekty;
vObiekty.push_back( RObiekt( 50, 50) );
vObiekty.push_back( RObiekt( 100, 250 ) );
vObiekty.push_back( RObiekt( 300, 100 ) );
vObiekty.push_back( RObiekt( 500, 500 ) );
while( oknoAplikacji.IsOpened() )
{
sf::Event zdarzenie;
while( oknoAplikacji.GetEvent( zdarzenie ) )
{
if( zdarzenie.Type == sf::Event::Closed )
oknoAplikacji.Close();
if( zdarzenie.Type == sf::Event::KeyPressed && zdarzenie.Key.Code == sf::Key::Escape )
oknoAplikacji.Close();
oknoAplikacji.Clear();
sf::Shape Circle;
sf::Vector2f punkt;
const sf::Input & sterowanie = oknoAplikacji.GetInput();
for( VObiektyT::const_iterator i = vObiekty.begin(); i != vObiekty.end(); ++i ){
Circle = sf::Shape::Circle( i->x, i->y, 10, sf::Color::Red );
punkt = Circle.TransformToLocal( sf::Vector2f(( float ) sterowanie.GetMouseX(),( float ) sterowanie.GetMouseY() ) );
bool bCzyZaznaczony = ( punkt.x >= 0 && punkt.y >= 0 && punkt == sf::Vector2f(Circle.GetPosition()));
if(bCzyZaznaczony == 1)
Circle.SetColor( sf::Color::Green );
oknoAplikacji.Draw( Circle );
}
oknoAplikacji.Display();
}
return 0;
}
Chodzi o to, że jak najadę myszką na obiekt to ma zamienić go na zielony kolor, natomiast jak myszka nie będzie się znajdowała w obszarze obiektu to ma być kolor czerwony. Napisałem program (powyżej), ale narysował mi tylko obiekty, ale nie dział zmiana kolorów, czy ktoś jest w stanie mi pomóc?