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

[Allegro 5] Gra przyśpiesza na chwilę po zatrzymaniu i wznowieniu gry

Ostatnio zmodyfikowano 2013-06-24 23:22
Autor Wiadomość
aaadam
Temat założony przez niniejszego użytkownika
[Allegro 5] Gra przyśpiesza na chwilę po zatrzymaniu i wznowieniu gry
» 2013-06-24 09:01:51
Dzień dobry mam problem:
C/C++
if( menu == 0 )
{
    al_draw_text( font, al_map_rgb( 44, 117, 255 ), 50, 200, NULL, "ABY KONTYNUOWAC NACISNIJ ENTER " );
    al_draw_text( font, al_map_rgb( 44, 117, 255 ), 50, 250, NULL, "STEROWANIE STRZALKI ORAZ 'Z' " );
    al_draw_text( font, al_map_rgb( 44, 117, 255 ), 50, 300, NULL, "rekord : " );
    al_draw_text( font, al_map_rgb( 44, 117, 255 ), 250, 300, NULL, rekord );
    al_flip_display();
    al_clear_to_color( al_map_rgb( 0, 0, 0 ) );
}
else if( menu == 2 )
{
    Pociski.clear();
    Robaki.clear();
    Robaki2.clear();
    Robaki3.clear();
    al_draw_text( font, al_map_rgb( 44, 117, 255 ), 200, 200, NULL, "kolejny poziom " );
    al_draw_text( font, al_map_rgb( 44, 117, 255 ), 200, 250, NULL, "nacisnij enter " );
    al_flip_display();
    al_clear_to_color( al_map_rgb( 0, 0, 0 ) );
   
    loadlvl = true;
   
    //al_rest(1);//chodzi mi o to
    //menu=1;
}
else if( menu == 1 )
{
    //tutaj główna część aplikacji ponad 1000 linijek
}
zaczyna się grę od menu==0 po wciśnięciu enter zmienia się menu na 1 za każdym razem gry przejdzie się poziom menu =2 i tu mam problem bo jeżeli nie usunę napis wciśnij enter oraz dodam te dwie linijki al_rest(1) oraz menu=1 to zaczynam nowy poziom niby wszystko ładnie działa ale ten czas który przeznaczyłem na pause wykonuje się kilka razy szybciej niż normalnie potem wraca do normalnego stanu.Jeżeli zrobię tak jak jest teraz czyli po klawiszu enter zmienia mi się menu na 1 to wszystko działa poprawnie.
P-86064
DejaVu
» 2013-06-24 23:22:24
Zapamiętaj czas o której zatrzymałeś rozgrywkę, a przy wznawianiu rozgrywki oblicz ile czasu upłynęło i uaktualnij odpowiednio zmienne odpowiedzialne za czas. Zatrzymując czas powodujesz, że:
1. Jakiś tam timer zwiększa delta-t, który zwykle np. wynosi 0.02sek co klatkę.
2. Delta-t stale rośnie i np. zatrzymując grę na 5 sek, nagle Twoja delta wynosi 5.02sek, bo czas rzeczywisty płynął dalej, przez co gra nagle przyśpiesza i potem się stabilizuje, bowiem znów dojdzie do sytuacji w której delta-t będzie wynosiło 0.02sek.

/edit:
Kodu Twojego nie oglądałem - czytałem jedynie opis Twojego problemu.
P-86121
« 1 »
  Strona 1 z 1