killjoy |
» 2013-08-09 21:51:24 Brak podwójnego buforowania... |
|
Gabes |
» 2013-08-10 00:28:38 Jeśli już musisz uczyć się nie rozwijanej wersji biblioteki to pobierz i zainstaluj ostatnią czyli Allegro 4.4.2malutki przykładzik bmp,png,jpg |
|
Bajt Temat założony przez niniejszego użytkownika |
» 2013-08-10 11:56:20 Okej, Wrzuciłem podwójne buforowanie... Jednak, coś jest nie tak - wyglądałoby na to, że kompilator CB nie kompiluje mojego programu wogóle...Dlaczego? #include <allegro.h>
int main( int argc, char * argvc[] ) { allegro_init(); install_keyboard(); install_mouse(); set_color_depth( 32 ); set_gfx_mode( GFX_AUTODETECT_WINDOWED, 800, 600, 0, 0 ); set_palette( default_palette ); clear_to_color( screen, 48 ); BITMAP * background = NULL; BITMAP * P1 = NULL; BITMAP * P2 = NULL; background = load_bmp( "background.bmp", default_palette ); if( !background ) { set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 ); allegro_message( "ERROR: Program can not load 'background.bmp' file." ); allegro_exit(); return 0; } blit( background, screen, 0, 0, 0, 0, background->w, background->h ); P1 = load_bmp( "P1.bmp", default_palette ); if( !P1 ) { set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 ); allegro_message( "ERROR: Program can not load 'P1.bmp' file." ); allegro_exit(); return 0; } int P1_x = 130, P1_y = 220; while( !key[ KEY_ESC ] ) { if( key[ KEY_A ] ) P1_x--; if( key[ KEY_D ] ) P1_x++; if( key[ KEY_W ] ) P1_y--; if( key[ KEY_S ] ) P1_y++; clear_to_color( background, makecol( 150, 150, 150 ) ); masked_blit( P1, background, 0, 0, P1_x, P1_y, P1->w, P1->h ); blit( background, screen, 0, 0, 0, 0, 800, 600 ); } readkey(); destroy_bitmap( background ); destroy_bitmap( P1 ); destroy_bitmap( P2 ); remove_keyboard(); remove_mouse(); allegro_exit(); return 0; } END_OF_MAIN();
Mam taki kod. Próbowałem go skompilować -0 ostrzeżeń, 0 błędów. Uruchamiam - dalej to samo. Moja postać podczas ruchu w jakąkolwiek stronę, pozostawia po sobie czarne smugi i rozmazuje się. Zmieniam trochę kod i kompiluję ponownie - znowu żadnych zmian. Było to trochę podejrzane. Zmieniłem linijkę w moim kodzie, chcąc się dowiedzieć, czy aby program jest kompilowany na bieżąco. Mianowicie: while( !key[ KEY_ESC ] ) zmieniłem na: while( !key[ KEY_SPACE ] ) I ku mojemu przerażeniu po skompilowaniu programu i po wciśnięciu spacji, program nie zamknął się, lecz po wciśnięciu escape'a owszem. O co chodzi? Czy mam błąd w swoim kodzie? Czy dobrze używam buforowania?. Kiedy wywaliłem linjkę odpowiadającą za wyświetlanie bufora(background), to i tak, program włączał się razem z nim. |
|
SeaMonster131 |
» 2013-08-10 12:01:51 Może Rebuild? |
|
Bajt Temat założony przez niniejszego użytkownika |
» 2013-08-10 12:11:47 Hmm...Zrobiłem Rebuil, jednak rebuild trwa 2s, a później gdy chcę uruchomić mój program, kompilator cały czas wyświetla komunikat o treści: "It seems this project has not built yet. Do you want build it now?" Wtedy daję przycisk 'tak', następuje kompilacja i znowu - klikam F9 i znowu ten komunikat.
[edit] Uruchomiłem inny projekt i zmieniłem trochę kod: dalej to samo, CB uruchamia go w takim stanie w jakim był przed kompilacją. Chyba wymagany będzie reinstall CB. Tylko z jakiej to może być przyczyny? |
|
RazzorFlame |
» 2013-08-10 12:27:41 Kiedyś miałem tak samo i ku mojemu zdziwieniu po wyłączeniu i włączeniu Code::Blocks zadziałało. Jeśli u ciebie to nie zadziała, to spróbuj nowy projekt utworzyć i skopiować kod bo za dużo go nie masz więc to nie będzie kłopot.
Edit: Sprawdź czy nadal jest ten sam build target, może zbudowałeś dla Release a uruchamiasz nadal Debug (bądź na odwrót) |
|
Bajt Temat założony przez niniejszego użytkownika |
» 2013-08-10 12:33:41 Wyłączenie i ponowne włączenie CB nic nie dało. Zmieniłem target z Debug na Release i odwrotnie, ale dalej wywala ten sam komunikat. |
|
RazzorFlame |
» 2013-08-10 12:40:37 Najlepiej będzie jak dasz screena pełnego ekranu Code::Blocks, może wtedy uda się coś zauważyć. |
|
1 2 3 4 « 5 » 6 7 |