[Anterior] Conteúdo
[Próximo]
Usando a API Simple DirectMedia Layer
Timers
- Obtendo o tempo atual, em milisegundos
SDL_GetTicks diz quantos milisegundos passaram desde um ponto arbitrário
no passado.
|
Dica:
Em geral, quando se implementa um jogo, o melhor é mover objetos no
jogo baseado em tempo ,ao invés de basear-se na taxa de quadros por
segundo. Isto produz jogabilidade consistente tanto em sistemas
lentos quanto rápidos. |
Exemplo:
#define TICK_INTERVAL 30
Uint32 TimeLeft(void)
{
static Uint32 next_time = 0;
Uint32 now;
now = SDL_GetTicks();
if ( next_time <= now ) {
next_time = now+TICK_INTERVAL;
return(0);
}
return(next_time-now);
}
|
- Esperando um numero especifico de milisegundos
SDL_Delay() permite você esperar por alguma quantidade de
milisegundos
Já que os sistemas operacionais suportados por SDL são multitarefa
, não ha como garantir que sua aplicação vai esperar
exatamente o tempo pedido. Isto deve ser usado mais como um meio de
parada por um tempo do que para despertar em tempo particular.
|
Dica:
A maioria dos sistemas operacionais tem como porção de tempo do
"Escalador de tarefas por tempo" 10 ms. Você pode usar
SDL_Delay(1) como um meio de entregar a CPU pela fatia de tempo
atual,permitindo a outras instancia rodar.Isto é importante em um
"loop apertado" quando você deseja dar tempo a outras
instancias. |
|
|
Exemplo:
{
while ( game_running ) {
UpdateGameState();
SDL_Delay(TimeLeft());
}
}
|
[Anterior] Conteúdo
[Próximo]
|