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

[SFML 2.6.2] Auto-Tiled - Program do rysowania mapy

Ostatnio zmodyfikowano 2025-08-05 06:48
Autor Wiadomość
pekfos
» 2025-07-15 17:22:39
Wyszedłbym od poprawnego wyniku? Paint jak papier, wszystko przyjmie, to nie jest kwestia programowania. Tak jak pisałem, potrzebujesz więcej tekstur, w szczególności przejścia z piaskiem po przekątnej i wodą/trawą w pozostałych rogach.
No i nie bez powodu zrobiłem wyświetlanie mapy przed dopasowaniem kafelków. Patrząc na te obrazki trzeba nie tylko dochodzić co powinno było wyjść, ale najpierw jaki input dał ten błędny wynik.
P-182768
tBane
Temat założony przez niniejszego użytkownika
» 2025-07-15 17:32:48
Ok. Chcę osiągnąć coś takiego, ale dla piasku o szerokości 1 kafelka

P-182769
pekfos
» 2025-07-15 19:07:50
I nie działa? To jest szerokość 1 kafla:

P-182771
tBane
Temat założony przez niniejszego użytkownika
» 2025-07-15 19:20:21
No patrz ... zlośliwość rzeczy martwych teraz mi działa ... xD Dobra, dzięki za pomoc. :-)

P-182772
tBane
Temat założony przez niniejszego użytkownika
» 2025-07-19 14:30:51
No takie coś się trafia :-/ Ja myślę, że dla trawy i stepu powinny być takie przejścia jak dla piasku z tym, że zamiast otoczone wodą powinny być otoczone piaskiem..



C/C++
int getTileIndex( int x, int y ) {
   
int ttype = terrain_types[ y * size.x + x ];
   
return getTileValue( x, y, ttype ) |( getTileValue( x + 1, y, ttype ) << 1 ) |( getTileValue( x, y + 1, ttype ) << 2 ) |( getTileValue( x + 1, y + 1, ttype ) << 3 );
}

int getTileValue( int x, int y, int ttype ) {
   
   
if( ttype == terrain_types[ y * size.x + x ] == 0 )
       
 return( terrain_values[ y * size.x + x ] ) ? 0
       
: 1;
   
else
       
 return terrain_values[ y * size.x + x ];
   
}

void editTile( int x, int y, int terrain_type, int terrain_value ) {
   
   
terrain_types[ y * size.x + x ] = terrain_type;
   
terrain_values[ y * size.x + x ] = terrain_value;
   
   
for( int yy = y - 1; yy <= y + 1; yy++ ) {
       
for( int xx = x - 1; xx <= x + 1; xx++ ) {
           
           
if( xx >= size.x || yy >= size.y || xx < 0 || yy < 0 )
               
 continue;
           
           
int index = getTileIndex( xx, yy );
           
sprites[ yy * size.x + xx ].setTextureRect( sf::IntRect( index * 64 +( yy * 16 ) % 64, terrain_types[ yy * size.x + xx ] * 64 +( xx * 16 ) % 64, 16, 16 ) );
       
}
    }
}
P-182788
pekfos
» 2025-08-03 18:00:46
Jak by to miało wyglądać?
P-182828
tBane
Temat założony przez niniejszego użytkownika
» 2025-08-04 00:08:04
Dokładnie tak. :-)
I właśnie z tym mam problem, że próbuję od wielu dni napisać pod to obliczanie kafelka i nie chce działać ..
P-182832
pekfos
» 2025-08-04 00:29:58
I po co Ci to? To też jest błędne zachowanie. Już to przerabialiśmy w tym temacie.
P-182833
1 2 3 4 5 6 « 7 » 8
Poprzednia strona Strona 7 z 8 Następna strona