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

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!

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

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!!!

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

Att
Ricoldi

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!

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

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!

[quote=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!
[/quote]

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

Já tentou usar os GameCanvas.KEY_NUMX ?

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!