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" ;;
esacPara 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 compilarE a biblioteca estará compilada. Para apagar os arquivos compilados, rode:
PS> .\utils\windows-clean.ps1Documentaçã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 docsA documentação estará disponível em HTML e como páginas do manual Linux.