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].
Fonte: Dados de Pesquisa |
|