6.4. PROCESSAMENTO DE EVENTOS

 

Na ClanLib, atividades como o clique do mouse ou o pressionar de uma tecla disparam sinais que podem ser capturados e processados.

Quando uma tecla é pressionada, a ClanLib envia um sinal através de CL_Keyboard::sig_key_down. Isso  permite a criação de Slots para recebimento e processamento do sinal, como no código abaixo:

 

1     CL_Slot teclaPres =

2     CL_Keyboard::sig_key_down().connect(this,

3     &Fireball::procTecl);

 

Esse código, exibido inicialmente na Seção 6.1, cria um objeto CL_Slot e o conecta ao evento de pressionar tecla (sig_key_down) da função CL_Keyboard (linhas 1 a 3). Tal evento será processado pela função procTecl, cujo código encontra-se a seguir e deve substituir o comentário //Implementação da função procTecl (linha 31) da Seção 6.2.

 

1     void Fireball::procTecl(const CL_InputEvent &tecla){

2           if (tecla.id == CL_KEY_LEFT){coordX--;}

3           else if(tecla.id==CL_KEY_RIGHT){coordX++;}}

 

No código anterior, caso seja pressionada a tecla <SETA ESQUERDA>, a variável coordX será diminuída em 1 unidade (linha 2) e, caso seja a tecla <SETA DIREITA>, a mesma será aumentada em 1 unidade (linha 3). Isso fará com que o tanque se mova na tela, pois na próxima passagem pelo código do loop, demonstrado na Seção 6.2, o objeto tanque será desenhado na tela com a nova coordenada.

Apesar do código apresentado na Seção 6 não criar um jogo completo, o mesmo utiliza os principais recursos da ClanLib necessários para tal.

Abaixo é demonstrada a tela do jogo completo, totalmente feito com a utilização de funções da ClanLib.

O jogo Fireball completo pode ser obtido em [Coelho, 2004].

 

 

Figura 6.2: Jogo Fireball.

Fonte: Dados de Pesquisa