cześć, mam taki problem, otóż:
w klasie player jest :
void cPlayerX::Check(cMap &map, sf::Event &event)
{
if ((event.Type == sf::Event::MouseButtonPressed) && (event.MouseButton.Button == sf::Mouse::Left))
{
std::cout << "INDEKS: " << map.Check(event) << "\n";
switch (map.Check(event))
{
case 0: break;
}
std::cout << "X: " << event.MouseButton.X << " ";
std::cout << "Y: " << event.MouseButton.Y << "\n";
}
}
i przkazuje paraemter event, do funkcji check klasy mapa,
int cMap::Check(sf::Event &event)
{
if ((event.Type == sf::Event::MouseButtonPressed) && (event.MouseButton.Button == sf::Mouse::Left))
{
for (int i= 0; i < 9; i++)
if (((event.MouseButton.X > X1[i]) && (event.MouseButton.X < X2[i])) && ((event.MouseButton.Y > Y1[i]) && (event.MouseButton.Y < Y2[i])))
return i;
else return -1;
}
}
tam jest kod który porównuje współrzędne myszki z współrzędnymi zapisanymi w X1,X2,Y1,Y2, są to rogi kwadratów na ekranie. I gdy nie dam tego "else return -1;" wszystko jest ładnie, gdy kliknę na pierwieszy kwadrat zwraca mi 0, drugi zwraca mi 1, etc. ale gdy mam dodaną tę linikję else return -1;, to gdy kliknę w pierwszy kwadrta zwraca 0, ale już w następnych zawsze zwraca -1. co może być przyczyną?