SFML zwracanie argumentu

0

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ą?

0

bo sprawdzanie jest wykonywane 10 razy. Jeśli zwykle prawdziwe wyrazenie trafia się w powiedzmy 6 przebiegu pętli to poprzednie 5 było fałszywych i już przy pierwszym fałszywym było zwrócone -1. Czyli 'i' zostanie zwrócone tylko, gdy w pierwszym przebiegu pętli będzie true

1 użytkowników online, w tym zalogowanych: 0, gości: 1