Lirdoner Temat założony przez niniejszego użytkownika |
Kilkukrotne wyświetlanie bitmapy » 2011-11-26 17:05:25 Cześć jeszcze raz :D W tamtym temacie wyszedłem z założenia, że nie będę ciągle zakładał nowych tematów dla kolejnych problemów, ale jak 1 temat = 1 problem to ok ;) No więc chciałbym wyświetlić sobie tą samą bitmapę kilkanaście razy na ekranie Poprawnym będzie jeżeli będę używał masked_blit kilkanaście razy z jedną bitmapą zmieniając jedynie pozycje x i y? Próbowałem użyć jakiejś pętli do tego ale wtedy program się wiesza :D |
|
szyx_yankez |
» 2011-11-26 17:16:38 Poprawnym będzie jeżeli będę używał masked_blit kilkanaście razy z jedną bitmapą zmieniając jedynie pozycje x i y? |
Poprawnym... |
|
Gabes |
» 2011-11-26 17:19:38 A możesz choćby tak
#include <allegro.h>
int main() { allegro_init(); install_keyboard(); set_color_depth( 32 ); set_gfx_mode( GFX_AUTODETECT_WINDOWED, 800, 600, 0, 0 ); BITMAP * bufor = create_bitmap( 800, 600 ); BITMAP * bitmapa = load_bmp( "bitmapa.bmp", default_palette ); int szer_bmp = 64, wys_bmp = 64; while( !key[ KEY_ESC ] ) { clear_to_color( bufor, makecol( 0, 128, 0 ) ); for( int kafle_y = 0, y = 0; kafle_y < 15; kafle_y++, y = y + wys_bmp ) for( int kafle_x = 0, x = 0; kafle_x < 20; kafle_x++, x = x + szer_bmp ) draw_sprite( bufor, bitmapa, x, y ); blit( bufor, screen, 0, 0, 0, 0, 800, 600 ); } destroy_bitmap( bitmapa ); destroy_bitmap( bufor ); allegro_exit(); return 0; } END_OF_MAIN(); .
Cały ekran wypełniony bitmapom. |
|
Lirdoner Temat założony przez niniejszego użytkownika |
» 2011-11-26 17:54:42 Napisałem
for(int i = 0; i < 20; i++) { masked_blit(deska, bufor, 0, 0, deska_first_x, deska_first_y, deska->w, deska->h); deska_first_x = deska_first_x + 20; deska_first_y = deska_first_y - 50; }
Żadna deska się nie wyświetla ;/ Wiem dlaczego tylko teraz jak zrobić aby deski które zostały już wyświetlone nie przesuwały się po zmianie deska_first_x i deska_first_y?
A tak jeszcze na przyszłość - jak wstawiać kody w blokach takich jak kolega wyżej? |
|
malan |
» 2011-11-26 20:49:02 jak zrobić aby deski które zostały już wyświetlone nie przesuwały się po zmianie deska_first_x i deska_first_y? |
Na przykład tak: while( !key[ KEY_ESC ] ) { deska_first_x = 0; deska_first_y = 0; for( int i = 0; i < 20; i++ ) { masked_blit( deska, bufor, 0, 0, deska_first_x, deska_first_y, deska->w, deska->h ); deska_first_x = deska_first_x + 20; deska_first_y = deska_first_y - 50; } blit( bufor, screen, 0, 0, 0, 0 ); } jak wstawiać kody w blokach takich jak kolega wyżej? | Kurs STC |
|
« 1 » |