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

[Allegro] Scrollowanie mapy

Ostatnio zmodyfikowano 2008-05-12 19:39
Autor Wiadomość
Ju1ian
Temat założony przez niniejszego użytkownika
[Allegro] Scrollowanie mapy
» 2008-05-10 10:28:18
Mam 2 pytania:
1) Mam proste scrollowanie mapy (gdy idę tam kwiatki itp. się przewijają), tylko nie wiem jak zrobić żeby niebo i ziemia się przewijały. To znaczy gdy już ziemia się troszeczkę przewinie to ten zasłonięty obszar ziemi przerzuca się na początek (mam nadzieję, że wiesz o co mi chodzi).
2) Nie wiem jak podzielić kod na funkcję menu i granie. Oto mój kod:
C/C++
bool kolizja( float x1, float y1, float s1, float w1, float x2, float y2, float s2, float w2 )
{
    if( x1 + s1 >= x2 && x1 <= x2 + s2 && y1 + w1 >= y2 && y1 <= y2 + w2 ) return( true );
   
    return( false );
};

#include <allegro.h>
class Cpostac
{
public:
    int x, y;
    short int kierunek, klatka;
};
// Zmienna naszej klasy
Cpostac ludek;

// Inicjowanie timera
volatile long speed = 0;
void increment_speed()
{
    speed++;
}
END_OF_FUNCTION( increment_speed );
LOCK_VARIABLE( speed );
LOCK_FUNCTION( increment_speed );
int przycisk_x = 50, przycisk_y = 300;

int mx = 0, my = 0, mb = 0;
void myszka()
{
    if( mx != mouse_x || my != mouse_y || mb != mouse_b )
    {
        mx = mouse_x;
        my = mouse_y;
        mb = mouse_b;
    }
};


int main()
{
    allegro_init();
    install_keyboard();
    set_color_depth( 16 );
    set_gfx_mode( GFX_AUTODETECT_WINDOWED, 640, 480, 0, 0 );
    install_timer();
    install_int_ex( increment_speed, BPS_TO_TIMER( 80 ) );
    install_mouse();
    show_mouse( screen );
    unscare_mouse();
   
    //clear_to_color(screen, makecol(300,300,300));
   
    BITMAP * klocki = NULL;
    BITMAP * niebo = NULL;
    BITMAP * ludekb = NULL;
    BITMAP * bufor = NULL;
    BITMAP * platfa = NULL;
   
   
   
    int zycie = 100;
   
    bufor = load_bmp( "data/gfx/bufor.bmp", default_palette );
   
    if( !bufor )
    {
        set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
        allegro_message( "Nie moge utworzyc bufora !" );
        allegro_exit();
        return 0;
    }
    klocki = load_bmp( "data/gfx/klocki.bmp", default_palette );
    ludekb = load_bmp( "data/gfx/ludek.bmp", default_palette );
    niebo = load_bmp( "data/gfx/niebo.bmp", default_palette );
    platfa = load_bmp( "data/gfx/platforma.bmp", default_palette );
   
    if( !ludekb )
    {
       
        set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
        allegro_message( "Nie moge zaladowac obrazka Ludek !" );
        allegro_exit();
        return 0;
    }
    int klocki_x = 0, klocki_y = 370;
    int platfa_x = 350, platfa_y = 250;
    float ludek_ruch_y = 8;
    int niebo_x = 0, niebo_y = 0;
    ludek.y = 0;
    ludek.x = 100;
    int frame = 0;
    ludek.klatka = 0;
    ludek.kierunek = 0;
    long int poczatek_x = 0;
    while( !key[ KEY_ESC ] )
    {
        while( speed > 0 )
        {
            //ludek.kierunek = 0;
            if( key[ KEY_RIGHT ] && ludek.x != 570 )
            {
                ludek.x += 2;
                ludek.kierunek = 2;
            }
           
            else if( key[ KEY_LEFT ] && ludek.x != 0 )
            {
                ludek.x -= 2;
                ludek.kierunek = 3;
            }
            else if( ludek.x == 570 && key[ KEY_RIGHT ] ) {
                platfa_x -= 2;
                //poczatek_x-=2;
                ludek.x == 570;
                ludek.kierunek = 2;
            }
            else if( ludek.x == 0 && key[ KEY_LEFT ] && poczatek_x != ludek.x ) {
                platfa_x += 2;
                //poczatek_x+=2;
                ludek.x == 0;
                ludek.kierunek = 3;
            }
            //if (ludek.x<=poczatek_x && key[KEY_LEFT]) {
            //ludek.x=poczatek_x;
            //}
            myszka();
            if( ludek.y != klocki_y - 53 && kolizja( ludek.x, ludek.y, 60, 60, platfa_x, platfa_y, platfa->w, platfa->h ) == false )
                 ludek.kierunek = 1;
            //obsługa osi Y
            if(( key[ KEY_UP ] ) &&( ludek_ruch_y == 0 ) &&( ludek.y == klocki_y - 53 || ludek.y == platfa_y - 52 ) ) {
                ludek_ruch_y =- 8;
            }
            ludek.y += ludek_ruch_y;
            if(( ludek.y + ludek_ruch_y >= klocki_y - 53 ) &&( ludek.y <= klocki_y - 53 ) )
            {
                ludek_ruch_y = 0;
                ludek.y = klocki_y - 53;
            } else
            {
                ludek_ruch_y += 0.2;
            }
           
            if( kolizja( ludek.x, ludek.y, 60, 60, platfa_x, platfa_y, platfa->w, platfa->h ) == true )
            {
                if(( ludek_ruch_y > 0 ) &&( ludek.y >= platfa_y - 52 ) &&( ludek.y - ludek_ruch_y <= platfa_y - 52 ) )
                {
                    ludek_ruch_y = 0;
                    ludek.y = platfa_y - 52;
                }
            }
            speed--;
            if( key[ KEY_LEFT ] || key[ KEY_RIGHT ] ||( ludek.y != klocki_y - 53 && kolizja( ludek.x, ludek.y, 60, 60, platfa_x, platfa_y, platfa->w, platfa->h ) == false ) )
                 frame += 1;
           
            if( frame > 40 ) frame = 0;
           
        }
        //  rest(10);
        if( frame < 20 ) { ludek.klatka = 0; }
        else if( frame >= 20 && frame < 40 ) { ludek.klatka = 1; }
        clear_to_color( bufor, makecol( 150, 255, 0 ) );
        blit( niebo, bufor, 0, 0, niebo_x, niebo_y, niebo->w, niebo->h );
        masked_blit( platfa, bufor, 0, 0, platfa_x, platfa_y, platfa->w, platfa->h );
        masked_blit( klocki, bufor, 0, 0, klocki_x, klocki_y, klocki->w, klocki->h );
        masked_blit( ludekb, bufor, ludek.kierunek * 60, ludek.klatka * 60, ludek.x, ludek.y, 60, 60 );
        blit( bufor, screen, 0, 0, 0, 0, 640, 480 );
    }
    if( key[ KEY_ESC ] ) {
        allegro_message( "No dobra..." );
    }
    destroy_bitmap( klocki );
    destroy_bitmap( niebo );
    destroy_bitmap( ludekb );
    destroy_bitmap( bufor );
    destroy_bitmap( platfa );
    allegro_exit();
    return 0;
}

END_OF_MAIN();
P-660
DejaVu
Scrollowanie bitmapy (lewo/prawo)
» 2008-05-10 11:17:51
Załóżmy że:
mapa_x - obecne przesunięcie mapy
ekran_x - szerokość ekranu (np. 800px)
obraz_x==ekran_x - zakładamy że szerokość obrazu jest taka sama jak ekranu
1. Metoda prosta scrollingu:
rysuj 2 tła obok siebie (wzór na początkową współrzędną x dla nieba i ziemii):
C/C++
int tlo1_x = - mapa_x % ekran_x;
int tlo2_x = ekran_x - mapa_x % ekran_x;
2. Metoda trudniejsza (chyba):
Wycinaj uciętą część obrazu i wklejaj ją w miejscu w którym powinna się znaleźć

Jeśli jest funkcja w allegro do rysowania wybranego fragmentu bitmapy, to wyglądałoby to tak:
C/C++
//zakładamy że istnieje funkcja: rysuj_fragment_bitmapy(bufor_docelowy, x_start, y_start, bufor_zrodlowy_obrazek, x_wytnij_od, y_wytnij_od, szerokosc, wysokosc);
int ekran_x = 800;
int obraz_x = 300;
int mapa_x = 50; //przesunięcie mapy

int i = obraz_x -( mapa_x % obraz_x );
rysuj_fragment_bitmapy( bufor, 0, 0, tlo, mapa_x % obraz_x, 0, i, obraz_y );
for(; i < ekran_x - obraz_x; i += obraz_x ) rysuj_fragment_bitmapy( bufor, i, 0, tlo, 0, 0, obraz_x, obraz_y );

if( i < ekran_x ) rysuj_fragment_bitmapy( bufor, i, 0, tlo, 0, 0, ekran_x - i, obraz_y );

Powyższy kod powinien działać prawidłowo dla dowolnego rozmiaru obrazu.
P-661
DejaVu
Podział kodu
» 2008-05-10 11:21:50
Inicjację trybu graficznego i zamykanie zostaw w main'ie, cały kod gry wyciągnij do osobnej funkcji i w niej deklaruj zmienne, rysuj grafikę itp. Menu również wyciągnij do osobnej funkcji. Jak zrobisz grę to dorobisz do niej menu. W menu zrobisz sobie przycisk start, który jeśli bedzie kliknięty to wywoła funkcję gry. Po zakończeniu gry (przegranej/wygranej) gra automatycznie powróci do menu.
P-662
Ju1ian
Temat założony przez niniejszego użytkownika
» 2008-05-10 13:38:25
Rysowanie fragmentu bitmapy w Allegro jest na 100%. W Allegro można zrobić dużo efektów z bitmapami. Dzięki, problem już rozwiązany, ale nie zamykaj tematu, może mi się jeszcze przydać ;)
P-663
Ju1ian
Temat założony przez niniejszego użytkownika
» 2008-05-10 13:50:37
Oj, coś nie działa z tą 1 metodą. Powinno być dobrze, ale niebo się nie przesuwa:
C/C++
bool kolizja( float x1, float y1, float s1, float w1, float x2, float y2, float s2, float w2 )
{
    if( x1 + s1 >= x2 && x1 <= x2 + s2 && y1 + w1 >= y2 && y1 <= y2 + w2 ) return( true );
   
    return( false );
};

#include <allegro.h>
class Cpostac
{
public:
    int x, y;
    short int kierunek, klatka;
};
// Zmienna naszej klasy
Cpostac ludek;

// Inicjowanie timera
volatile long speed = 0;
void increment_speed()
{
    speed++;
}
END_OF_FUNCTION( increment_speed );
LOCK_VARIABLE( speed );
LOCK_FUNCTION( increment_speed );
int przycisk_x = 50, przycisk_y = 300;

int mx = 0, my = 0, mb = 0;
void myszka()
{
    if( mx != mouse_x || my != mouse_y || mb != mouse_b )
    {
        mx = mouse_x;
        my = mouse_y;
        mb = mouse_b;
    }
};


int main()
{
    allegro_init();
    install_keyboard();
    set_color_depth( 16 );
    set_gfx_mode( GFX_AUTODETECT_WINDOWED, 640, 480, 0, 0 );
    install_timer();
    install_int_ex( increment_speed, BPS_TO_TIMER( 80 ) );
    install_mouse();
    show_mouse( screen );
    unscare_mouse();
   
    //clear_to_color(screen, makecol(300,300,300));
   
    BITMAP * klocki = NULL;
    BITMAP * niebo = NULL;
    BITMAP * ludekb = NULL;
    BITMAP * bufor = NULL;
    BITMAP * platfa = NULL;
   
   
   
    int zycie = 100;
   
    bufor = load_bmp( "data/gfx/bufor.bmp", default_palette );
   
    if( !bufor )
    {
        set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
        allegro_message( "Nie moge utworzyc bufora !" );
        allegro_exit();
        return 0;
    }
    klocki = load_bmp( "data/gfx/klocki.bmp", default_palette );
    ludekb = load_bmp( "data/gfx/ludek.bmp", default_palette );
    niebo = load_bmp( "data/gfx/niebo.bmp", default_palette );
    platfa = load_bmp( "data/gfx/platforma.bmp", default_palette );
   
    if( !ludekb )
    {
       
        set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
        allegro_message( "Nie moge zaladowac obrazka Ludek !" );
        allegro_exit();
        return 0;
    }
    int klocki_x = 0, klocki_y = 370;
    int platfa_x = 350, platfa_y = 250;
    float ludek_ruch_y = 8;
    int niebo_x = 0, niebo_y = 0;
    int niebo2_x = 0, niebo2_y = 0;
    ludek.y = 0;
    ludek.x = 100;
    int frame = 0;
    ludek.klatka = 0;
    ludek.kierunek = 0;
    int poczatek_x = 0;
   
    int mapa_x = 0, ekran_x = 640;
    int obraz_x = ekran_x;
    niebo_x = - mapa_x % ekran_x;
    niebo2_x = ekran_x - mapa_x % ekran_x;
    while( !key[ KEY_ESC ] )
    {
        while( speed > 0 )
        {
            //ludek.kierunek = 0;
            if( key[ KEY_RIGHT ] && ludek.x != 570 )
            {
                ludek.x += 2;
                ludek.kierunek = 2;
            }
           
            else if( key[ KEY_LEFT ] && ludek.x != 0 )
            {
                ludek.x -= 2;
                ludek.kierunek = 3;
            }
            else if( ludek.x == 570 && key[ KEY_RIGHT ] ) {
                platfa_x -= 2;
                //poczatek_x-=2;
                ludek.x == 570;
                ludek.kierunek = 2;
                mapa_x += 2;
            }
            else if( ludek.x == 0 && key[ KEY_LEFT ] && poczatek_x != ludek.x ) {
                platfa_x += 2;
                //poczatek_x+=2;
                ludek.x == 0;
                ludek.kierunek = 3;
            }
            //if (ludek.x<=poczatek_x && key[KEY_LEFT]) {
            //ludek.x=poczatek_x;
            //}
            myszka();
            if( ludek.y != klocki_y - 53 && kolizja( ludek.x, ludek.y, 60, 60, platfa_x, platfa_y, platfa->w, platfa->h ) == false )
                 ludek.kierunek = 1;
            //obsługa osi Y
            if(( key[ KEY_UP ] ) &&( ludek_ruch_y == 0 ) &&( ludek.y == klocki_y - 53 || ludek.y == platfa_y - 52 ) ) {
                ludek_ruch_y =- 8;
            }
            ludek.y += ludek_ruch_y;
            if(( ludek.y + ludek_ruch_y >= klocki_y - 53 ) &&( ludek.y <= klocki_y - 53 ) )
            {
                ludek_ruch_y = 0;
                ludek.y = klocki_y - 53;
            } else
            {
                ludek_ruch_y += 0.2;
            }
           
            if( kolizja( ludek.x, ludek.y, 60, 60, platfa_x, platfa_y, platfa->w, platfa->h ) == true )
            {
                if(( ludek_ruch_y > 0 ) &&( ludek.y >= platfa_y - 52 ) &&( ludek.y - ludek_ruch_y <= platfa_y - 52 ) )
                {
                    ludek_ruch_y = 0;
                    ludek.y = platfa_y - 52;
                }
            }
            speed--;
            if( key[ KEY_LEFT ] || key[ KEY_RIGHT ] ||( ludek.y != klocki_y - 53 && kolizja( ludek.x, ludek.y, 60, 60, platfa_x, platfa_y, platfa->w, platfa->h ) == false ) )
                 frame += 1;
           
            if( frame > 40 ) frame = 0;
           
        }
        //  rest(10);
        if( frame < 20 ) { ludek.klatka = 0; }
        else if( frame >= 20 && frame < 40 ) { ludek.klatka = 1; }
        clear_to_color( bufor, makecol( 150, 255, 0 ) );
        blit( niebo, bufor, 0, 0, niebo_x, niebo_y, niebo->w, niebo->h );
        blit( niebo, bufor, 0, 0, niebo2_x, niebo2_y, niebo->w, niebo->h );
        masked_blit( platfa, bufor, 0, 0, platfa_x, platfa_y, platfa->w, platfa->h );
        masked_blit( klocki, bufor, 0, 0, klocki_x, klocki_y, klocki->w, klocki->h );
        masked_blit( ludekb, bufor, ludek.kierunek * 60, ludek.klatka * 60, ludek.x, ludek.y, 60, 60 );
        blit( bufor, screen, 0, 0, 0, 0, 640, 480 );
    }
    if( key[ KEY_ESC ] ) {
        allegro_message( "No dobra..." );
    }
    destroy_bitmap( klocki );
    destroy_bitmap( niebo );
    destroy_bitmap( ludekb );
    destroy_bitmap( bufor );
    destroy_bitmap( platfa );
    allegro_exit();
    return 0;
}

END_OF_MAIN();
P-664
DejaVu
Rozwiązanie (scrolling nieba)
» 2008-05-10 14:03:02
C/C++
bool kolizja( float x1, float y1, float s1, float w1, float x2, float y2, float s2, float w2 )
{
    if( x1 + s1 >= x2 && x1 <= x2 + s2 && y1 + w1 >= y2 && y1 <= y2 + w2 ) return( true );
   
    return( false );
};

#include <allegro.h>
class Cpostac
{
public:
    int x, y;
    short int kierunek, klatka;
};
// Zmienna naszej klasy
Cpostac ludek;

// Inicjowanie timera
volatile long speed = 0;
void increment_speed()
{
    speed++;
}
END_OF_FUNCTION( increment_speed );
LOCK_VARIABLE( speed );
LOCK_FUNCTION( increment_speed );
int przycisk_x = 50, przycisk_y = 300;

int mx = 0, my = 0, mb = 0;
void myszka()
{
    if( mx != mouse_x || my != mouse_y || mb != mouse_b )
    {
        mx = mouse_x;
        my = mouse_y;
        mb = mouse_b;
    }
};


int main()
{
    allegro_init();
    install_keyboard();
    set_color_depth( 16 );
    set_gfx_mode( GFX_AUTODETECT_WINDOWED, 640, 480, 0, 0 );
    install_timer();
    install_int_ex( increment_speed, BPS_TO_TIMER( 80 ) );
    install_mouse();
    show_mouse( screen );
    unscare_mouse();
   
    //clear_to_color(screen, makecol(300,300,300));
   
    BITMAP * klocki = NULL;
    BITMAP * niebo = NULL;
    BITMAP * ludekb = NULL;
    BITMAP * bufor = NULL;
    BITMAP * platfa = NULL;
   
   
   
    int zycie = 100;
   
    bufor = load_bmp( "data/gfx/bufor.bmp", default_palette );
   
    if( !bufor )
    {
        set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
        allegro_message( "Nie moge utworzyc bufora !" );
        allegro_exit();
        return 0;
    }
    klocki = load_bmp( "data/gfx/klocki.bmp", default_palette );
    ludekb = load_bmp( "data/gfx/ludek.bmp", default_palette );
    niebo = load_bmp( "data/gfx/niebo.bmp", default_palette );
    platfa = load_bmp( "data/gfx/platforma.bmp", default_palette );
   
    if( !ludekb )
    {
       
        set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
        allegro_message( "Nie moge zaladowac obrazka Ludek !" );
        allegro_exit();
        return 0;
    }
    int klocki_x = 0, klocki_y = 370;
    int platfa_x = 350, platfa_y = 250;
    float ludek_ruch_y = 8;
    int niebo_x = 0, niebo_y = 0;
    int niebo2_x = 0, niebo2_y = 0;
    ludek.y = 0;
    ludek.x = 100;
    int frame = 0;
    ludek.klatka = 0;
    ludek.kierunek = 0;
    int poczatek_x = 0;
   
    int mapa_x = 0, ekran_x = 640;
    int obraz_x = ekran_x;
    while( !key[ KEY_ESC ] )
    {
        niebo_x = - mapa_x % ekran_x;
        niebo2_x = ekran_x - mapa_x % ekran_x;
        mapa_x++;
        while( speed > 0 )
        {
            //ludek.kierunek = 0;
            if( key[ KEY_RIGHT ] && ludek.x != 570 )
            {
                ludek.x += 2;
                ludek.kierunek = 2;
            }
           
            else if( key[ KEY_LEFT ] && ludek.x != 0 )
            {
                ludek.x -= 2;
                ludek.kierunek = 3;
            }
            else if( ludek.x == 570 && key[ KEY_RIGHT ] ) {
                platfa_x -= 2;
                //poczatek_x-=2;
                ludek.x == 570;
                ludek.kierunek = 2;
                mapa_x += 2;
            }
            else if( ludek.x == 0 && key[ KEY_LEFT ] && poczatek_x != ludek.x ) {
                platfa_x += 2;
                //poczatek_x+=2;
                ludek.x == 0;
                ludek.kierunek = 3;
            }
            //if (ludek.x<=poczatek_x && key[KEY_LEFT]) {
            //ludek.x=poczatek_x;
            //}
            myszka();
            if( ludek.y != klocki_y - 53 && kolizja( ludek.x, ludek.y, 60, 60, platfa_x, platfa_y, platfa->w, platfa->h ) == false )
                 ludek.kierunek = 1;
            //obsługa osi Y
            if(( key[ KEY_UP ] ) &&( ludek_ruch_y == 0 ) &&( ludek.y == klocki_y - 53 || ludek.y == platfa_y - 52 ) ) {
                ludek_ruch_y =- 8;
            }
            ludek.y += ludek_ruch_y;
            if(( ludek.y + ludek_ruch_y >= klocki_y - 53 ) &&( ludek.y <= klocki_y - 53 ) )
            {
                ludek_ruch_y = 0;
                ludek.y = klocki_y - 53;
            } else
            {
                ludek_ruch_y += 0.2;
            }
           
            if( kolizja( ludek.x, ludek.y, 60, 60, platfa_x, platfa_y, platfa->w, platfa->h ) == true )
            {
                if(( ludek_ruch_y > 0 ) &&( ludek.y >= platfa_y - 52 ) &&( ludek.y - ludek_ruch_y <= platfa_y - 52 ) )
                {
                    ludek_ruch_y = 0;
                    ludek.y = platfa_y - 52;
                }
            }
            speed--;
            if( key[ KEY_LEFT ] || key[ KEY_RIGHT ] ||( ludek.y != klocki_y - 53 && kolizja( ludek.x, ludek.y, 60, 60, platfa_x, platfa_y, platfa->w, platfa->h ) == false ) )
                 frame += 1;
           
            if( frame > 40 ) frame = 0;
           
        }
        //  rest(10);
        if( frame < 20 ) { ludek.klatka = 0; }
        else if( frame >= 20 && frame < 40 ) { ludek.klatka = 1; }
        clear_to_color( bufor, makecol( 150, 255, 0 ) );
        blit( niebo, bufor, 0, 0, niebo_x, niebo_y, niebo->w, niebo->h );
        blit( niebo, bufor, 0, 0, niebo2_x, niebo2_y, niebo->w, niebo->h );
        masked_blit( platfa, bufor, 0, 0, platfa_x, platfa_y, platfa->w, platfa->h );
        masked_blit( klocki, bufor, 0, 0, klocki_x, klocki_y, klocki->w, klocki->h );
        masked_blit( ludekb, bufor, ludek.kierunek * 60, ludek.klatka * 60, ludek.x, ludek.y, 60, 60 );
        blit( bufor, screen, 0, 0, 0, 0, 640, 480 );
    }
    if( key[ KEY_ESC ] ) {
        allegro_message( "No dobra..." );
    }
    destroy_bitmap( klocki );
    destroy_bitmap( niebo );
    destroy_bitmap( ludekb );
    destroy_bitmap( bufor );
    destroy_bitmap( platfa );
    allegro_exit();
    return 0;
}

END_OF_MAIN();
P-665
Ju1ian
Temat założony przez niniejszego użytkownika
» 2008-05-10 16:13:24
Już prawie wszystko działa, ale gdy dojeżdżam do "początku" mapy, to podłoże i niebo mi zanika. Próbowałem zrobić niewidzalny obiekt, który się przesuwa tak samo jak platforma, ale jeżeli miał współrzędne mniejsze niż 0, to zanikał. Dziwne, bo gdy platforma ma współrzędne mniejsze niż 0 to nie znika, tylko działa tak jak powinno.
P-666
DejaVu
» 2008-05-10 17:08:37
nie rozumiem :)
P-667
« 1 » 2
  Strona 1 z 2 Następna strona