Witam, napisałem grę, kółko i krzyżyk z wykorzystaniem biblioteki 2d sfml. Wyzcytałem gdzieś na forach i trochę popytałem jak sprawdzać czy gracz kliknął w dane pole i stworzyłem coś takiego:
if (sf::Mouse::isButtonPressed(sf::Mouse::Left))
{
sf::Vector2i pozycjaMyszy = sf::Mouse::getPosition(oknoAplikacji);
if (sf::Mouse::isButtonPressed(sf::Mouse::Left))
{
sf::Vector2f mouse = oknoAplikacji.mapPixelToCoords(sf::Mouse::getPosition(oknoAplikacji));
sf::FloatRect bounds1 = sprajt1.getGlobalBounds();
if (bounds1.contains(mouse) && pole1 == 'n' && stan != "win")
{
// Jakies instrukcje, mniejsza z tym jakie
}
}
}
Dodam, że powyższy kod działa poprawnie i nie chodzi o zmiany kodzie, ale zamiast posiadania działającego kodu chciałbym zrozumieć jak on działa.
Pierwszą linię:
if (sf::Mouse::isButtonPressed(sf::Mouse::Left))
rozumiem w 100%, nie trzeba tłumaczyć.
Tutaj:
sf::Vector2i pozycjaMyszy = sf::Mouse::getPosition(oknoAplikacji);
Vector2 przechowuje jakieś współrzędne, w tym wypadku położenie myszy względem okna. Jeżeli się myle to mnie poprawcie.
Następnie:
if (sf::Mouse::isButtonPressed(sf::Mouse::Left))
nie rozumiem, dlaczego znowu sprawdzam warunek kliknięcia....
i zupełnie nie czaję o co chodzi z tą linijką:
sf::Vector2f mouse = oknoAplikacji.mapPixelToCoords(sf::Mouse::getPosition(oknoAplikacji));
Reszta kodu (ta z klasą FloatRect i obiektem bounds ) jest dla mnie zrozumiała.
Jeżel chcesz pomóc, to prosiłbym o wytłumaczenie tego tak jak komuś kto pierwszy raz się z tym zetknął.