szyx_yankez Temat założony przez niniejszego użytkownika |
[Allegro] Kolizja z wykorzystaniem getpixel » 2009-09-02 16:46:13 Witam wszystkich. Najpierw podam kod. if( poziom == 0 ) { blit( map, bufor, 0, 0, 0, 0, map->w, map->h ); if( getpixel( map, mx + 32, my + 32 ) == makecol( 255, 0, 255 ) ) { poziom = 1; mx = 200; my = 900; } } if( poziom == 1 ) { blit( map1, bufor, 0, 0, 0, 0, map1->w, map1->h ); }
Otóż kompilator chyba nie widzi tego Poniewaz gdy zostanie wykryta kolizja getpixel owszem inna bitmapa sie wyswietla jednak kursor nie zmienia swojej pozycji co jest nie tak prosze o pomoc. xd. //Od pixelmaster`a: Tworząc nowy wątek warto nadać mu jakiś tytuł... //Od admina: jak dopisujesz temat pixelmaster to staraj się nie robić w nim błędów ortograficznych ;p |
szyx_yankez Temat założony przez niniejszego użytkownika |
» 2009-09-02 18:24:24 Fajnie jest 6 postów, mój z wyjasnieniem na czym polega problem, Piotra i malana które wydawaly by sie mieć jakiś sens i pasować do tematu. A reszta zadaje jakieś głupie pytania. Kompilator kompiluje, a je ś li kompiluje to znaczy, ż e zmienna istnieje.Z Twojego opisu wynika jasno, ż e aplikacja si ę uruchamia, ale co ś 'nie działa'.Innymi s ł owy Tw ó j algorytm jest nieprawid ł owy.
Skoro kompilator zmienia wartość zmiennej poziom to czego nie zmienia wartośći zmiennych mx i my ? Jeszcze nie widzia ł em ś lepego kompilatora.Piszesz brail ` em ?
Chyba każdy widzi ,że to nie brail tylko język polski. Owszem może jest kilka błędów ale jak jest 1 czy 2 błędy aty już myslisz że to brail to idź na lekcje polskiego i naucz się odróżniać język polski od braila Hej, pixelmaster, to ty wymy ś li ł e ś ten temat ?
Dam ci krótki poradnik gdy wejdziesz na forum główne i wejdziesz np do działu Biblioteki C/C++ to w trzeciej kolumnie wyraźnie po polsku napisane jest Autor i pisze obok mojego tematu szyx_yankez to chyba jasne ,że pixelmaster tego temetu nie wymyslił. Chyba ,że chodził ci o tytuł wiadomości bo owszem to on zmienił tytuł, jeżeli chodzilo ci o to to pisz jaśniej . Jednak nadal proszę o pomoc oto kod programu. #include <allegro.h>
BITMAP * kursor;
void laduj_kursor() { kursor = load_bitmap( "kursor.bmp", NULL ); if( !kursor ) { set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 ); allegro_message( "Nie moge zaladowac grafiki ( kursor )" ); allegro_exit(); } };
int mx = 500, my = 500, mb = 0; void myszka() { if( mx != mouse_x || my != mouse_y || mb != mouse_b ) { mx = mouse_x; my = mouse_y; mb = mouse_b; } };
volatile long speed = 0;
void increment_speed() { speed++; } END_OF_FUNCTION( increment_speed );
LOCK_VARIABLE( speed ); LOCK_FUNCTION( increment_speed );
int main()
{ allegro_init(); install_keyboard(); set_color_depth( 16 ); set_gfx_mode( GFX_AUTODETECT_FULLSCREEN, 1280, 1024, 0, 0 ); clear_to_color( screen, makecol( 255, 255, 255 ) ); install_timer(); install_int_ex( increment_speed, BPS_TO_TIMER( 100 ) ); BITMAP * bufor = NULL; BITMAP * map = NULL; BITMAP * menu = NULL; BITMAP * wsk = NULL; BITMAP * nie = NULL; BITMAP * map1 = NULL; bufor = create_bitmap( 1280, 1024 ); show_mouse( map ); map = load_bmp( "map.bmp", default_palette ); menu = load_bmp( "menu.bmp", default_palette ); wsk = load_bmp( "wsk.bmp", default_palette ); nie = load_bmp( "nie.bmp", default_palette ); map1 = load_bmp( "map1.bmp", default_palette ); laduj_kursor(); install_mouse(); show_mouse( map ); set_mouse_sprite( kursor ); unscare_mouse(); myszka(); int czas = 0; int wsky = 230; int poziom = 0; while( !key[ KEY_Q ] ) { while( !key[ KEY_ENTER ] ) { clear_to_color( bufor, makecol( 111, 133, 255 ) ); blit( menu, bufor, 0, 0, 0, 0, menu->w, menu->h ); masked_blit( wsk, bufor, 0, 0, 230, wsky, wsk->w, wsk->h ); if( key[ KEY_DOWN ] ) { rest( 150 ); if( wsky == 230 ) wsky = 330; else if( wsky == 330 ) wsky = 430; else if( wsky == 430 ) wsky = 530; else if( wsky == 530 ) wsky = 630; } if( key[ KEY_UP ] ) { rest( 150 ); if( wsky == 630 ) wsky = 530; else if( wsky == 530 ) wsky = 430; else if( wsky == 430 ) wsky = 330; else if( wsky == 330 ) wsky = 230; } blit( bufor, screen, 0, 0, 0, 0, 1280, 1024 ); } while( !key[ KEY_ESC ] ) { clear_to_color( bufor, makecol( 111, 133, 255 ) ); myszka(); show_mouse( map ); blit( map, bufor, 0, 0, 0, 0, map->w, map->h ); if( getpixel( map, mx + 32, my + 32 ) == makecol( 0, 0, 0 ) || getpixel( map, mx - 2, my - 2 ) == makecol( 0, 0, 0 ) ) { blit( nie, bufor, 0, 0, 100, 100, nie->w, nie->h ); } if( poziom == 0 ) { blit( map, bufor, 0, 0, 0, 0, map->w, map->h ); if( getpixel( map, mx + 32, my + 32 ) == makecol( 255, 0, 255 ) ) { poziom = 1; mx = 200; my = 900; } } if( poziom == 1 ) { blit( map1, bufor, 0, 0, 0, 0, map1->w, map1->h ); } blit( kursor, bufor, 0, 0, mx, my, kursor->w, kursor->h ); blit( bufor, screen, 0, 0, 0, 0, 1280, 1024 ); clear_keybuf(); } } destroy_bitmap( map ); destroy_bitmap( bufor ); destroy_bitmap( kursor ); destroy_bitmap( wsk ); destroy_bitmap( menu ); destroy_bitmap( map1 ); readkey(); allegro_exit(); return 0; } END_OF_MAIN();
|