poldek Temat założony przez niniejszego użytkownika |
[Allegro C++] kółko i krzyżyk problem » 2011-01-31 16:11:57 Witam ,jestem nowicjuszem w programowaniu ALLEGRO i mam problem z góry przepraszam jeśli już taki temat istnieje (przejdę do senna) nie wiem jak wykombinować żeby za 1-wszym kliknięciem było koło ... a za 2-gim krzyżyk .... proszę o pomoc nie musi być to gotowiec (wolę sam to zrobić) , proszę tylko o naprowadzenie na trop .... poniżej zamieszczam kod. PS.Śmiało krytykować co mnie nie zabije to mnie wzmocni i się nauczę na własnych błędach ... Z góry dzięki Tyle mam: #include <allegro.h> #include <iostream>
int mx = 0, my = 0, mb = 0; void rat() { if( mx != mouse_x || my != mouse_y || mb != mouse_b ) { mx = mouse_x; my = mouse_y; mb = mouse_b; } };
using namespace std; int main() { allegro_init(); install_keyboard(); install_mouse(); set_color_depth( 16 ); set_gfx_mode( GFX_AUTODETECT_WINDOWED, 640, 480, 0, 0 ); clear_to_color( screen, makecol( 128, 128, 128 ) ); BITMAP * o = NULL; BITMAP * x = NULL; BITMAP * buffor = NULL; BITMAP * mapa = NULL; buffor = create_bitmap( 640, 480 ); if( !buffor ) { set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 ); allegro_message( "Nie mogę utworzyć bufora !" ); allegro_exit(); return 0; } mapa = load_bmp( "plansza.bmp", default_palette ); o = load_bmp( "o.bmp", default_palette ); x = load_bmp( "x.bmp", default_palette ); int b[ 9 ]; b[ 0 ] = 0; b[ 1 ] = 0; b[ 2 ] = 0; b[ 3 ] = 0; b[ 4 ] = 0; b[ 5 ] = 0; b[ 6 ] = 0; b[ 7 ] = 0; b[ 8 ] = 0; int m[ 8 ]; int p = 1; while( !key[ KEY_ESC ] ) { rat(); show_mouse( screen ); masked_blit( mapa, buffor, 0, 0, 0, 0, mapa->w, mapa->h ); if( 130 <= mx && 20 <= my && mx <= 130 + 85 && my <= 20 + 90 && mb == 1 ) { b[ 0 ] ++; } if( 230 <= mx && 20 <= my && mx <= 230 + 110 && my <= 20 + 90 && mb == 1 ) { b[ 1 ] ++; } if( 355 <= mx && 20 <= my && mx <= 355 + 85 && my <= 20 + 90 && mb == 1 ) { b[ 2 ] ++; } if( 130 <= mx && 125 <= my && mx <= 130 + 85 && my <= 125 + 110 && mb == 1 ) { b[ 3 ] ++; } if( 220 <= mx && 125 <= my && mx <= 220 + 120 && my <= 125 + 110 && mb == 1 ) { b[ 4 ] ++; } if( 355 <= mx && 125 <= my && mx <= 355 + 85 && my <= 125 + 110 && mb == 1 ) { b[ 5 ] ++; } if( 130 <= mx && 250 <= my && mx <= 130 + 85 && my <= 250 + 120 && mb == 1 ) { b[ 6 ] ++; } if( 230 <= mx && 250 <= my && mx <= 230 + 110 && my <= 250 + 120 && mb == 1 ) { b[ 7 ] ++; } if( 350 <= mx && 250 <= my && mx <= 350 + 90 && my <= 250 + 120 && mb == 1 ) { b[ 8 ] ++; } if( b[ 0 ] > 0 ) { m[ 0 ] = 1; masked_blit( o, buffor, 0, 0, 155, 50, o->w, o->h ); } if( b[ 1 ] > 0 ) { m[ 1 ] = 11; masked_blit( x, buffor, 0, 0, 260, 50, o->w, o->h ); } if( b[ 2 ] > 0 ) { m[ 2 ] = 2; masked_blit( o, buffor, 0, 0, 380, 50, o->w, o->h ); } if( b[ 3 ] > 0 ) { m[ 0 ] = 12; masked_blit( x, buffor, 0, 0, 150, 160, o->w, o->h ); } if( b[ 4 ] > 0 ) { m[ 0 ] = 3; masked_blit( o, buffor, 0, 0, 260, 160, o->w, o->h ); } if( b[ 5 ] > 0 ) { m[ 0 ] = 13; masked_blit( x, buffor, 0, 0, 370, 160, o->w, o->h ); } if( b[ 6 ] > 0 ) { m[ 0 ] = 4; masked_blit( o, buffor, 0, 0, 150, 280, o->w, o->h ); } if( b[ 7 ] > 0 ) { m[ 0 ] = 14; masked_blit( x, buffor, 0, 0, 260, 280, o->w, o->h ); } if( b[ 8 ] > 0 ) { m[ 0 ] = 5; masked_blit( o, buffor, 0, 0, 370, 280, o->w, o->h ); } textprintf_ex( buffor, font, 20, 455, makecol( 200, 200, 200 ), - 1, "Myszka x = %d, y = %d, klawisz = %d !", mx, my, mb ); blit( buffor, screen, 0, 0, 0, 0, 640, 480 ); clear_keybuf(); } destroy_bitmap( mapa ); destroy_bitmap( buffor ); destroy_bitmap( x ); destroy_bitmap( o ); allegro_exit(); return 0; } END_OF_MAIN(); |