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

[C++] Mapa izometryczna

Ostatnio zmodyfikowano 2011-02-19 21:05
Autor Wiadomość
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...

C/C++
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? :)
P-28435
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ć).
P-28437
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:

C/C++
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 :)
P-28438
« 1 »
  Strona 1 z 1