Pular para o conteúdo

Tutorial SDL

Tutorial sobre a biblioteca SDL com exemplos práticos.
Samuel Leonardo SamL
Hits: 50.441 Categoria: C/C++ Subcategoria: Metodologias
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Parte 3: Dando vida ao programa: o loop principal

Arquivo: loop.c

#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;
}
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

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.

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
   1. Introdução
   2. Aplicação básica
   3. Dando vida ao programa: o loop principal
   4. Eventos no SDL
   5. Controlando uma imagem com o teclado

Programa IRPF - Guia de Instalação e Resolução de alguns Problemas

Extrair arquivos executáveis feito em código Python e executá-los no seu GNU/Linux

Dicas para aprender programação

Desenhando um avatar do Tux no InkScape

A arte e a prática da Disciplina a longo prazo

Guia de Programação em C/GTK 2 - Construindo uma Calculadora Completa

Otimização de algoritmos

Análise dos Métodos de Ordenação usados em Algoritmos Computacionais

Dicas para aprender programação

Linguagem C - Árvores Binárias

#1 Comentário enviado por nelson777 em 01/11/2013 - 15:40h
Finalmente um artigo de C que não é só mais um algoritmo básico de criança e sim algo útil. Parabéns.
#2 Comentário enviado por tsuriu em 03/11/2013 - 20:49h
Parabéns cara... Muito bom o artigo.
#3 Comentário enviado por danilo3610 em 04/11/2013 - 08:53h
Muito bom tutorial Samuel, segui passo a passo este tutorial no meu ubuntu 13.10 64bits,
instalei o SDL_DEV e usei o seu primeiro exemplo porem ao compilar (incluindo -ISDL)
apresentava erros com SDL_Init - "Undefined reference to SDL_Init...". Procurei na net
mas ninguem teve este mesmo problema, já aconteceu com alguem? Se alguem tiver alguma
solução agradeço. Lembrando instalei o SDL_DEV como mostra o tutorial.

att.
#4 Comentário enviado por SamL em 04/11/2013 - 11:32h
Esse problema geralmente acontece quando NÃO se usa -lSDL no final do comando. Veja se você compilou assim: gcc -o janela_01 janela_01.c -lSDL
com o link -lSDL no final.
Se não resolver talvez você tenha instalado a SDL 2.0, veja na pasta /usr/include/ se tem a pasta SDL2.
Se também não resolver, não sei mais o que fazer rsrsrs
#5 Comentário enviado por danilo3610 em 04/11/2013 - 14:00h
Talvez tenha confundido mas só uma duvida, a primeira letra é um l ou i maiúsculo? Desconfio que seja um L minúsculo e
tenha colocado um i maiúsculo no lugar. Quando chegar em casa irei testar.
#6 Comentário enviado por SamL em 04/11/2013 - 14:03h
É um L minúsculo. Avisa se funcionar quando testar.
#7 Comentário enviado por danilo3610 em 04/11/2013 - 19:24h
Era isso mesmo, troquei o I pelo l e funcionou, obrigado.

Contribuir com comentário

Entre na sua conta para comentar.