Sobre a biblioteca ▲
A biblioteca jogo.h
oferece uma API de alto nível para o gerenciamento de
janelas, renderização de figuras geométricas e texturas (imagens e GIFs),
reprodutor de áudio (todos os formatos mais comuns, como MP3, OGG e WAV) e
sistema de interação com o usuário.
O objetivo da biblioteca é abstrair todas as tecnologias de baixo nível, apresentando ao programador uma interface que é direta ao ponto. Exemplo de funções da sua API são:
abre_janela(largura, altura);
desenha_imagem(x, y, "personagem.gif");
toca_som_em_loop("musica.mp3");
tecla_acabou_de_ser_apertada("A");
printf("Coordenadas do mouse: %d, %d\n", mouse_x, mouse_y);
Como usar ▲
Este projeto possui pouquíssimas
dependências externas e compila para uma
biblioteca estática libjogo.a
. Para compilar qualquer programa que use a
bibliteca, basta incluí-la nas fontes do GCC/Clang e adicionar os includes e
links gerados pelo makefile.
Exemplo de programa e compilação:
// main.c
#include <jogo.h>
int main() {
abre_janela(640, 320);
while (janela_esta_aberta())
if (tecla_pressionada(ESC))
janela_deve_fechar();
fecha_janela();
}
O programa acima simplesmente abre uma janela e a fecha caso o usuário tecle
Esc. Para compilá-lo, iremos supor que a biblioteca jogo.h
está no
diretório lib/jogo/
$ make -C lib/jogo
$ gcc main.c lib/jogo/libjogo.a $(make --quiet -C lib/jogo includes) $(make --quiet -C lib/jogo links)
Como demonstrado, para que você não precise pesquisar quais são os caminhos de
include e link, o Makefile
da biblioteca provê as seguintes regras:
includes
: Retorna todos os caminhos de inclusão para o compilador;links
: Retorna todos os links para o linker;
Instalando as Dependências ▲
A biblioteca possui dependência dos seguintes pacotes:
- Algum compilador de C (gcc, clang);
- Comando utilitário
make
; - Comando utilitário
cmake
; - Pacotes de desenvolvimento equivalentes do seu servidor gráfico (X11 ou Wayland);
Portanto, para instalar as dependências, basta rodas os comandos abaixo. Note que o $
antes de cada linha simboliza apenas um comando, e não deve ser copiado.
$ git submodule update --init --recursive
$ sudo apt install build-essential cmake
$ case $XDG_SESSION_TYPE in
x11) sudo apt install xorg-dev ;;
wayland) sudo apt install libwayland-dev libxkbcommon-dev wayland-protocols extra-cmake-modules;;
*) echo "Não foi possível determinar o tipo de sessão que está sendo usada" ;;
esac
$ git submodule update --init --recursive
$ case $XDG_SESSION_TYPE in
x11) sudo pacman -S libx11 ;;
wayland) sudo pacman -S wayland ;;
*) echo "Não foi possível determinar o tipo de sessão que está sendo usada" ;;
esac
Para compilar nativamente no Windows, você vai precisar instalar o MinGW64, que traz as ferramentas GNU de compilação para o Windows.
Para isso, baixe este arquivo e
descompacte-o no seu diretório C:\
. Quando extraído, seu disco C:\
deve ficar parecido com o abaixo:
🖴 C:\
├── 📁 ProgramData\
┊ └── ...
├── 📁 Program Files\ <--- Em Português, "Arquivos de Programas"
┊ └── ...
├── 📁 Program Files (x86)\ <--- "Arquivos de Programas (x86)"
┊ └── ...
├── 📁 Users\
┊ └── ...
├── 📁 mingw64\ <--- Nova pasta que você extraíu!!
┊ └── ...
├── ... Outras pastas ...
┊
Você também precisará do comando CMake que pode ser instalado de duas formas:
-
Para Windows 10 e 11, rode o seguinte no seu PowerShell:
PS> winget install Kitware.CMake
-
Windows mais antigos: baixe o instalador aqui
Após isso, rode este comando no seu PowerShell
PS> git submodule update --init --recursive # Só precisa rodar uma vez
PS> .\utils\windows-build.ps1 # Rode sempre que quiser compilar
E a biblioteca estará compilada. Para apagar os arquivos compilados, rode:
PS> .\utils\windows-clean.ps1
Documentação ▲
A documentação está disponível neste link: docs.
Ela foi feita usando Doxygen com o tema
Doxygen Awesome CSS. Para buildar a documentação, instale doxygen
e execute
$ make docs
A documentação estará disponível em HTML e como páginas do manual Linux.