Olá pessoal!
Postando hoje, a segunda parte de nosso tutorial de SDL.
Objetivos:
- Poder criar uma janela;
- Configurar esta janela como Fullscreen;
- Configurar a tecla ESC (Escape) para terminar o SDL e sair do programa.
Prontos?
Como vimos no último artigo criamos uma janela, com um determinado tamanho e utilizamos um Delay para finalizar a janela.
Lembram-se quando eu falei das Flags no último tutorial?
Então, hoje vamos utilizar um flag novo para poder deixar esta tela em fullscreen.
Vamos lá?
zimmermann@Anakin:~$ vim testeSDL2.c
Vamos incluir os headers e o que desejamos dentro deste atquivo:
#include <stdio.h> //Entrada e saida para o C
#include <SDL/SDL.h> //Header principal do SDL
#include <stdlib.h> //Para usar o exit
int main(){
SDL_Surface *janela; //Nossa surface que será a janela
Uint8 *teclas; //Nossas teclas do teclado
int sair = 0; //Uma variavel para segurar o software
if(SDL_Init(SDL_INIT_EVERYTHING) == -1){ //SDL iniciando tudo
printf("Problema na inicialização do SDL\nSaindo"); //Imprime o erro
SDL_Quit(); //Termina o SDL
exit(1); //Retorna 1 para o sistema, indicando erro
}
janela = SDL_SetVideoMode(540, 480, 16, SDL_ANYFORMAT | SDL_DOUBLEBUF
| SDL_FULLSCREEN);
if(!janela){ //Se janela for nulo é porque não iniciou a surface
printf("Não pude inicializar a janela!\nSaindo"); //Mensagem de erro
SDL_Quit(); //Sai do SDL
exit(1); //Retorna erro ao sistema
}
while(sair == 0){ //Laço que segura o software inteiro
SDL_PollEvent(NULL); //Verifica todos os eventos que ocorrem
teclas = SDL_GetKeyState(NULL);
//Armazena na pilha os eventos de teclado
if(teclas[SDLK_ESCAPE]){ //Se a tecla ESCAPE (Esc) for apertada
sair = 1; //Então saia
SDL_Quit(); //Termina o SDL
}
}
return 0; //Retorna ao sistema
}
Para compilar este código:
zimmermann@Anakin:~$ gcc -o testeSDL2 testeSDL2.c -lSDL
Depois de compilado, execute o programa:
zimmermann@Anakin:~$ ./testeSDL2
O que ocorrerá é que aparecerá uma "belíssima" tela preta dominando todo o seu ambiente gráfico!
Bom, você pode perceber que uma das linha eu não comentei.
Deixei isso para fazer agora:
janela = SDL_SetVideoMode(540, 480, 16, SDL_ANYFORMAT | SDL_DOUBLEBUF
| SDL_FULLSCREEN);
O que eu fiz nessa linha?
Iniciei uma janela, com 540 pixels de largura, 480 de altura, 16 bits por pixel, e com as flags:
SDL_ANYFORMAT -> Previne para que o SDL crie uma surface, e não a sua placa de vídeo
SDL_DUBLEBUFF -> Permite um SDL_Flip (veremos mais para frente quando importarmos figuras
SDL_FULLSCREEN -> Deixa a apicação como FullScreen
Bom pessoal, por hoje é isso que eu quero passar. Comentem, critiquem, ... Mas quando o fizer, mande seu email junto, para podermos manter um melhor contato.
Obrigado pelo apoio e até mais!
3 comentários:
Estou gostando desses artigos. Sempre quis aprender SDL. Estarei aguardando cada postagem :)
POSTEI DUAS VEZES SORRY!
ei diego tipo, vc ta dando nocoes de SDL eu ja dei uma olhada e tal e curti!
sera que em vez de criar tuts para criacao de jogos, voce poderia postar tuts sobre GUI's em SDL.
pq isso em portugues axo meio dificil!
Daniel, obrigado pelo apoio, e continuarei postando artigos periodicamente.
Fred, estas noções que estou postando, servem tanto para jogos, quanto para interfaces, basta adapta-las ao que você deseja. Mas futuramente, pretendo postar alguns programas inteiros para que você tenha noção desta biblioteca e sua facilidade de uso.
A todos, por favor, caso desejem manter contato comigo, ou insiram email de vocês, ou mandeme um email diretamente, ficará mais fácil para responder, e ao invés de aguradar resposta, terão diretamente ela em seu email.
Obrigado pelo apoio!
Até mais
Postar um comentário