Skip to content

Syndelis/jogo.h

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

jogo.h - Biblioteca de alto nível para desenvolvimento de jogos em C


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.

Distribuições baseadas em Debian (Ubuntu/Pop_OS!/ElementaryOS):

$ 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

Distribuições baseadas em ArchLinux:

$ 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

Windows

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:

  1. Para Windows 10 e 11, rode o seguinte no seu PowerShell:

    PS> winget install Kitware.CMake
  2. 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.

About

Biblioteca para a facilitação de criação de jogos em C, criada para a disciplina de AEDS I na UFSJ como parte do meu estágio em docência

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published