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

[Allegro] Problem z wyświetlaniem bitmapy.

Ostatnio zmodyfikowano 2010-01-07 19:04
Autor Wiadomość
Qtk
Temat założony przez niniejszego użytkownika
» 2010-01-06 18:06:47
Wpisałem taki o to kod
\
C/C++
// Początek PROGRAMU !!!!!!!
#include <allegro.h>
volatile long speed = 0;
void increment_speed()
{
    speed++;
}
END_OF_FUNCTION( increment_speed );
LOCK_VARIABLE( speed );
LOCK_FUNCTION( increment_speed );
// OTWORZENIE GŁOWNEJ FUNKCJI = MAIN
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( 100 ) );
    clear_to_color( screen, makecol( 128, 128, 128 ) );
    install_sound( DIGI_AUTODETECT, MIDI_AUTODETECT, "" );
    set_volume( 255, 255 );
   
   
   
    // Tworzenie bitmap
    BITMAP * bufor = NULL;
    BITMAP * Kloc1 = NULL;
    BITMAP * ninja = NULL;
    SAMPLE * dzwiek = 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;
    }
   
    ninja = load_bmp( "ninja.bmp", default_palette );
    if( !ninja )
    {
        set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
        allegro_message( "nie mogę załadować obrazka Ludek !" );
        allegro_exit();
        return 0;
    }
   
    Kloc1 = load_bmp( "Kloc.bmp", default_palette );
    if( !Kloc1 )
    {
        set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
        allegro_message( "nie mogę załadować obrazka Kloc !" );
        allegro_exit();
        return 0;
    }
    dzwiek = load_sample( "muse.wav" );
    if( !dzwiek )
    {
        set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
        allegro_message( "nie mogę załadować dzwieku !" );
        allegro_exit();
        return 0;
    }
    int ninja_x = 100, ninja_y = 100;
    int Kloc1_x = 200, Kloc1_y = 300;
    // Pętla odpowiedzialna za przemieszczanie zioma
   
    play_sample( dzwiek, 255, 127, 1000, 1 );
   
    while( !key[ KEY_ESC ] )
    {
        clear_to_color( bufor, makecol( 150, 150, 150 ) );
       
       
        {
            if( key[ KEY_LEFT ] ) ninja_x--;
           
            if( key[ KEY_RIGHT ] ) ninja_x++;
           
            if( key[ KEY_UP ] ) ninja_y--;
           
            if( key[ KEY_DOWN ] ) ninja_y++;
           
            while( speed > 0 )
            {
               
                if( key[ KEY_LEFT ] ) ninja_x--;
               
                if( key[ KEY_RIGHT ] ) ninja_x++;
               
                if( key[ KEY_UP ] ) ninja_y--;
               
                if( key[ KEY_DOWN ] ) ninja_y++;
               
                speed--;
            }
            play_sample( dzwiek, 255, 127, 1000, 1 );
            speed--;
        }
       
        if( key[ KEY_A ] ) { adjust_sample( dzwiek, 255, 127, 500, 1 ); }
        if( key[ KEY_S ] ) { adjust_sample( dzwiek, 255, 127, 2000, 1 ); }
        if( key[ KEY_D ] ) { adjust_sample( dzwiek, 255, 0, 1000, 1 ); }
        if( key[ KEY_F ] ) { adjust_sample( dzwiek, 255, 255, 1000, 1 ); }
       
        masked_blit( ninja, bufor, 0, 0, ninja_x, ninja_y, ninja->w, ninja->h );
        masked_blit( Kloc1, bufor, 0, 0, Kloc1_x, Kloc1_y, Kloc1->w, Kloc1->h );
        blit( bufor, screen, 0, 0, 0, 0, 800, 600 );
    }
   
    readkey();
   
    remove_int( increment_speed );
   
    stop_sample( dzwiek );
    destroy_bitmap( ninja );
    destroy_bitmap( Kloc1 );
    destroy_bitmap( bufor );
    destroy_sample( dzwiek );
    allegro_exit();
    return 0;
}
END_OF_MAIN();
(mam nadzieję,że dobrze:]) i owszem, pokazują się i przesuwaja bitmapy, lecz dzwięk dziwnie się zachowuje, tzn. scina się i nie da się go właściwie słuchać :(....

Nie chciałbym otwierać kolejnych tematów z tak banalną sprawą, lecz problem z
bitmapami, a mianowicie z wyświetlaniem tła,a  mianowicie   -->> http://img705.imageshack.us/img705/8004/problemot.jpg

Robiłem według instrukcji z jednego z tematów i coś nie wyświetla dobrze tych bitmap :<. Byłbym wdzięczny za pomoc.
P-12747
malan
» 2010-01-06 19:55:20
Zamiast tego:
C/C++
{
    if( key[ KEY_LEFT ] ) ninja_x--;
   
    if( key[ KEY_RIGHT ] ) ninja_x++;
   
    if( key[ KEY_UP ] ) ninja_y--;
   
    if( key[ KEY_DOWN ] ) ninja_y++;
   
    while( speed > 0 )
    {
       
        if( key[ KEY_LEFT ] ) ninja_x--;
       
        if( key[ KEY_RIGHT ] ) ninja_x++;
       
        if( key[ KEY_UP ] ) ninja_y--;
       
        if( key[ KEY_DOWN ] ) ninja_y++;
       
        speed--;
    }
    play_sample( dzwiek, 255, 127, 1000, 1 );
    speed--;
}
...wstaw to:
C/C++
while( speed > 0 )
{
   
    if( key[ KEY_LEFT ] ) ninja_x--;
   
    if( key[ KEY_RIGHT ] ) ninja_x++;
   
    if( key[ KEY_UP ] ) ninja_y--;
   
    if( key[ KEY_DOWN ] ) ninja_y++;
   
    speed--;
}
Jeśli nie będzie działać poprawnie to wróć do poprzedniej wersji ;).

Co do bitmap to może masz zły odcień różu. W kursie chyba jest napisane jaki to kolor powinien być (chyba (255,255,255), ale pewny nie jestem).
P-12750
Qtk
Temat założony przez niniejszego użytkownika
» 2010-01-07 14:24:17
Dziękuje, teraz dobrze działa :). Co do bitmap, nadal ten sam problem, nie mogę użyć koloru 255,255,255 ponieważ jest to kolor biały :(, próbowałem z 255,0,255 i nadal to samo :<.
P-12766
malan
» 2010-01-07 19:04:54
W tym wypadku to ciężko będzie Ci pomóc. Jedyne co mi teraz przychodzi do głowy to pobierz bitmapę ( ludek.bmp // login i hasło: gosc ) z kursu, podmień ją z jakąś bitmapą z Twojego programu ( np. ninja ) i sprawdź, czy występuje ten sam błąd. Jeśli nie to będzie Cie czekało przerysowanie bitmap :).
P-12777
1 « 2 »
Poprzednia strona Strona 2 z 2