Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Kilkukrotne wyświetlanie bitmapy

Ostatnio zmodyfikowano 2011-11-26 20:49
Autor Wiadomość
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
P-44757
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...
P-44759
Gabes
» 2011-11-26 17:19:38
A możesz choćby tak
C/C++
#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.
P-44760
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?
P-44765
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:
C/C++
while( !key[ KEY_ESC ] )
{
    deska_first_x = 0; // wartość początkowa X
    deska_first_y = 0; // wartość początkowa Y
   
    //...
   
    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?
» KursyKurs STC kurs
P-44780
« 1 »
  Strona 1 z 1