6.1.
DEFINIÇÃO DO CORPO DO JOGO
|
A base do jogo consistirá de apenas uma classe
denominada Fireball. A seguir é demonstrado o código
dessa classe. 1 #include <ClanLib/core.h> 2 #include
<ClanLib/display.h> 3 #include
<ClanLib/gl.h> 4 #include
<ClanLib/application.h> 5 class
Fireball: public CL_ClanApplication { 6 public: 7 Fireball(){}; 8 ~Fireball(){}; 9 int coordX, coordY; 10 void
procTecl(const CL_InputEvent
&); 11 virtual int main(int, char **){ 12 CL_ConsoleWindow
console("Fireball Console"); 13 console.redirect_stdio(); 14 try
{ 15 CL_SetupCore::init(); 16 CL_SetupDisplay::init(); 17 CL_SetupGL::init(); 18 CL_DisplayWindow
window("Jogo", 500, 450); 19 CL_Slot teclaPres = 20 CL_Keyboard::sig_key_down().connect(this, 21 &Fireball::procTecl); 22 //Loop
do Jogo 23 CL_SetupGL::deinit(); 24 CL_SetupDisplay::deinit(); 25 CL_SetupCore::deinit(); } 26 catch
(CL_Error err) { 27 std::cout<<"Erro:"<<err.message.c_str(); 28 console.display_close_message();} 29 return
0;} 30 } game; 31 //Implementação da
função procTecl} O
código anterior é a base para o jogo, pois deriva a classe Fireball
(linha 5), redefine a função main
(linha 11) e já cria uma instância da classe (linha 30). As diretivas #include
(linhas 1 a 4), incluem os quatro arquivos de
cabeçalho obrigatórios em qualquer aplicação ClanLib. Verifica-se que tanto o construtor quanto o
destruidor não possuem código (linhas 7 e 8), pois o
objetivo deste tutorial é apenas demonstrar as funções da ClanLib
e dessa forma, para diminuir a quantidade de código, não serão utilizadas as
facilidades da orientação a objetos. O código int coordX, coordY (linha 9) será
usado na
Seção
6.3 para desenho dos gráficos. Da mesma forma, a
função procTecl (linha 10) e o
código CL_Slot teclaPres... (linhas 19 a 21), responsáveis pela captura
e processamento de eventos, serão demonstrados na
Seção
6.4. Nota-se
também a criação do objeto console,
da classe CL_ConsoleWindow
(linha 12), que será usado para exibir mensagens de erro que ocorram na
aplicação. Como a
chamada de funções da ClanLib
pode gerar exceções, as mesmas devem ser colocadas dentro de um bloco try/catch
(linha 14). Dentro desse bloco estão as chamadas de funções para inicialização das classes principais da biblioteca
(linhas 15 a 17). O
comentário //Loop
do Jogo
(linha 22) deverá ser substituído pelo código na próxima seção. Finalmente
observam-se as chamadas a funções de finalização das classes (linhas 23 a
25). É importante salientar que a inicialização da
classe CL_SetupCore deve
ser a primeira da lista e sua finalização deve ser a última. |
|