SeaMonster131 Temat założony przez niniejszego użytkownika |
[C++] Mapa izometryczna » 2011-02-19 20:29:46 No właśnie...wiem, było już dużo takich tematów, ale nie znalazłem tam odpowiedzi na moje pytanie. Gdy wyświetlam sobie taką ów mapę izometryczną to wychodzi mi takie coś: http://zapodaj.net/c2a73316cbf8.png.html A chcę aby normalnie mapa się wyświetliła (bez czarnych przerw) :) Więc postanowiłem wyświetlać kafle co 2. raz x+30, y+16. Ale wyszły mi tylko takie pionowe pasy... bool dodac = false; void seemap( int pos_kw_X, int pos_kw_Y ) { for( int y = 0; y < 37; y++ ) { for( int x = 0; x < 26; x++ ) { if( map[ y ][ x ] == 0 ) { if( !dodac ) { masked_blit( teren, bufor, 0, 0, x * 30 + pos_kw_X, y * 16 + pos_kw_Y, 30, 16 ); dodac = true; } else if( dodac ) { masked_blit( teren, bufor, 0, 0, x * 30 + 30 + pos_kw_X, y * 16 + 16 + pos_kw_Y, 30, 16 ); dodac = false; } } if( map[ y ][ x ] == 1 ) { if( !dodac ) { masked_blit( teren, bufor, 32, 0, x * 30 + pos_kw_X, y * 16 + pos_kw_Y, 30, 16 ); dodac = true; } else if( dodac ) { masked_blit( teren, bufor, 32, 0, x * 30 + 30 + pos_kw_X, y * 16 + 16 + pos_kw_Y, 30, 16 ); dodac = false; } } if( map[ y ][ x ] == 2 ) { if( !dodac ) { masked_blit( teren, bufor, 0, 18, x * 30 + pos_kw_X, y * 16 + pos_kw_Y, 30, 16 ); dodac = true; } else if( dodac ) { masked_blit( teren, bufor, 0, 18, x * 30 + 30 + pos_kw_X, y * 16 + 16 + pos_kw_Y, 30, 16 ); dodac = false; } } if( map[ y ][ x ] == 3 ) { if( !dodac ) { masked_blit( teren, bufor, 32, 18, x * 30 + pos_kw_X, y * 16 + pos_kw_Y, 30, 16 ); dodac = true; } else if( dodac ) { masked_blit( teren, bufor, 32, 18, x * 30 + 30 + pos_kw_X, y * 16 + 16 + pos_kw_Y, 30, 16 ); dodac = false; } } } } }
Mógłby mi ktoś podpowiedź, w jaki sposób wyświetlać tą mapę izometryczną w poprawny sposób? :) |
|
DejaVu |
» 2011-02-19 20:43:27 Rysuj tylko parzyste wiersze tak jak obecnie rysujesz całą mapę, a później tylko nieparzyste wiersze tak jak obecną mapę (z przesunięciem takim, aby dziurę załatać). |
|
SeaMonster131 Temat założony przez niniejszego użytkownika |
» 2011-02-19 21:05:13 Ohh..boże :) Nie wiem dlaczego, ale gdy zakładam nowy temat to do mózgu mi przychodzi rozwiązanie :) Rysuję to np tak: if( map[ y ][ x ] == 0 ) { masked_blit( teren, bufor, 0, 0, x * 30 + pos_kw_X, y * 16 + pos_kw_Y, 30, 16 ); masked_blit( teren, bufor, 0, 0, x * 30 + 16 + pos_kw_X, y * 16 + 8 + pos_kw_Y, 30, 16 ); }
Czyli rysuję sobie taki sam kafel ale o współrzędnych X+połowa długości kafla, Y+połowa wysokości kafla. Heh...dzięki, pozdrawiam :) |
|
« 1 » |