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

[C++/Allegro] Poruszanie się posaci.

Ostatnio zmodyfikowano 2012-05-26 13:13
Autor Wiadomość
Forczek
Temat założony przez niniejszego użytkownika
[C++/Allegro] Poruszanie się posaci.
» 2012-05-26 12:16:28
Siemka, oto mój kod:

C/C++
#include <allegro.h>
int main()
{
    allegro_init();
    install_keyboard();
    set_color_depth( 16 );
    set_gfx_mode( GFX_AUTODETECT_WINDOWED, 800, 500, 0, 0 );
    clear_to_color( screen, makecol( 10, 10, 10 ) );
   
    BITMAP * postac = NULL;
    BITMAP * ludek = NULL;
   
    postac = load_bmp( "postac.bmp", default_palette );
    if( !postac )
    {
        set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
        allegro_message( "nie mogê za³adowaæ Postaci wody !" );
        allegro_exit();
        return 0;
    }
    ludek = load_bmp( "ludek.bmp", default_palette );
    if( !ludek )
    {
        set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
        allegro_message( "nie mogê za³adowaæ Postaci ognia !" );
        allegro_exit();
        return 0;
    }
    masked_blit( postac, screen, 0, 0, 300, 200, postac->w, postac->h );
    masked_blit( ludek, screen, 0, 0, 100, 200, ludek->w, ludek->h );
    int postac_x = 300, postac_y = 200;
    int ludek_x = 100, ludek_y = 200;
   
    while( !key[ KEY_ESC ] )
    {
        if( key[ KEY_A ] ) ludek_x--;
       
        if( key[ KEY_D ] ) ludek_x++;
       
        if( key[ KEY_W ] ) ludek_y--;
       
        if( key[ KEY_S ] ) ludek_y++;
       
        if( key[ KEY_LEFT ] ) postac_x--;
       
        if( key[ KEY_RIGHT ] ) postac_x++;
       
        if( key[ KEY_UP ] ) postac_y--;
       
        if( key[ KEY_DOWN ] ) postac_y++;
       
    }
    destroy_bitmap( ludek );
    destroy_bitmap( postac );
    allegro_exit();
    return 0;
}
END_OF_MAIN();
Co jest z nim nie tak? Wciskam F9 kompiluje się normalnie. Lecz gdy wciskam przycisk to się nie poruszają.
P-57311
akwes
» 2012-05-26 12:31:46
A dlaczego niby ma się ruszać? Skoro Ty ruszasz zupełnie z nim niezwiązanymi zmiennymi?
C/C++
int postac_x = 300, postac_y = 200;
int ludek_x = 100, ludek_y = 200;

Te zmienne się zmieniają. A ludek stoi, bo tylko raz go rysujesz i to we wskazanym miejscu.

C/C++
masked_blit( postac, screen, 0, 0, 300, 200, postac->w, postac->h );
masked_blit( ludek, screen, 0, 0, 100, 200, ludek->w, ludek->h );
P-57312
Forczek
Temat założony przez niniejszego użytkownika
» 2012-05-26 13:13:21
Dzięki, naprawiło się, zamykam temat.
P-57313
« 1 »
  Strona 1 z 1