marianekA Temat założony przez niniejszego użytkownika |
Allegro, timer zamiast rest() » 2012-03-20 18:06:47 napisałem gierkę wszystko działa na moim komputerze wspaniale - na innych już gorzej. Wiem sprawa timera...jednakże nie bardzo wychodzi mi jego zastosowanie. załączam jedną z czterech podobnych procedur do przewijania części ekranu z użyciem rest() wszystko gra void w_lewo() { fr_poziomy = create_bitmap( 90 * 8 + 1, 91 ); int x, y; int a = 80; for( int i = 0; i < 80; ++i ) { x = 40, y = 160 + ppp * a; blit( screen, fr_poziomy, x, y, 0, 0, a * 9, a ); blit( fr_poziomy, screen, 1, 0, x, y, a * 9, a ); blit( fr_poziomy, screen, 0, 0, x + a * 9 - 1, y, 2, a ); rest( 3 ); if( i == 40 ) play_sample( muzyka, 255, 127, 1000, 0 ); if( i == 1 ) floodfill( screen, x - 5, y + 40, makecol( 0, 144, 144 ) ); if( i == a - 1 ) floodfill( screen, x - 5, y + 40, makecol( 0, 105, 105 ) ); } };
próbuję użyć timera w/g wzoru z lekcji wszystkie linijki na właściwych miejscach, a tak wygląda moje wywołanie timera w funkcji void w_lewo() { fr_poziomy = create_bitmap( 90 * 8 + 1, 91 ); int x, y; int a = 80; for( int i = 0; i < 80; ++i ) { while( speed > 0 ) { x = 40, y = 160 + ppp * a; blit( screen, fr_poziomy, x, y, 0, 0, a * 9, a ); blit( fr_poziomy, screen, 1, 0, x, y, a * 9, a ); blit( fr_poziomy, screen, 0, 0, x + a * 9 - 1, y, 2, a ); speed--; if( i == 40 ) play_sample( muzyka, 255, 127, 1000, 0 ); if( i == 1 ) floodfill( screen, x - 5, y + 40, makecol( 0, 144, 144 ) ); if( i == a - 1 ) floodfill( screen, x - 5, y + 40, makecol( 0, 105, 105 ) ); } speed = 0; } };
W ten sposób działa niestabilnie jakby nie współdziałało z pętlą FOR Co robię żle? |