ziom Temat założony przez niniejszego użytkownika |
[Allegro] Problem z poruszaniem postacia » 2013-01-21 00:25:16 Witajcie rodacy! Mam dziwny problem i nie wiem jak go naprawic. Stworzyłem bitmapę po której porusza sie moja postac. Ruch jest w porządku kiedy ustalam komende set_color_depth na 8, natomiast grafika sie psuje. kiedy ustale color_depth na 32 to z grafika wszystko wporzadku ale nie moge poruszac postacia. HELP ! załączam kod oczywiscie ! #include <allegro.h>
volatile long speed = 0; void increment_speed() { speed++; } END_OF_FUNCTION( increment_speed ); LOCK_VARIABLE( speed ); LOCK_FUNCTION( increment_speed );
inline void init() { allegro_init(); set_color_depth( 32 ); set_gfx_mode( GFX_AUTODETECT_FULLSCREEN, 640, 480, 0, 0 ); install_timer(); install_keyboard(); install_mouse(); }
inline void deinit() { clear_keybuf(); allegro_exit(); }
int main() { init(); install_int_ex( increment_speed, BPS_TO_TIMER( 100 ) ); BITMAP * bufor = NULL; BITMAP * postac = NULL; bufor = create_bitmap( 640, 480 ); if( !bufor ) { set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 ); allegro_message( "Nie mogę utworzyć bufora !" ); allegro_exit(); return 0; } postac = load_bmp( "mario.bmp", default_palette ); if( !postac ) { set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 ); allegro_message( "nie mogę załadować obrazka Ludek !" ); allegro_exit(); return 0; } int postac_x = 100; int postac_y = 100; while( !key[ KEY_ESC ] ) { while( speed > 0 ) { if( key[ KEY_LEFT ] ) postac_x--; if( key[ KEY_RIGHT ] ) postac_x++; if( key[ KEY_UP ] ) postac_y--; if( key[ KEY_DOWN ] ) postac_y++; speed--; } clear_to_color( bufor, makecol( 150, 150, 150 ) ); masked_blit( postac, bufor, 0, 0, postac_x, postac_y, postac->w, postac->h ); blit( bufor, screen, 0, 0, 0, 0, 640, 480 ); } remove_int( increment_speed ); destroy_bitmap( postac ); destroy_bitmap( bufor ); deinit(); return 0; } END_OF_MAIN()
|
|
Gabes |
» 2013-01-21 00:30:53 A 16 lub 24? |
|
ziom Temat założony przez niniejszego użytkownika |
» 2013-01-21 00:33:35 przy 16 zachowuje sie program jak przy 32, natomiast przy 24 wyskakuje windowsowy crash :D Ja kompletnie nie wiem o co cho, na poczatku myslalem ze ktora z komend jest zle napisana, tzn ze nie kazda dziala pod 32. Juz sam nie wiem |
|
Gabes |
» 2013-01-21 00:43:35 Popróbuj w większych rozdzielczościach 800x600, 1024x768, jak i w trybie okienkowym set_gfx_mode( GFX_AUTODETECT_WINDOWED, 800, 600, 0, 0 ); |
|
ziom Temat założony przez niniejszego użytkownika |
» 2013-01-21 00:59:17 Przy ustawieniu 800x600 i zmienie na wyswietlaniu w oknie moja postac sie porusza ! nie wiem czemu tylko przy fullscreen nie chce prawidlowo dzialac. To dosyc dziwne |
|
« 1 » |