[SDL] Przesuwanie tła;
Ostatnio zmodyfikowano 2014-01-14 13:48
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: 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: 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: 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ąć. |
|
DejaVu |
» 2014-01-14 13:48:02 Skoro pierwszy kod działa to jaki masz problem...? |
|
« 1 » |