Ageus Temat założony przez niniejszego użytkownika |
[ Allegro , c++ ]scrollowanie mapy w rzucie izometrycznym » 2013-11-18 17:26:10 Witam. Mam następujące fragmenty kodu void wyswmapy() { for( int i = 0; i < 32; i++ ) { for( int j = 0; j < 32; j++ ) { xx =( j - i ) *( szerkafla / 2 ); yy =(( j - 1 ) +( i - 1 ) ) *( wyskafla / 2 ); if( mapa[ i ][ j ] == 1 ) { masked_blit( kafel, bufor, 0, 0, xx, yy, 64, 48 ); } } } }
void scrollowanie() { if( key[ KEY_UP ] ) { ybufora -= 48; } if( key[ KEY_DOWN ] ) { ybufora += 48; } if( key[ KEY_LEFT ] ) { xbufora -= 48; } if( key[ KEY_RIGHT ] ) { xbufora += 48; } }
while( !key[ KEY_ESC ] ) { clear_to_color( bufor, makecol( 0, 0, 0 ) ); wyswmapy(); scrollowanie(); while( speed > 0 ) { speed--; } blit( bufor, screen, xbufora, ybufora, 0, 0, bufor->w / 2, bufor->h / 2 ); } }
które mają wyświetlać i scrollować mapę izometryczną. Niestety po kilku kratkach kolejne kafle zaczynają nachodzić się na siebie jak na obrazku: http://imageshack.com/a/img706/8541/ixv9.png. A dąże do prawidłowego scrollowania i wyświetlania mapy. Czy mógłby ktoś wytłumaczyć mi jak to zrobić? |
|
SeaMonster131 |
» 2013-11-18 20:00:39 Ja bym dał po prostu: masked_blit( kafel, bufor, 0, 0, xx + xbufora, yy + ybufora, 64, 48 );
|
|
Ageus Temat założony przez niniejszego użytkownika |
» 2013-11-18 21:18:26 wkleiłem tę linijkę, i teraz z kolei scrollować mogę tylko o jedną kratkę w każdą stronę, ponieważ gdy puszczę klawisz kafle wracają z powrotem. Może po prostu dam cały kod, bo błąd może być w innym miejscu niż myślę? |
|
SeaMonster131 |
» 2013-11-18 21:33:22 Najwidoczniej zerujesz gdzieś w pętli zmienne xbufor, ybufor. |
|
Ageus Temat założony przez niniejszego użytkownika |
» 2013-11-19 15:19:05 Już wiem co było nie tak. Zapomniałem w pętli głównej nie przestawiać bufora. blit( bufor, screen, 0, 0, 0, 0, bufor->w / 2, bufor->h / 2 ); Przestawiłem na 0 i teraz działa. Dzięki za pomoc, bo teraz obydwie rzeczy działają jak trzeba. |
|
« 1 » |