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

Allegro, timer zamiast rest()

Ostatnio zmodyfikowano 2012-03-20 18:06
Autor Wiadomość
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
C/C++
void w_lewo()
{
    fr_poziomy = create_bitmap( 90 * 8 + 1, 91 );
   
    int x, y; //współrzędne strefy przewijania
    int a = 80; //wielkość jednego cyklu
    for( int i = 0; i < 80; ++i )
    {
        x = 40, y = 160 + ppp * a;
        blit( screen, fr_poziomy, x, y, 0, 0, a * 9, a ); // kopiuje fragment obrazka do pezewijania
        blit( fr_poziomy, screen, 1, 0, x, y, a * 9, a ); // obcina ten fragment o jeden px. z lewej i wstawia na ekran
        blit( fr_poziomy, screen, 0, 0, x + a * 9 - 1, y, 2, a ); // wstawia obciety fragmentu z przeciwnej strony
        rest( 3 );
        if( i == 40 ) play_sample( muzyka, 255, 127, 1000, 0 );
        // zmiana koloru przycisku przewijania ------------------------
        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
C/C++
void w_lewo()
{
    fr_poziomy = create_bitmap( 90 * 8 + 1, 91 );
   
    int x, y; //współrzędne strefy przewijania
    int a = 80; //wielkość jednego cyklu
    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 ); // kopiuje fragment obrazka do pezewijania
            blit( fr_poziomy, screen, 1, 0, x, y, a * 9, a ); // obcina ten fragment o jeden px. z lewej i wstawia na ekran
            blit( fr_poziomy, screen, 0, 0, x + a * 9 - 1, y, 2, a ); // wstawia obciety fragmentu z przeciwnej strony
            // rest(3);
            speed--;
            if( i == 40 ) play_sample( muzyka, 255, 127, 1000, 0 );
            // zmiana koloru przycisku przewijania ------------------------
            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?
P-52978
« 1 »
  Strona 1 z 1