Someone. Temat założony przez niniejszego użytkownika |
SFML2 - Mapa kaflowa, jak wyswietlić ? » 2012-12-30 11:34:37 Witam wszystkich, mam mape kafelkowa: sf::Sprite mapaKafelkowa[ 25 ][ 18 ]; Wypelniam ja tak: for( int i = 0; i > 25; ++i ) for( int j = 0; j > 18; ++j ) { mapaKafelkowa[ i ][ j ].setTexture( mapa_source, false ); mapaKafelkowa[ i ][ j ].setTextureRect( sf::IntRect( 0, 0, 32, 32 ) ); }
( Mam nadzieje ze dobrze xD ) Co do mapa_source: Jest to po prostu obraz z teksturkami ( drzewa, trawa, domki itp ). Druga linijka petli odpowiada za wyciecie z mapa_source kwadratu ktory ma odpowiadac za kamien. Ale problem lezy w wyswitleniu tej tablicy. Window.draw( mapaKafelkowa ); Tak sie nie da to oczywiste... Probowalem to robic w petli... ale tez nic sie nie pojawialo. Wiec moglby ktos objasnic gdzie lezy blad ? Pozdrawiam. |
|
kampar |
» 2012-12-30 12:07:59 Zamiast tablicy sprite'ów stwórz zwykłego sprite'a i w każdym obiegu pętli po przypisaniu mu odpowiedniego wycinka wyświetlaj go. Pamiętaj żeby nadać mu także odpowiednią pozycję na ekranie. Jeżeli kafelki mapy korzystają tylko z jednej textury, to jej ustawianie możesz dać przed pętlą, albo w konstruktorze klasy (o ile ją masz). |
|
Someone. Temat założony przez niniejszego użytkownika |
» 2012-12-30 12:25:18 Nie, nie mam żadnej klasy :)
Popróbuje coś i napisze.
@Edit:
Ehh... jakoś nic nie mogę wykombinować :C Może poczęstujesz jakimś kodzikiem ? |
|
kampar |
» 2012-12-30 12:53:25 Pseudo kod: sf::Sprite sprite; sprite.setTexture(...);
for( int i = 0; i < 25; i++ ) { for( int j = 0;...) { sprite.setTextureRect( 0, 0, 32, 32 ); sprite.setPosition( i * 32, j * 32 ); Window.draw( sprite ); } }
|
|
Someone. Temat założony przez niniejszego użytkownika |
» 2012-12-30 13:40:07 Hahahaha !!! Robiłem to samo :) ( Z tym znakiem w petli to sie potem skaplem )
Tylko po prostu czyszczenie ekranu, dałem za wyświetleniem.
Bo jak jest przed, to ekran jest biały :)
@Edit:
Tylko jeszcze takie pytanko: Jak bym chciał np. zrobić tą mape nie z jednej tekstury ? Tylko np. tu dać drzewko tu dać co innego ?
|
|
Mrovqa |
» 2012-12-30 15:05:52 Dane przechowywane w tablicy (w jedynm elemencie) pakujesz do jakiejś struktury, dodajesz tam jeszcze inne informacje takie jak np. nr. obrazka kafelka czy wskaźnika na sf::Sprite. |
|
kampar |
» 2012-12-30 15:09:27 tworzysz tablice zawierającą mapę, np: i ją uzupełniasz, np wczytując plik z mapą. Danemu rodzajowi tekstury przydzielasz odpowiedni numer (tak jak to jest po kolei w grafice). No i potem ustawiasz odpowiedni wycinek na podstawie tej tablicy: sprite.setTextureRect( 0, 0, 32, 32 );
Gdy wszystkie kafelki w grafice są ułożone w jednym poziomie może to wyglądać mniej więcej tak: sprite.setTextureRect( mapa[ j ][ i ] * 32, 0, 32, 32 );
Gdy jest kilka rzędów musisz pokombinować z dzieleniem i z resztą dzielenia (modulo). Poszukaj w google jest tego masa przykładów. |
|
Someone. Temat założony przez niniejszego użytkownika |
» 2012-12-30 18:26:35 Nie ogarniam... :D ( Znaczy to co napisałeś ogarniam, [ no.. w 70% ]. Ale nie wiem jak to na kod przełozyc :) ).
Jakis kod ? ( co i jak ).
( Bede bardzo wdzieczny ).
|
|
« 1 » 2 |