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

[SFML 2.1] Scrollowanie mapy kafelkowej

Ostatnio zmodyfikowano 2014-12-07 15:06
Autor Wiadomość
Winner
Temat założony przez niniejszego użytkownika
[SFML 2.1] Scrollowanie mapy kafelkowej
» 2014-12-07 13:05:40
Cześć, przez ostatnio napisałem taki kod odpowiedzialny za wyświetlanie mapy kafelkowej:
C/C++
void LadowanieMapy()
{
    map_y = 0;
    for( int i = 0; i < 13; i++ )
    {
        map_x = 0;
        for( int j = 0; j < 25; j++ )
        {
            if( mapa[ i ][ j ] == 2 )
            {
                teren[ 0 ].setPosition( map_x, map_y );
                GraMario.draw( teren[ 0 ] );
               
            }
            if( mapa[ i ][ j ] == 1 )
            {
                teren[ 1 ].setPosition( map_x, map_y );
                GraMario.draw( teren[ 1 ] );
            }
            if( mapa[ i ][ j ] == 3 )
            {
                teren[ 2 ].setPosition( map_x, map_y );
                GraMario.draw( teren[ 2 ] );
            }
            if( mapa[ i ][ j ] == 4 )
            {
                teren[ 3 ].setPosition( map_x, map_y );
                GraMario.draw( teren[ 3 ] );
            }
            map_x += 50;
        }
        map_y += 50;
    }
}
W pętli głównej:
C/C++
int main()
{
    GraMario.create( sf::VideoMode( 1250, 650, 32 ), "Mario" );
    LadowanieObrazow();
   
    while( GraMario.isOpen() )
    {
        sf::Event zdarzenia;
       
        while( GraMario.pollEvent( zdarzenia ) )
        {
            if( zdarzenia.type == sf::Event::Closed )
            {
                GraMario.close();
            }
        }
       
        GraMario.clear();
        Sterowanie();
        LadowanieMapy();
        GraMario.display();
    }
}

Jednak nie mam pojęcia jak przesunąć tą mapę :/ Próbowałem z "teren[0].move(1,1);" jednak to nie przynosiło efektu. Domyślam się, że problem leży w wyświetlaniu mapy ponieważ teraz co obieg pętli głównej wyświetla mi mapę na tych samych współrzędnych.
P-122452
sajmon
» 2014-12-07 13:33:35
Przy ustawianiu pozycji kafelków oprócz ich normalnej pozycji dodaj jeszcze przesunięcie, który na początku jest 0.
Jak chcesz przesunąć mapę to zmieniasz to przesunięcie i wszystkie kafelki się przesuwają :)
Możesz je dać jako argument funkcji LadowanieMapy :)
P-122454
Winner
Temat założony przez niniejszego użytkownika
» 2014-12-07 15:06:21
Dzięki, nie spodziewałem się tak prostego rozwiązania :D Tutaj wstępny kod jeżeli ktoś by miał podobny problem:
C/C++
void LadowanieMapy()
{
    map_y = 0;
    for( int i = 0; i < 13; i++ )
    {
        map_x = 0;
        for( int j = 0; j < 25; j++ )
        {
            if( mapa[ i ][ j ] == 2 )
            {
                teren[ 0 ].setPosition( map_x + przesuniecie, map_y );
                GraMario.draw( teren[ 0 ] );
               
            }
            if( mapa[ i ][ j ] == 1 )
            {
                teren[ 1 ].setPosition( map_x, map_y );
                GraMario.draw( teren[ 1 ] );
            }
            if( mapa[ i ][ j ] == 3 )
            {
                teren[ 2 ].setPosition( map_x, map_y );
                GraMario.draw( teren[ 2 ] );
            }
            if( mapa[ i ][ j ] == 4 )
            {
                teren[ 3 ].setPosition( map_x, map_y );
                GraMario.draw( teren[ 3 ] );
            }
            map_x += 50;
        }
        map_y += 50;
    }
    if( sf::Keyboard::isKeyPressed( sf::Keyboard::Right ) )
    {
        przesuniecie++;
    }
}
P-122468
« 1 »
  Strona 1 z 1