SDL e C - Uma dupla sensacional

Neste artigo tentarei apresentar o uso simples da SDL com a linguagem C. Estarei mostrando alguns exemplos práticos para isso.

[ Hits: 58.844 ]

Por: André em 28/01/2011 | Blog: http://127.0.0.1


Realizando alguns ajustes



Agora que sabemos criar uma janela, vamos criar alguns ajustes. Primeiramente, a janela ficou muito grande. Vamos alterar o seu tamanho e sua largura. Para isso, dessa vez, usaremos algumas diretivas. Como eu disse, para seguir este artigo é necessário um conhecimento prévio na linguagem C, logo, não estarei explicando o que é e para que serve uma diretiva.

Após inserir as bibliotecas, adicione as linhas:

#define ALTURA 640
#define LARGURA 480
#define BITS 16
#define TEMPO 4000

Agora, na linha:

tela = SDL_SetVideoMode(700,700,16, SDL_SWSURFACE);

Vamos fazer uma pequena alteração para:

tela = SDL_SetVideoMode(ALTURA, LARGURA, BITS, SDL_SWSURFACE);

E na linha:

SDL_Delay(4000);

Vamos fazer uma pequena alteração para:

SDL_Delay(TEMPO);

Bem mais organizado agora! Vamos agora definir um título para nossa janela. Para isso, utilizaremos a função SDL_WM_SetCaption().

Então, adicione a seguinte linha abaixo da linha usada para iniciar a SDL:

SDL_WM_SetCaption("Meu programa", NULL);

O código inteiro ficará assim:

#include <stdio.h>
#include <SDL/SDL.h>
#define ALTURA 640
#define LARGURA 480
#define BITS 16
#define TEMPO 4000

int main()
{
   SDL_Surface* tela;
  
   SDL_Init(SDL_INIT_EVERYTHING);
  
   SDL_WM_SetCaption("Meu programa", NULL);
  
   tela = SDL_SetVideoMode(ALTURA, LARGURA, BITS, SDL_SWSURFACE);
  
   SDL_Delay(TEMPO);
  
   SDL_Quit();
  
   return 0;
}

Ótimo! Vamos compilar e executar para vermos como ficou o trabalho:
Bem melhor agora! ;)

Vamos ver, na próxima página, como podemos inserir uma imagem "bmp" em nossa janela.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Preparando o ambiente
   3. Conhecendo as primeiras funções
   4. Realizando alguns ajustes
   5. Inserindo uma imagem
   6. Conclusão
Outros artigos deste autor

Gerenciamento de programas no Ubuntu através do Synaptic

Introdução ao Anonimato na Web - Web Anonimity

A profissão: Programador

Programando em Perl (parte 1)

Recuperando arquivos em um Windows corrompido com Linux

Leitura recomendada

OneAPI: A plataforma da Intel para facilitar o desenvolvimento com chips Intel, AMD, ARM, NVIDIA POWER e FPGA

Programação com números inteiros gigantes

Mapear objetos em C

Acessando a porta paralela via Linux

Alocação dinâmica de memória em C

  
Comentários
[1] Comentário enviado por br_rafael em 30/01/2011 - 12:39h

#include <stdio.h>
#include <SDL/SDL.h>

int main(){
SDL_Surface* tela;
SDL_Init(SDL_INIT_EVERYTHING); // Iniciar o SDL
tela = SDL_SetVideoMode(640,480,16,SDL_SWSURFACE);
SDL_Delay(4000); // Esperar 4 segundos
SDL_Quit();
return 0;
}

Quando compilo aparece:

$ gcc -o teste-1-sdl teste-1-sdl.c
/tmp/cciduLoZ.o: In function `main':
teste-1-sdl.c:(.text+0xe): undefined reference to `SDL_Init'
teste-1-sdl.c:(.text+0x27): undefined reference to `SDL_SetVideoMode'
teste-1-sdl.c:(.text+0x35): undefined reference to `SDL_Delay'
teste-1-sdl.c:(.text+0x3a): undefined reference to `SDL_Quit'
collect2: ld returned 1 exit status


[2] Comentário enviado por br_rafael em 30/01/2011 - 12:43h

OK, eu tinha esquecido de colocar o "-lSDL" na hora de compilar.

[3] Comentário enviado por SamL em 30/01/2011 - 12:58h

Legal cara, nota 10. Se for escrever a parte 2 não hesite em pedir ajuda :)

[4] Comentário enviado por WhiteHawk em 30/01/2011 - 12:59h

Muito interessante este artigo. Uma coisa que eu não sabia era que o SDL também pode ser usado com Java.

[5] Comentário enviado por andrezc em 30/01/2011 - 13:06h

Pode deixar, Sam. Mais pra frente eu pretendo fazer a parte 2 sim. :D

[6] Comentário enviado por br_rafael em 30/01/2011 - 13:12h

Ficou uma sensação de quero mais...

Queria um "Parte 2" mostrando como fazer um personagem se movimentar de um lado a outro da tela (com as setas do teclado e o com o boneco em PNG mexendo as pernas).

[7] Comentário enviado por andrezc em 30/01/2011 - 13:20h

Oi, Rafael. Então, no próximo artigo eu estarei dando continuidade a manipulação de imagens na tela, mas se eu conseguir resumir bem, talvez dê para falar algo sobre eventos do teclado. Vou escrever a parte 2 sábado que vem.

[8] Comentário enviado por br_rafael em 30/01/2011 - 17:04h

Pra quem sabe ler inglês, esse tutorial é muito bom (estou lendo e praticando)
http://lazyfoo.net/SDL_tutorials/index.php

Esse artigo também é bom:
http://www.vivaolinux.com.br/artigo/SDL-Otimo-para-criacao-de-jogos

[9] Comentário enviado por andrezc em 30/01/2011 - 17:09h

A um tempo atrás o Sam L. havia me sugerido esse primeiro link. É sem dúvida alguma uma ótima referência. A melhor sobre SDL para C que já li.

[10] Comentário enviado por br_rafael em 30/01/2011 - 17:25h

andrezc, estarei aguardando ansiosamente pela "Parte 2". Eu pretendo trabalhar com jogos multiplataforma (Linux e Windows).

Quando eu ganhar R$ 1.000.000,00 com um jogo, estarei muito feliz ao ponto de liberar o código-fonte em licença GPL :) Tenho interesse em criar um jogo 2D de código-aberto para praticar minhas futuras habilidades. Quem souber SDL e C/C++ está convidado a participar. Programo em PHP desde de 2005, mas em C/C++ desde 2011 (não tenho nem 3 semanas de prática). O convite está ai, quem tiver interesse, entre contato comigo. Vamos aprender juntos? A ideia para o jogo eu já tenho.

Rafael A. de Almeida
rafael.kbps@gmail.com

[11] Comentário enviado por andrezc em 30/01/2011 - 17:53h

Mas você sabe que C e C++ são duas linguagem diferentes, não é ?! Não vou ajudar diretamente em seu projeto pois trabalho o dia inteiro e vou ao curso durante a noite, mas se tiver alguma dúvida e eu souber, eu respondo numa boa.

Boa sorte.

[12] Comentário enviado por br_rafael em 30/01/2011 - 18:11h

Sei que são diferentes, mas que sabe C pode aprender C++

[13] Comentário enviado por evamberto em 09/10/2011 - 19:43h

Quem quiser aprender mais sobre SDL olhe esse site show, http://lazyfoo.net/SDL_tutorials/ !!!!!!!

[14] Comentário enviado por evamberto em 09/10/2011 - 19:44h

parabéns pelo o artigo!!!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts