Gente estou com um problema muito tenso de resolver aqui.
Eu estou desenvolvendo um jogo Pong.
Tipo, o jogo possui dois batedores ( um do lad direito e outro do lado esquerdo ), eu faço eles se movimentarem de acordo com uma tecla digitada no teclado.
Estou com um problema muito tenso aqui, por ex vou explicar:
Eu estou controlando o batedor da esquerda ( W -> Cima e S -> Baixo ) e meu amigo controla o da direita ( I -> Cima e K -> Baixo ).
Mas um problema ocorre ai, por ex, se eu segurar o botão W pra subir e ele segurar alguma depois de mim, o meu para de funcionar e o dele começa. E vice-versa tambem, quem aperta por ultimo sempre consegue mexer o batedor pra cima e pra baixo.
Se não me engano, isso é devido ao funcionamento do próprio teclado (que costuma ser implementado como uma matriz). Dependendo das combinações de teclas, se você tecla alguma coisa, bloqueia o funcionamento das outras teclas - isso é porque o hardware do teclado é feito para funcionar digitando ao mesmo tempo no máximo uma tecla normal e uma combinação de teclas de controle (Shift, Ctrl, Alt, Alt-Gr). Mas duas teclas normais, tecladas ao mesmo tempo, costumam dar problemas.
Para provar que é isso, experimente pegar esse seu programa e rodar com dois teclados - afinal de contas, você sempre pode ligar mais que um teclado USB ou Bluetooth num mesmo computador (seu colega controla um dos teclados com W e S, e você controla o outro com I e K).
Se funcionar do jeito que você quer então, só posso concluir que seu problema não tem uma solução óbvia.
[quote=Vinicius Zibetti Resko]Gente estou com um problema(…)
Como resolvo este tipo de problema ?
Obrigado.[/quote]
Vinicius, por favor, posta o código aqui da classe que recebe os comandos do teclado.
Aquela que faz o if tecla = S then move pra direita.
Eu consegui resolver de uma maneira muito simples, muito mesmo, vamos lá.
No teclado existe os eventos: KeyPressed e KeyReleased.
Criei uma array de boolean pra poder funcionar perfeitamente.
//Ou seja enquando a tecla estiver pressionada, a posicao da tecla ali fica ativada ainda…
Ai no jogo eu só pergunto: if(activeKeys[‘w’] || activeKeys[‘i’]){