Dúvidas sobre GameCanvas (teclas e interrupção do jogo)

8 respostas
N

Olá a todos!

Sou novo na programação em J2ME e estou enfrentando alguns problemas.
Criei uma aplicação simples, do qual um itemlist instancia um GameCanvas, iniciando assim o jogo simples (um jogo puzzle).
Daí, tenho 2 problemas:

  • não consigo mapear todas as teclas do celular; neste meu jogo, tenho que usar as teclas de 1 a 9, mas só consegui utilizar as teclas 2, 4, 5, 6 e 8; utilizei o método keyPressed(int keycode), pois aí consigo mapear as teclas através das constantes KEY_NUM;
  • gostaria de saber como implemento a opção de cancelar o jogo durante sua execução, ou seja, existiria o comando “Sair” que seria acionado pelo usuário, chamando um alert que perguntaria se o usuário realmente desejaria sair, com dois comandos “ok” e “cancelar”.

Agradeço a atenção de todos!

8 Respostas

ricoldi

netmage, bom dia!
se intendi sua duvida, eu acho que deve usar o metodo getKeyStates()

http://pt.wikibooks.org/wiki/J2ME/Li%C3%A7%C3%B5es/GameCanvas

Se não for este o problema me desculpe o post.

Att
Ricoldi

N

Tudo bom, Ricoldi?
Obrigado pela atenção.

Eu tb testei utilizando o método getKeyStates().
O problema é q, primeiramente, as teclas de navegação são as primeiras a serem mapeadas (aquelas q ficam logo abaixo do visor, em certos celulares). Se o celular não as possuir, as teclas numéricas são mapeadas: 2 = UP, 4 = LEFT, 6 = RIGHT, 8 = DOWN, 5 = FIRE.
Até aí, tudo bem, o problema é q não consegui mapear as outras teclas q necessito com este método.
Sei q existem outras teclas (GAME_A, GAME_B, GAME_C, GAME_D), mas tb tentei utilizá-las e não deu certo (não sei se foi por incompetência).
Se vc tiver alguma idéia, eu agradeço!!!
Valeu!!!

ricoldi

Quais teclas exatamente você quer mapear?
em que aparelho?
informações…

Att
Ricoldi

N

Preciso mapear as teclas de 1 a 9.
5 seria o fire/ação. 2= up, 8 = down, 4 = left, 6 = right. As teclas 1,3,7,9 seriam para as diagonais.
Penso em fazer um jogo q rodaria em qq dispositivo (por isso não quero usar as teclas de navegação).
Valeu!

N

Por que você não usa as teclas numéricas 48-57? Elas são ASCII.

Exemplo:

keyPressed(int key) {
    if (key == 48) { //Codigo ASCII da tecla 0
        //Pressionou a tecla numérica 0
    } else if (key == 49) {  //Codigo ASCII da tecla 1
        //Pressionou a tecla numérica 1
    } else if (key == 50) {
        //Pressionou a tecla numérica 2
    } else if (key == 51) {
        //Pressionou a tecla numérica 3
    } ...
}
N

Tudo bom, npereirajr?

Tb já testei dessa maneira…
As teclas 1,3,7, e 9 não respondem…
Tô quebrando a cabeça com isso.
Valeu cara!

Vcs já fizeram alguma midlet q usa o GameCanvas?
Pelo q li, ela possui, além das teclas direcionais e fire, as teclas chamadas de game_A, game_B, game_C, game_D.
Alguem sabe como manipular esses comandos, onde estão mapeados, etc?
Obrigado a todos pelo empenho!

ricoldi

netmage:
Tudo bom, npereirajr?

Tb já testei dessa maneira…
As teclas 1,3,7, e 9 não respondem…
Tô quebrando a cabeça com isso.
Valeu cara!

Vcs já fizeram alguma midlet q usa o GameCanvas?
Pelo q li, ela possui, além das teclas direcionais e fire, as teclas chamadas de game_A, game_B, game_C, game_D.
Alguem sabe como manipular esses comandos, onde estão mapeados, etc?
Obrigado a todos pelo empenho!

Como vê não são suportadas em todos os dispositivos, (portabilidade = 0).

Já tentou usar os GameCanvas.KEY_NUMX ?

N

http://www.devx.com/wireless/Article/21452/1763/page/3

Tb testei esse código, mas não funcionou aqui.
Agora estou em dúvida se é alguma configuração do simulador do NetBeans…
Se alguem puder, teste uma aplicação com código semelhante e dê um feedback pro pessoal aqui.
Valeu galera!

Criado 21 de julho de 2008
Ultima resposta 21 de jul. de 2008
Respostas 8
Participantes 3