Tutorial SDL
Tutorial sobre a biblioteca SDL com exemplos práticos.
Parte 3: Dando vida ao programa: o loop principal
Arquivo: loop.c
Para compilar:
gcc -o loop loop.c -lSDL
Toda aplicação possui um loop principal. É nele onde, praticamente, todo o programa se situa.
Vamos criar um pequeno loop para evitar ter de ficar repetindo o mesmo código várias vezes. O programa acima "blita" uma imagem a cada 60 milissegundos. Ou seja, entrou no loop, "blita" a imagem, em seguida, espera 60 milissegundos e entra numa nova interação e assim por diante, infinitamente, pois NÃO há uma condição de parada.
A janela permanece aberta até que se feche o terminal ou mate o processo do programa. Mais à frente, iremos aprender sobre eventos e criaremos uma condição de parada com eles.
#include <SDL/SDL.h>
int main()
{
SDL_Init(SDL_INIT_VIDEO); // Inicializa o SDL e o sistema de vídeo
SDL_Surface * screen; // A janela principal
SDL_Surface * image; // A imagem
screen = SDL_SetVideoMode(640, 480, 16, SDL_SWSURFACE); // Cria a janela
image = SDL_LoadBMP("ball.bmp"); // Carrega a imagem no formato BMP
// Verifica se carregou a imagem
if (image == NULL)
{
printf("Não foi possivel abrir ball.bmp\n");
return 1;
}
int done = 0; // Variável de controle do loop
while (done == 0) // Enquanto não concluir
{
SDL_BlitSurface(image, NULL, screen, NULL); // Joga a imagem inteira na tela
SDL_Delay(60);
}
SDL_Quit(); // Fecha o SDL
return 0;
}
int main()
{
SDL_Init(SDL_INIT_VIDEO); // Inicializa o SDL e o sistema de vídeo
SDL_Surface * screen; // A janela principal
SDL_Surface * image; // A imagem
screen = SDL_SetVideoMode(640, 480, 16, SDL_SWSURFACE); // Cria a janela
image = SDL_LoadBMP("ball.bmp"); // Carrega a imagem no formato BMP
// Verifica se carregou a imagem
if (image == NULL)
{
printf("Não foi possivel abrir ball.bmp\n");
return 1;
}
int done = 0; // Variável de controle do loop
while (done == 0) // Enquanto não concluir
{
SDL_BlitSurface(image, NULL, screen, NULL); // Joga a imagem inteira na tela
SDL_Delay(60);
}
SDL_Quit(); // Fecha o SDL
return 0;
}
Para compilar:
gcc -o loop loop.c -lSDL
Toda aplicação possui um loop principal. É nele onde, praticamente, todo o programa se situa.
Vamos criar um pequeno loop para evitar ter de ficar repetindo o mesmo código várias vezes. O programa acima "blita" uma imagem a cada 60 milissegundos. Ou seja, entrou no loop, "blita" a imagem, em seguida, espera 60 milissegundos e entra numa nova interação e assim por diante, infinitamente, pois NÃO há uma condição de parada.
A janela permanece aberta até que se feche o terminal ou mate o processo do programa. Mais à frente, iremos aprender sobre eventos e criaremos uma condição de parada com eles.