[SFML 2.1] Scrollowanie mapy kafelkowej
Ostatnio zmodyfikowano 2014-12-07 15:06
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: 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: 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. |
|
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 :) |
|
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: 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++; } } |
|
« 1 » |