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

Allegro 4 - ograniczenie ruchu myszy do wyznaczonego obszaru

Ostatnio zmodyfikowano 2013-03-17 23:16
Autor Wiadomość
zp51515
Temat założony przez niniejszego użytkownika
Allegro 4 - ograniczenie ruchu myszy do wyznaczonego obszaru
» 2013-03-17 21:04:35
Witam!
Czy mógłby mi ktoś doradzić jak ograniczyć ruch kursora do konkretnego obszaru np. kwadratu czy koła? Myślałem o sprawdzaniu pozycji kursora i po przekroczeniu obszaru "cofania" go ale nie znam funkcji mogącej ustawiać pozycję myszy. Poza tym wydaje mi się, że kursor by skakał jeżeli użytkownik próbował by go przesunąć poza obszar.
Z góry dziękuje za odpowiedzi.
P-78703
Giedzu
» 2013-03-17 22:48:41
Skoro umiesz sprawdzić pozycję myszki, to umiesz ją ustawić...
Masz np:

C/C++
if( mouse_x > 400 )
mouse_x = 400
P-78739
Gabes
» 2013-03-17 23:09:43
P-78744
zp51515
Temat założony przez niniejszego użytkownika
» 2013-03-17 23:16:21
Dzięki Gabes. O takie coś mi właśnie chodziło :)
Giedzu oczywiście masz racje, ale albo coś mi nie wychodzi, albo nie modyfikuje tego co trzeba..

Kod z kursu + if który miałby przesunąć kursor:
C/C++
#include <allegro.h>

int mx = 0, my = 0, mb = 0;
void myszka()
{
    if( mx != mouse_x || my != mouse_y || mb != mouse_b )
    {
        mx = mouse_x;
        my = mouse_y;
        mb = mouse_b;
    }
};

int main()
{
    allegro_init();
    install_keyboard();
    set_color_depth( 32 );
    set_gfx_mode( GFX_AUTODETECT_WINDOWED, 800, 600, 0, 0 );
    install_mouse();
    show_mouse( screen );
    unscare_mouse();
    BITMAP * bufor = NULL;
    bufor = create_bitmap( 800, 600 );
   
    while( !key[ KEY_ESC ] )
    {
        clear_to_color( bufor, makecol( 100, 100, 100 ) );
        myszka();
       
        textprintf_ex( bufor, font, 20, 20, makecol( 200, 200, 200 ), - 1, "Myszka x = %d, y = %d, klawisz = %d !", mx, my, mb );
        if( key[ KEY_W ] )
        {
            mouse_x++;
            mouse_y++;
        }
        blit( bufor, screen, 0, 0, 0, 0, 800, 600 );
        clear_keybuf();
    }
   
    destroy_bitmap( bufor );
    allegro_exit();
    return 0;
}
END_OF_MAIN();

Kiedy naciskam w to zmieniają się parametry mouse_x i mouse_y ale kursor stoi w miejscu...

Ale jeżeli chodzi o główny problem - kłopot rozwiązany, dzięki za szybkie odpowiedzi.

EDIT: Tą metodę z przesuawniem myszy można zrobić przez position_mouse. Tylko tego mi brakowało :)
P-78745
« 1 »
  Strona 1 z 1