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

[SDL] Przesuwanie tła;

Ostatnio zmodyfikowano 2014-01-14 13:48
Autor Wiadomość
Kuaczor
Temat założony przez niniejszego użytkownika
[SDL] Przesuwanie tła;
» 2014-01-04 15:00:52
Mam taki kod:
Ten działa:
C/C++
for( int j = 0; j <( height / rozmiar_kafelka ); j++ ) {
    for( int i = 0; i <( width / rozmiar_kafelka ); i++ ) {
        if( i <( plansza + j )->x )
        {
            RysujProstokat( screen,( i * rozmiar_kafelka ),(( rozmiar_kafelka * j ) + predkosc ) %( height - rozmiar_kafelka ), rozmiar_kafelka, rozmiar_kafelka, czerwony, zielony );
        }
        ( * wers ) ++;
    }
}

Ten nie działa:
C/C++
for( int j = 0; j <( height / rozmiar_kafelka ); j++ ) {
    for( int i = 0; i <( width / rozmiar_kafelka ); i++ ) {
        if( i <( plansza +(( * wers ) % 64 ) )->x )
        {
            RysujProstokat( screen,( i * rozmiar_kafelka ),(( rozmiar_kafelka * j ) + predkosc ) %( height - rozmiar_kafelka ), rozmiar_kafelka, rozmiar_kafelka, czerwony, zielony );
        }
        ( * wers ) ++;
    }
}
Funkcja RysujProstokat:
C/C++
void RysujProstokat( SDL_Surface * screen, int x, int y, int l, int k,
Uint32 outlineColor, Uint32 fillColor )
{
    int i, j;
    for( i = y; i < y + k; i++ )
         for( j = x; j < x + l; j++ ) {
        DrawPixel( screen, j, i, fillColor );
        if( j == 0 || j == x + l - 1 ) {
            DrawPixel( screen, j, i, outlineColor );
        }
        if( i == 0 || i == y + k - 1 ) {
            DrawPixel( screen, j, i, outlineColor );
        }
    }
}

Rysuje mapę 30x40, złożoną z kwadratów o boku długości 16px. W tablicy plansza mam elementy typu int ( 20,21,22 itp), które mają oznaczać ile w danym wierszu znajduje się kwadratów. W pierwszym kodzie funkcja bierze pierwsze 30 elementów tablicy i na ich podstawie rysuje wiersze, przesuwa je, a gdy znajda się za blisko dołu ekranu wrzuca je znowu na górę i tak w kółko. Chciałbym aby robiło mi to samo ale z większą ilością elementów, jakieś rady? Siedzę nad tym i nie mogę tego ogarnąć.
P-101106
DejaVu
» 2014-01-14 13:48:02
Skoro pierwszy kod działa to jaki masz problem...?
P-102142
« 1 »
  Strona 1 z 1