Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++, Allegro] Kliknięcie myszy w kwadrat

Ostatnio zmodyfikowano 2015-01-28 19:01
Autor Wiadomość
rav_jarosz2
Temat założony przez niniejszego użytkownika
[C++, Allegro] Kliknięcie myszy w kwadrat
» 2015-01-28 10:16:19
          
C/C++
if( mouse_x > 10 && mouse_x < 50 && mouse_y > 50 && mouse_y < 90 && mouse_b == 1 )
{
    player1.wybor_bloku--;
    mouse_b = 0;
}
if( mouse_x > 90 && mouse_x < 130 && mouse_y > 50 && mouse_y < 90 && mouse_b == 1 )
{
    player1.wybor_bloku++;
    mouse_b = 0;
}
if( player1.wybor_bloku <= 1 ) player1.wybor_bloku = 1;

if( player1.wybor_bloku >= 8 ) player1.wybor_bloku = 8;

Hej. Mam taką sytuację. Klikam w kwadrat, którego rozmiary podałem w warunku. Wszystko jest pięknie, jeśli nie ruszam myszką. Gdy moja zmienna "player1.wybor_bloku" jest równa 1 i kliknę w ten kwadrat, zwiększa się o 1. Ale gdy kliknę i delikatnie myszką poruszę, od razu jest równa 8. Ten sam problem mam w innym przypadku. Mógłby ktoś pomóc go rozwiązać?

//Najwyraźniej stan zmiennej "mouse_b" jest aktualizowany gdy zmienia się x lub y. Tylko jak to obejść?

//Zamieniłem lewy przycisk myszy na klawisz Z a prawy na X, ale nic to nie dało
P-125657
SeaMonster131
» 2015-01-28 17:51:08
Np. możesz stworzyć pomocniczą zmienną bool:
C/C++
bool klikniety = false;

if( klikniecie w kwadrat && !klikniety )
{
    player1.wybor_bloku--;
    klikniety = true;
}

if( mouse_b != 1 && klikniety )
     klikniety = false;

P-125679
rav_jarosz2
Temat założony przez niniejszego użytkownika
» 2015-01-28 19:01:28
Wielkie dzięki. Już wszystko działa jak należy. Dzięki temu rozwiązałem nawet problem w innym miejscu.
Mam tylko 1 zastrzeżenie- w tym ifie z wyzerowania kliknięcia mouse_b!=1 zmieniłem na mouse_b==0, zeby nie dało się wyzerowywać klikając prawym. Dzięki.
P-125685
« 1 »
  Strona 1 z 1