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

[c++]allegro

Ostatnio zmodyfikowano 2011-09-14 21:04
Autor Wiadomość
walus1305
Temat założony przez niniejszego użytkownika
[c++]allegro
» 2011-09-12 17:37:54
mój program nie scrolluje mapy tak jak powinien postać się porusza tylko o kilka pixeli a mapa się nie scrolluje.Bardzo proszę o pomoc


C/C++
#include <allegro.h>
#include <iostream>
using namespace std;

int mapa_x = 0;
int mapa_y = 0;
int ludek_x = 0;
int ludek_y = 0;
int ludek_kierunek = 0;
int ludek_klatka = 0;
int frame = 0;
BITMAP * teren = NULL;
BITMAP * bufor = NULL;
BITMAP * ludek = NULL;


int map[ 15 ][ 15 ] =
{
    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
};
void wyswietl()
{
    int i;
    int j;
    for( int i = 0; i < 15; i++ )
    {
        for( int j = 0; j < 15; j++ )
        {
            blit( teren, bufor,
            ( map[ j + mapa_y ][ i + mapa_x ] % 4 ) * 40,
            ( map[ j + mapa_y ][ i + mapa_x ] / 4 ) * 40,
            i * 40, j * 40, 40, 40 );
        }
    }
   
};


int main()
{
    allegro_init();
    install_keyboard();
    set_color_depth( 32 );
    set_gfx_mode( GFX_AUTODETECT_WINDOWED, 600, 480, 0, 0 );
    bufor = create_bitmap( 600, 480 );
    teren = load_bitmap( "teren.bmp", default_palette );
    ludek = load_bitmap( "ludek.bmp", default_palette );
    while( !key[ KEY_ESC ] )
    {
       
        ludek_kierunek = 0;
       
        if(( key[ KEY_LEFT ] ) &&( mapa_x > 0 ) )
        { ludek_kierunek = 4;
            ludek_x--;
            mapa_x--;
        }
       
       
        if(( key[ KEY_RIGHT ] ) &&( mapa_x < 15 ) )
        { ludek_kierunek = 2;
            ludek_x++;
            mapa_x++;
        }
       
       
        if(( key[ KEY_UP ] ) &&( mapa_y > 0 ) )
        { ludek_kierunek = 1;
            ludek_y--;
            mapa_y--;
        }
       
       
        if(( key[ KEY_DOWN ] ) &&( mapa_y < 15 ) )
        { ludek_kierunek = 3;
            ludek_y++;
            mapa_y++;
        }
        rest( 10 );
        frame++;
        if( frame > 40 ) frame = 0;
       
        if( frame < 20 ) { ludek_klatka = 0; }
        else if( frame >= 20 && frame < 40 ) { ludek_klatka = 1; }
        wyswietl();
        masked_blit( ludek, bufor, ludek_kierunek * 50, ludek_klatka * 50, ludek_x, ludek_y, 50, 50 );
        blit( bufor, screen, 0, 0, 0, 0, 600, 480 );
    }
   
   
    destroy_bitmap( teren );
    destroy_bitmap( bufor );
    destroy_bitmap( ludek );
    allegro_exit();
    return 0;
}
END_OF_MAIN();
P-40866
DejaVu
» 2011-09-12 22:09:53
Google:
allegro scrollowanie mapy
Wynik: http://cpp0x.pl/forum/temat/?id=2045
Dodam, że tematów jest dużo więcej i wszystkie odpowiadają na Twój temat.
P-40876
Gabes
» 2011-09-12 23:09:39
Co ma sie scrollować jak masz 15*40=600 pikseli pinowo i poziomo
Ludek w prawo mapa w lewo , mapa max. w lewo ludek w prawo do końca
Ludek w lewo...
Mój kod może ci sie przyda.
http://www.sendspace.pl/file/fb7d7feedd3c0acb831041f
P-40878
walus1305
Temat założony przez niniejszego użytkownika
» 2011-09-14 16:25:44
Gabes
użyłem twojego kodu lecz dalej coś nie działa nie wiem czy to coś w kodzie
P-40966
Gabes
» 2011-09-14 16:49:44
To ja zobaczę twój kod jak działa .
U mnie wyświetlam kafelki rzędami od lewej do prawej a u ciebie wyświetlane są kolumny od lewej do prawej.
P-40968
walus1305
Temat założony przez niniejszego użytkownika
» 2011-09-14 17:59:53
czyli co muszę zmienić?
P-40970
Gabes
» 2011-09-14 18:16:45
Dodaj dla ludka  w prawo
C/C++
if(( key[ KEY_RIGHT ] ) &&( mapa_x > 0 ) && ludek_x < 600 - ludek->w )
{ ludek_kierunek = 2;
    ludek_x++;
}
Dla pozostałych kierunków podobnie.
Przesuwał się tylko 15 pikseli.
P-40971
walus1305
Temat założony przez niniejszego użytkownika
» 2011-09-14 19:13:26
teraz postać nie chce w ogóle iść w prawo a jak dodam tego twojego if'a przed moim ludek idzie lecz mapa się nie scrolluję . Ja już naprawdę nie mam żadnych pomysłów jak to zrobić
P-40972
« 1 » 2
  Strona 1 z 2 Następna strona