Damien Temat założony przez niniejszego użytkownika |
» 2009-01-02 23:42:02 To może ja swój kod podeśle bo nadal wg mnie sie nie zrozumieliśmy(a może to tylko ja ?):) Tak wyglądają bufory: bufor = create_bitmap( 800, 600 ); bufor2 = create_bitmap( 800, 600 ); bufor3 = create_bitmap( 800, 600 ); Tak wygląda rysowanie: while( mouse_b == 1 ) { mx = mouse_x; my = mouse_y; circlefill( bufor, mx, my - bufy, 3, makecol( 0, 0, 0 ) ); blit( bufor, bufor2, 0, 0, 0, bufy, 800, 600 ); blit( bufor2, screen, 0, 0, 0, 0, 800, 600 ); } blit( bufor, bufor2, 0, 0, 0, bufy, 800, 600 );
kiedy gracz odkliknie lpm wtedy pozycja y bufora jest zwiększana żeby był efekt "grawitacji" wtedy wygląda tak jakby rysunek opadał na dół. Jeśli opadnie wystarczająco to jest czyszczony i przywracany znów na pozycję y=0. Na końcu oczywiście przeniesienie bufora 1 na bufor 2. Potem: masked_blit( floor, bufor2, 0, 0, xpodl, ypodl, 400, 200 ); masked_blit( build1, bufor2, 0, 0, build1x, 115, 400, 600 ); Jest to wyświetlenie podłoża i budynku na buforze 2. Czyli mamy rysunek z bufora 1 + dorysowanie tła. Później: klatka++; switch( klatka ) { case 1: masked_blit( human, bufor2, 2, animation, xhuman, yhuman, humanw, humanh ); break; case 2: masked_blit( human, bufor2, 81, animation, xhuman, yhuman, humanw, humanh ); break; case 3: masked_blit( human, bufor2, 160, animation, xhuman, yhuman, humanw, humanh ); break; case 4: masked_blit( human, bufor2, 241, animation, xhuman, yhuman, humanw, humanh ); break; case 5: masked_blit( human, bufor2, 320, animation, xhuman, yhuman, humanw, humanh ); break; case 6: masked_blit( human, bufor2, 399, animation, xhuman, yhuman, humanw, humanh ); break; case 7: masked_blit( human, bufor2, 478, animation, xhuman, yhuman, humanw, humanh ); break; case 8: masked_blit( human, bufor2, 557, animation, xhuman, yhuman, humanw, humanh ); break; case 9: masked_blit( human, bufor2, 636, animation, xhuman, yhuman, humanw, humanh ); break; case 10: masked_blit( human, bufor2, 717, animation, xhuman, yhuman, humanw, humanh ); break; } if( klatka == 10 ) klatka = 0;
blit( bufor2, bufor3, 0, 0, 0, 0, 800, 600 );
Jest to wyświetlenie odpowiedniej klatki ludzika na buforze 2. Czyli teraz do tła dorysowany jest ludzik. Teraz, jeśli zamienię bufor z buforem2 to nie będzie nic widać oprócz tego rysunku który narysował gracz bo bufor wszystko zasłoni. PS. Dodam jeszcze, że rysunek który będzie rysowany na bieżąco przez gracza ma być interaktywny. |