Besemir Temat założony przez niniejszego użytkownika |
Allegro klik » 2009-05-09 08:36:11 Wie ktos jak mozna zrobic przycisk w allegro na ktory mozna kilkac myszka i po kliknieciu stanie sie cos?
Dokladniej chce to wykorzystac w mojej grze Kolko Krzyzyk. Zeby po kliknieciu na jedno z pol pjawilo sie tam kolko albo krzyzyk, ale zeby ono nie zniklo jak puszczeklawisz.
|
|
WunM |
» 2009-05-09 09:22:35 Masz dwa stany przycisku, zaznaczony (wciśnięty) i odznaczony. Po naciśnięciu na niego zmieniasz z odznaczonego na zaznaczony lub odwrotnie. A potem przy wyświetlaniu - w zależności od stanu - wyświetlasz bitmapę przycisku wciśniętego lub odznaczonego. |
|
Besemir Temat założony przez niniejszego użytkownika |
» 2009-05-09 09:29:08 No poprosilbym o kod na te przyciski, bo w kursie nie moge ich znalesc. |
|
WunM |
» 2009-05-09 10:25:29 No np. int ic_x = 10, ic_y = 20, ic_w = 90, ic_h = 70; bool is_mark = false;
if( mouse_b == 1 ) { if(( mouse_x >= ic_x && mouse_x <= ic_x + ic_w ) &&( mouse_y >= ic_y && mouse_y <= ic_y + ic_h ) ) { if( is_mark == false ) is_mark = true; else if( is_mark == true ) is_mark = false; } } Kod napisany nieobiektowo więc trudno go wykorzystać wiele razy. Ale z lekką modyfikacją nie powinieneś mieć problemu. |
|
Besemir Temat założony przez niniejszego użytkownika |
» 2009-05-09 10:53:07 no thx ale czy mógłby mi ktoś wytłumaczyć jak to wykorzystać xd? dokładniej chodzi mi w tym. chce aby po kliknięciu na przycisk pojawił się obrazek kolko.bmp #include <allegro.h> #include "images.h" int main() { allegro_init(); install_keyboard(); set_color_depth( 16 ); set_gfx_mode( GFX_AUTODETECT_WINDOWED, 400, 400, 0, 0 ); BITMAP * bufor = NULL; bufor = create_bitmap( 400, 400 ); if( !bufor ) { set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 ); allegro_message( "Nie mogê utworzyæ bufora !" ); allegro_exit(); return 0; } DATAFILE * data = NULL; data = load_datafile( "images.dat" ); if( !data ) { set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 ); allegro_message( "Nie mogê za³adowaæ bazy z grafik¹!" ); allegro_exit(); return 0; } while( !key[ KEY_ESC ] ) { clear_to_color( bufor, makecol( 0, 0, 0 ) ); textprintf_centre_ex( bufor, font, SCREEN_W / 2, 12, makecol( 255, 255, 255 ), - 1, "Kolko i Krzyzyk" ); int ic_x = 75, ic_y = 75, ic_w = 160, ic_h = 160; bool is_mark = false; if( mouse_b == 1 ) { if(( mouse_x >= ic_x && mouse_x <= ic_x + ic_w ) &&( mouse_y >= ic_y && mouse_y <= ic_y + ic_h ) ) { if( is_mark == false ) is_mark = true; else if( is_mark == true ) is_mark = false; masked_blit(( BITMAP * ) data[ krzyzyk_b ].dat, bufor, 0, 0, 75, 75,(( BITMAP * ) } } masked_blit(( BITMAP * ) data[ plansza_b ].dat, bufor, 0, 0, 75, 75,(( BITMAP * ) data[ plansza_b ].dat )->w,(( BITMAP * ) data[ plansza_b ].dat )->h ); blit( bufor, screen, 0, 0, 0, 0, 640, 480 ); } destroy_bitmap( bufor ); unload_datafile( data ); allegro_exit(); return 0; } END_OF_MAIN();
mógłby ktoś pomoc? jak coś to tym wywołuje się obrazek data[ krzyzyk_b ].dat )->w,(( BITMAP * ) data[ krzyzyk_b ].dat )->h );
// Patzick: Pisownia! Poczytaj o kolorowaniu kodu |
|
pixelmaster |
» 2009-05-09 14:11:32 Jak ja robiłem coś takiego to leciałem po współżędnych if( mouse_x >= guzik.x && mouse_x <= guzik.x + 200 && mouse_y >= guzik.y && mouse_y <= guzik.y + 100 && mouse_b == 1 ) { } @Edit: musisz jeszcze zainstalować myszkę install_mouse(); show_mouse(screen); unscare_mouse(); |
|
Besemir Temat założony przez niniejszego użytkownika |
» 2009-05-09 18:48:07 No i właśnie tu pojawia się problem... Obrazek jest widoczny tylko wtedy gdy klikam na przycisk, jak zrobić żeby po 1 kliknięciu był widoczny cały czas? |
|
pixelmaster |
» 2009-05-09 20:00:35 Ja bym zrobił tak że jak klikniesz na guzik to zmienna pokaz_obrazek ustawia się np. na 1 i wtedy warunek że jesli zmienna pokaz_obrazek jest równa 1 to wyświetla obrazek. |
|
« 1 » 2 3 |