ゲームの実行速度を制限するゲーム ループを実装して、最大 fps 速度で実行しようとしています。何らかの理由でコードがフリーズし、最初の繰り返しに合格しません。
コードはかなり短く、次のようになります。
int main(int argc, char *argv[])
{
short int end = 0;
struct Escenario level;
struct Personaje player;
SDL_Surface* screen = NULL;
Uint32 next_frame_tick = 0;
Uint32 sleep_time = 0;
readLevelFile( &level, &player );
screen = initSDL();
showBackground(level, screen );
while(!end){
erasePlayer(&player, screen);
end = manageKeyboardKeys( &player );
detectCollisionsAndMove( level, &player );
showPlayer(player, screen );
next_frame_tick += SKIP_TICKS;
sleep_time = next_frame_tick - SDL_GetTicks();
if( sleep_time > 0 ) SDL_Delay( sleep_time );
}
freeMemory(nivel);
SDL_Quit();
return 0;
}
sleep_time > 0 を参照する if 条件を削除すると、動かなくなりますが、私が望むことはしません。私はその行を次のように置き換えようとしました:
while( ( next_frame_tick - SDL_GetTicks() ) > 0 )
{
}
どちらもうまくいかないので、アイデアが不足しています... 誰でもこれで少し手伝ってもらえますか?
前もって感謝します