Ju1ian Temat założony przez niniejszego użytkownika |
» 2008-04-19 12:46:49 I w dodatku (mogłeś tego nie zauważyć) grawitacja jest tak mocna, że jak stoję na krawędzi platformy to ciągle ciągnie mnie na ziemię, a: if(( key[ KEY_UP ] || key[ KEY_SPACE ] ) &&( kolizja( ludek_x, ludek_y, ludek->w, ludek->h, platfa_x, platfa_y, platfa->h, platfa->w ) == true ) ) ludek_ruch_y =- 10; powinno wszystkie problemy rozwiązać (jeśli chodzi o grawitację)... |
|
DejaVu |
Rozwiązanie » 2008-04-19 13:35:26 To powinno rozwiązywać wszystkie wymienione wcześniej problemy bool kolizja( float x1, float y1, float s1, float w1, float x2, float y2, float s2, float w2 ) { if( x1 + s1 >= x2 && x1 <= x2 + s2 && y1 + w1 >= y2 && y1 <= y2 + w2 ) return( true ); return( false ); };
#include <allegro.h>
int main() { allegro_init(); install_keyboard(); set_color_depth( 16 ); set_gfx_mode( GFX_AUTODETECT_WINDOWED, 640, 480, 0, 0 ); BITMAP * klocki = NULL; BITMAP * niebo = NULL; BITMAP * ludek = NULL; BITMAP * bufor = NULL; BITMAP * platfa = NULL; int zycie = 100; bufor = load_bmp( "data/gfx/bufor.bmp", default_palette ); if( !bufor ) { set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 ); allegro_message( "Nie moge utworzyc bufora !" ); allegro_exit(); return 0; } klocki = load_bmp( "data/gfx/klocki.bmp", default_palette ); ludek = load_bmp( "data/gfx/ludek.bmp", default_palette ); niebo = load_bmp( "data/gfx/niebo.bmp", default_palette ); platfa = load_bmp( "data/gfx/platforma.bmp", default_palette ); if( !ludek ) { set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 ); allegro_message( "Nie moge zaladowac obrazka Ludek !" ); allegro_exit(); return 0; } int klocki_x = 0, klocki_y = 370; int platfa_x = 50, platfa_y = 250; float ludek_ruch_y = 0; int niebo_x = 0, niebo_y = 0; float ludek_y = 370, ludek_x = 100; textprintf_ex( klocki, font, 20, 20, makecol( 0, 0, 0 ), - 1, "Zycie: %d", zycie ); while( !key[ KEY_ESC ] ) { if( zycie == 0 ) { allegro_message( "Przegrałes! Walnales sie o przeszkode i masz 0 punktow zycia ;)" ); allegro_exit(); return 0; } if( key[ KEY_RIGHT ] ) { ludek_x += 2; } if( key[ KEY_LEFT ] ) { ludek_x -= 2; } if(( key[ KEY_UP ] || key[ KEY_SPACE ] ) &&( ludek_ruch_y == 0 ) &&( ludek_y == klocki_y || ludek_y == platfa_y ) ) ludek_ruch_y =- 10; ludek_y += ludek_ruch_y; if(( ludek_y + ludek_ruch_y >= klocki_y ) &&( ludek_y <= klocki_y ) ) { ludek_ruch_y = 0; ludek_y = klocki_y; } else { ludek_ruch_y += 0.3; } if( kolizja( ludek_x, ludek_y - ludek->h, ludek->w, ludek->h, platfa_x, platfa_y, platfa->w, platfa->h ) == true ) { if(( ludek_ruch_y > 0 ) &&( ludek_y >= platfa_y ) &&( ludek_y - ludek_ruch_y <= platfa_y ) ) { ludek_ruch_y = 0; ludek_y = platfa_y; } } rest( 10 ); clear_to_color( bufor, makecol( 150, 255, 0 ) ); blit( niebo, bufor, 0, 0, niebo_x, niebo_y, niebo->w, niebo->h ); masked_blit( platfa, bufor, 0, 0, platfa_x, platfa_y, platfa->w, platfa->h ); masked_blit( klocki, bufor, 0, 0, klocki_x, klocki_y, klocki->w, klocki->h ); masked_blit( ludek, bufor, 0, 0, ludek_x, ludek_y - ludek->h, ludek->w, ludek->h ); blit( bufor, screen, 0, 0, 0, 0, 640, 480 ); } if( key[ KEY_ESC ] ) { allegro_message( "No dobra..." ); } destroy_bitmap( klocki ); destroy_bitmap( niebo ); destroy_bitmap( ludek ); destroy_bitmap( bufor ); allegro_exit(); return 0; }
END_OF_MAIN();
|
|
Ju1ian Temat założony przez niniejszego użytkownika |
» 2008-04-19 14:29:25 Dzięki ;) Co ja bym bez ciebie zrobił... ;D |
|
DejaVu |
» 2008-04-19 14:33:24 Byś walczył sam lub gdzieś indziej :) /edit: Zamykam śluzę :p |
|
Ju1ian Temat założony przez niniejszego użytkownika |
» 2008-04-19 14:44:47 Ojć, wykryłem poważnego buga. Gdy skoczy się z "ziemi na ziemię", to ludzik "zapada się pod ziemię", czyli po prostu nie wykrywa kolizji z podłożem. @up Co racja, to racja ;P |
|
DejaVu |
» 2008-04-19 15:52:26 W tym kodzie co wkleiłem ludek nie zapada się pod ziemię. |
|
Ju1ian Temat założony przez niniejszego użytkownika |
» 2008-04-19 15:55:06 Aha, no tak, bo cośtam grzebałem z wysokością skoku ;)
|
|
Ju1ian Temat założony przez niniejszego użytkownika |
» 2008-04-19 16:04:42 Hmmm... A co jeśli chcę mieć kilka platform?? |
|
1 2 « 3 » 4 |