szymski Temat założony przez niniejszego użytkownika |
[Allegro] Kierunek postaci » 2011-10-09 14:57:33 Witam! Języka C++ uczę się dopiero miesiąc, ale postanowiłem napisać jakąś grę używając biblioteki Allegro. Wszystko jest dobrze oprócz tego że gdy chodzę ludkiem i stanę w miejscu, to jest on obrócony w jedną stronę. Próbowałem wstawiać warunki i inne takie, ale nic z tego nie wyszło. Oto kod: #include <allegro.h> #include <winalleg.h>
volatile long speed = 0; void increment_speed() { speed = speed = 2; } END_OF_FUNCTION( increment_speed ); LOCK_VARIABLE( speed ); LOCK_FUNCTION( increment_speed ); int main() { allegro_init(); install_keyboard(); set_color_depth( 32 ); set_gfx_mode( GFX_AUTODETECT_WINDOWED, 800, 600, 0, 0 ); install_timer(); install_int_ex( increment_speed, BPS_TO_TIMER( 80 ) ); BITMAP * tlo = NULL; BITMAP * bufor = NULL; BITMAP * bufor2 = NULL; BITMAP * ludek1 = NULL; BITMAP * ludek2 = NULL; BITMAP * ludek3 = NULL; bufor = create_bitmap( 800, 600 ); if( !bufor ) { set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 ); allegro_message( "Nie mogê utworzyæ bufora !" ); allegro_exit(); return 0; } tlo = load_bmp( "tlo.bmp", default_palette ); if( !tlo ) { set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 ); allegro_message( "nie mogê za³adowaæ obrazka tlo !" ); allegro_exit(); return 0; } ludek0 = load_bmp( "ludek.bmp", default_palette ); ludek1 = load_bmp( "ludek2.bmp", default_palette ); ludek2 = load_bmp( "ludek3.bmp", default_palette ); ludek3 = load_bmp( "ludek4.bmp", default_palette ); int ludek_x = 400, ludek_y = 436; int frame = 0; int kierunek = 0; while( !key[ KEY_ESC ] ) { while( speed > 0 ) { if( key[ KEY_LEFT ] ) { ludek_x--; kierunek = 1; } if( key[ KEY_RIGHT ] ) { ludek_x++; kierunek = 0; } speed--; if( frame > 40 ) frame = 0; } textout_ex( screen, font, "Melker - Platformowa przygoda PRE 0.0.2.2", 20, 20, makecol( 255, 255, 0 ), - 1 ); clear_to_color( bufor, makecol( 150, 150, 150 ) ); blit( tlo, bufor, 0, 0, 0, 0, tlo->w, tlo->h ); if( !key[ KEY_LEFT ] && !key[ KEY_RIGHT ] ) { if( kierunek = 1 ) draw_sprite( bufor, ludek1, ludek_x, ludek_y ); if( kierunek = 0 ) draw_sprite( bufor, ludek0, ludek_x, ludek_y ); } if( key[ KEY_LEFT ] && key[ KEY_RIGHT ] ) { clear_to_color( bufor, makecol( 150, 150, 150 ) ); } if( key[ KEY_RIGHT ] ) { draw_sprite( bufor, ludek0, ludek_x, ludek_y ); } if( key[ KEY_LEFT ] ) { draw_sprite( bufor, ludek1, ludek_x, ludek_y ); } blit( bufor, screen, 0, 0, 0, 0, 800, 600 ); } remove_int( increment_speed ); destroy_bitmap( ludek0 ); destroy_bitmap( ludek1 ); destroy_bitmap( ludek2 ); destroy_bitmap( ludek3 ); destroy_bitmap( bufor ); allegro_exit(); return 0; } END_OF_MAIN();
Wiem że kod nie wygląda najlepiej, ale w związku z tym że z tą biblioteką dopiero zaczynam, nie oczekujcie ode mnie czegoś lepszego. |