3.1. CLANLIB APPLICATION

 

Todo e qualquer jogo criado com a ClanLib precisará utilizar a classe CL_ClanApplication, que é responsável por inicializar a biblioteca e a aplicação. Dessa forma, os jogos criados com a ClanLib devem ser derivados dessa classe (linha 3) e redefinir sua função main (linha 5), como no exemplo a seguir:

 

1   #include <ClanLib/core.h>

2   #include <ClanLib/application.h>

3  class MeuJogo : public CL_ClanApplication{

4   public:

5       virtual int main(int argc, char **argv){

6            CL_SetupCore::init();

7            // Código do jogo

8            CL_SetupCore::deinit();

9            return 0;}

10  } app;

 

Na Linha 10, app já é uma instância da classe MeuJogo. Essa instância permitirá que a ClanLib localize a classe MeuJogo e chame então a função main. As funções init() (linha 6) e deinit() (linha 8) permitem inicializar e finalizar respectivamente os componentes da biblioteca. Isso foi feito no exemplo anterior com a classe CL_SetupCore, que inicializou as classes Core, responsáveis pela entrada/saída.

Todos os grupos de classes na ClanLib possuem uma classe respectiva para incialização de seus componentes, nomeada da seguinte forma: CL_Setup<NomeGrupo>. Um exemplo é a interface gráfica do usuário (GUI), cuja classe de inicialização é CL_SetupGUI. Dessa forma, antes de usar funções de qualquer classe da ClanLib a mesma deve ser inicializada previamente pela função init() e do mesmo modo, a função deinit() deve ser chamada ao término da utilização de determinada classe para que recursos ocupados, e não mais necessários, como objetos e variáveis de memória, sejam liberados para o sistema operacional.