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

[Allegro, C++] Częściowe wyświetlanie zamiast wszystko na raz

Ostatnio zmodyfikowano 2011-12-27 16:28
Autor Wiadomość
kata.mic
Temat założony przez niniejszego użytkownika
[Allegro, C++] Częściowe wyświetlanie zamiast wszystko na raz
» 2011-12-25 20:32:04
Problem wygląda w ten sposób:
Po przełączeniu ekranu spacją ładuję się tak jak by połowa tzn. ludzik.bmp, dwa okienka, ale zostaje "pod nimi" tekst z poprzedniego ekranu (tekst niechciany oczywiście w tym momencie już). Gdy nacisnę po raz kolejny spację pojawia się tekst który chciał bym żeby był już za pierwszym wciśnięciem spacji czyli "Witaj w grze." ale znika wtedy ludzik.bmp. I tak jakby po 3 spacjach dopiero jest ekran z wszystkim, który chciał bym żeby się wyświetlał już za pierwszym kliknięciem spacji. A każde kolejne to jest na zmianę pojawienie się i zniknięcie ludzik.bmp. Może jest ktoś kto wie jak to doprowadzić do normalnego, logicznego porządku? Poniżej fragment tego kodu:
C/C++
if( start == true )
{
    BITMAP * mala_postac = NULL;
   
    textout_ex( bufor, font_pcx, "Witaj w grze!", 337, 60, makecol( 10, 1, 116 ), - 1 );
   
    BITMAP * obrazek1 = NULL;
    BITMAP * obrazek2 = NULL;
   
    obrazek1 = create_bitmap( 700, 500 );
    if( !obrazek1 )
    {
        set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
        allegro_message( "Nie mogę załadować obrazka 1!" );
        allegro_exit();
        return 0;
    }
   
    obrazek2 = create_bitmap( 300, 500 );
    if( !obrazek2 )
    {
        set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
        allegro_message( "Nie mogę załadować obrazka 2!" );
        allegro_exit();
        return 0;
    }
    clear_to_color( obrazek1, makecol( 1, 63, 49 ) );
    clear_to_color( obrazek2, makecol( 23, 223, 63 ) );
    textout_ex( obrazek1, font, "Ekran gry.", 2, 2, makecol( 0, 0, 255 ), - 1 );
    textout_ex( obrazek2, font, "Lista z wynikami.", 2, 2, makecol( 0, 0, 255 ), - 1 );
   
   
    blit( obrazek1, screen, 0, 0, 150, 234, obrazek1->w, obrazek1->h );
    blit( obrazek2, screen, 0, 0, 900, 234, obrazek2->w, obrazek2->h );
    readkey();
   
    mala_postac = load_bmp( "mala_postac.bmp", default_palette );
    if( !mala_postac )
    {
        set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
        allegro_message( "Nie mogę załadować obrazka!" );
        allegro_exit();
        return 0;
    }
   
    blit( mala_postac, screen, 0, 0, 150, 10, mala_postac->w, mala_postac->h );
    // alternatywna         masked_blit( mala_postac, screen, 0,0, 200,100, mala_postac->w, mala_postac->h);
   
    readkey();
   
    destroy_bitmap( obrazek1 );
    destroy_bitmap( obrazek2 );
   
    destroy_bitmap( mala_postac );
   
   
   
    if( key[ KEY_RCONTROL ] ) start = false;
   
}
P-46263
Winner
» 2011-12-25 23:07:53
Nie wiem czy dobrze rozumiem Twój problem, ale według mnie usun sobie jedno readkey();

O w tym miejscu:
   blit( obrazek1, screen, 0, 0, 150, 234, obrazek1->w, obrazek1->h );
    blit( obrazek2, screen, 0, 0, 900, 234, obrazek2->w, obrazek2->h );
    readkey();
usun to readkey(); bo malapostac wyświetli się dopiero po naciśnięciu jakiegoś klawisza... A Ty chcesz chyba aby wszystko razem się wyświetlało?
P-46266
kata.mic
Temat założony przez niniejszego użytkownika
» 2011-12-26 01:50:14
O to chodziło, działa ładnie. Dzięki Winner.
P-46274
kata.mic
Temat założony przez niniejszego użytkownika
» 2011-12-26 18:56:16
Jeszcze takie pytanie co do tego tematu, jak wprawić w ruch tą postać kodem ( z kursu):
C/C++
BITMAP * mala_strzela = NULL;

mala_strzela = load_bmp( "mala_strzela.bmp", default_palette );
if( !mala_strzela )
{
    set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
    allegro_message( "Nie mogę załadować obrazka mala_strzela!" );
    allegro_exit();
    return 0;
}
int mala_strzela_x = 100, mala_strzela_y = 100;

while( !key[ KEY_ESC ] )
{
    if( key[ KEY_LEFT ] ) mala_strzela_x--;
   
    if( key[ KEY_RIGHT ] ) mala_strzela_x++;
   
    if( key[ KEY_UP ] ) mala_strzela_y--;
   
    if( key[ KEY_DOWN ] ) mala_strzela_y++;
   
    //clear_to_color(screen, makecol(10,10,10));
    rest( 10 );
    masked_blit( mala_strzela, screen, 0, 0, mala_strzela_x, mala_strzela_y, mala_strzela->w, mala_strzela->h );
}


destroy_bitmap( mala_strzela );
Tzn w którym miejscu tego kodu z poprzedniego postu?

Jeśli wstawię to zaraz przed lub po readkey() to wtedy brakuje napisu "Witaj w grze".

P-46324
kata.mic
Temat założony przez niniejszego użytkownika
» 2011-12-27 16:17:55
Panowie wie ktoś co jest nie tak z kodem że po przełączeniu ekranu spacją na nowym ekranie zostaje mi tekst z poprzedniego ekranu i dodatkowo nie pojawia sie tekst który powinien się pojawić na nowym ekranie.

Co do kodu gry to jest to mniej więcej to co w poprzednich postach.
P-46393
Gabes
» 2011-12-27 16:28:53
Podstawy allegro nie czytałeś kursu
-wszystko na bufor
-jeśli warunek nie będzie spełniony nic nowego się nie wyświetli.
P-46395
« 1 »
  Strona 1 z 1