Controle de teclado

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.

Como resolvo este tipo de problema ?

Obrigado.

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.

Concordo com @entanglement.

Mas agora uma dúvida invéz dos 2 utilizarem o teclado sendo que são apenas 2 botões, para testes 1 não poderia utilizar o mouse ?

PS.: dúvida pessoal …

att

[quote=pdpbom]

Mas agora uma dúvida invéz dos 2 utilizarem o teclado sendo que são apenas 2 botões, para testes 1 não poderia utilizar o mouse ?

PS.: dúvida pessoal …

att[/quote]

O jogo não ficaria meio injusto :?:

:thumbup:

[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.

[quote=InicianteJavaHenrique][quote=pdpbom]

Mas agora uma dúvida invéz dos 2 utilizarem o teclado sendo que são apenas 2 botões, para testes 1 não poderia utilizar o mouse ?

PS.: dúvida pessoal …

att[/quote]

O jogo não ficaria meio injusto :?:

:thumbup: [/quote]
Gente o problema é com teclado.
Se ele quiser implementar o mouse a gente ajuda também, mas o lance é outro.

[quote=jaboot][quote=InicianteJavaHenrique][quote=pdpbom]

Mas agora uma dúvida invéz dos 2 utilizarem o teclado sendo que são apenas 2 botões, para testes 1 não poderia utilizar o mouse ?

PS.: dúvida pessoal …

att[/quote]

O jogo não ficaria meio injusto :?:

:thumbup: [/quote]
Gente o problema é com teclado.
Se ele quiser implementar o mouse a gente ajuda também, mas o lance é outro.[/quote]

Sim. Mas, não há nada de mais na citação. É só ele postar que ajudaremos.

:thumbup:

Gente, perdão pela demora a responder.

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.

[code]boolean[] activeKeys = new boolean[256];
onKeyPressed(KeyEvent e){
activeKeys[e.getKeyCode() - ] = true;
}
onKeyReleased(KeyEvent e){
activeKeys[e.getKeyCode() - ] = false;
}

//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’]){

}[/code]

Tenderam ?
xD

Boa. :smiley: