Allegro 4 - ograniczenie ruchu myszy do wyznaczonego obszaru
Ostatnio zmodyfikowano 2013-03-17 23:16
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. |
|
Giedzu |
» 2013-03-17 22:48:41 Skoro umiesz sprawdzić pozycję myszki, to umiesz ją ustawić... Masz np: if( mouse_x > 400 ) mouse_x = 400
|
|
Gabes |
» 2013-03-17 23:09:43 |
|
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: #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 :) |
|
« 1 » |