Problema capturar eventos teclado: key pressed, getKeyStates em um jogo de penalty

5 respostas
M

Olá.
Estou fazendo um jogo de penalty como trabalho na faculdade e estou com problemas para capturar eventos do teclado.
Olhem a situação. Do ponto de vista do keyPressed:
utilizei ele, consegui capturar os eventos do teclado só que ele não consegue ler todas as teclas do teclado numérico, não consegue ler:1,3,7 e 9 isso é normal do keyPressed ?

Segundo olhem abaixo o meu código onde utilizo getKeyStates:

public void capturaAcao() {

int keyStates = getKeyStates();

if ((keyStates & KEY_NUM1) != 0) {

jogo.setCanto(1);

captureiIO = true;

} else if ((keyStates & KEY_NUM2) != 0) {

jogo.setCanto(2);

captureiIO = true;

} else if ((keyStates & KEY_NUM3) != 0) {

jogo.setCanto(3);

captureiIO = true;

} else if ((keyStates & KEY_NUM4) != 0) {

jogo.setCanto(4);

captureiIO = true;

} else if ((keyStates & KEY_NUM5) != 0) {

jogo.setCanto(5);

captureiIO = true;

} else if ((keyStates & KEY_NUM6) != 0) {

jogo.setCanto(6);

captureiIO = true;

} else if ((keyStates & KEY_NUM7) != 0) {

jogo.setCanto(7);

captureiIO = true;

} else if ((keyStates & KEY_NUM8) != 0) {

captureiIO = true;

} else if ((keyStates & KEY_NUM9) != 0) {

jogo.setCanto(9);

captureiIO = true;

}

//depois de capturar a entrada está apto a correr

isRunning = true;

}

onde o método setCanto, set o canto onde o jogador vai bater ou defender o penalti
esse método é chamado assim

captureiIo = false;

if (!captureiIO) {//serve para executar até ter conseguido capturar as instruções

capturaAcao

}

else if (captureiIO)

//atualiza a lógica do jogo

//joga na tela

//espera uns segundos

//e no final seta captureiIO como false

Gostaria de saber qls os erros que olhando assim vcs acham que contém nesse código ?

5 Respostas

M

alguém ?

wln1987

bem dificil essa sua duvida… formata o codigo pelo menos.

vou olhar aqui com calma e te falo qualquer coisa, blz?

:wink:

T

Como é a definição de “getKeyStates”? Não é coisa da API (procurei em http://java.sun.com/javase/6/docs/api/index-files/index-7.html e não achei nenhum “getKeyStates”).

C

boa noite,
eu estou com esse problema também, conseguisse resolver mago?
alguém sabe?
não consigo usar o teclado numerico.
Estou tentado implementar os métodos keypressed da canvas, só não funciona

protected void keyPressed(int keyCode) {
		// TODO Auto-generated method stub
		//super.keyPressed(keyCode);
		
		System.out.println("pressed");
		if ((keyCode ==getKeyCode(KEY_NUM1))) {
			System.out.println("A" + carta1.getFrame());
			carta1.setPosition(60, 50);
			carta1.setTransform(7);
			flushGraphics();
			layerManager.paint(g, 0, 15);
		}
	}
C

pelo que eu estou vendo depedendo do device funciona as teclas 1,3, o mais seguro é utilizar as teclas
4,5,6 nos aparelhos que teste funciona essas.

protected void keyPressed(int keyCode) {
		// TODO Auto-generated method stub
		// super.keyPressed(keyCode);

		System.out.println("pressed" + keyCode);
		if ((keyCode == 52)) {
			System.out.println("4");
			
		}else{
			if ((keyCode == 53)) {
				System.out.println("5");
				
			}else{
				if ((keyCode == 54)) {
					System.out.println("6");
					
				}
			}
		}
	}
Criado 11 de janeiro de 2008
Ultima resposta 6 de ago. de 2009
Respostas 5
Participantes 4