Ir ao conteúdo
  • Cadastre-se

C++


H_Michels

Posts recomendados

faz por codigo ASCII...não sei quais os valores das teclas porque to sem a minha tabela na mão...mas da pra fazer sim...

a seta pra cima acho q é 72...

a seta pra baixo 80...

a pra direita 77..

e pra esquerda 75...

Espero q tenha ajudado

Lucca

Link para o comentário
Compartilhar em outros sites

Só um detalhe: lendo teclas de controle no console por funções como "getch()", elas têm que ser lidas duas vezes; pois geram dois bytes no buffer do teclado, um '0' e outro com o código da tecla.

Seria algo assim:


   int c;


   c=getch();
   if (!c)   /* verifica se c==0 */
   {

       c=getch();   /* le mais uma vez */
       switch (c)
       {

           case 72:     /* cima */
                      break;


           case 77:     /* direita*/
                      break;


           case 75:     /* esquerda*/
                      break;


           case 80:     /* baixo */


       }

   }

Note que se não for feito primeiro a verificação do primeiro getch(), o programa consideraria as teclas H, K, M e P como sendo também setas.

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois...

O codigo q o DanielKO colocou captura as teclas com um único toque. O que acontece é que as setas tem valores 0x72, 0x75, 0x77 e 0x80, então são necessárias duas leituras a primeira pra identificar o zero e a segunda pra identificar (72, 75, 77 ou 80).

Link para o comentário
Compartilhar em outros sites

Postado Originalmente por mef@05 Ago. 2002,14:17

O codigo q o DanielKO colocou captura as teclas com um único toque. O que acontece é que as setas tem valores 0x72, 0x75, 0x77 e 0x80, então são necessárias duas leituras a primeira pra identificar o zero e a segunda pra identificar (72, 75, 77 ou 80).

Isso.  8D

Um pequeno detalhe: a notação 0x é usada para representar números em hexadecimal. 0x72 (hexa) = 114 (decimal).  :;):

E aproveitando o post, aí vai um exemplo compilável do código: :-DD


#include <stdio.h>
#include <conio.h>

int main(void) {

  int c;

  while (1) {

     c=getch();
     if (c==27) // se a tecla lida == (ESC)
        break;

     if (!c)   // se c==0 tem mais um byte esperando para ser lido
     {
       printf("Primeiro byte: 0\t");

       c=getch();   // le mais uma vez
       switch (c)
       {

             case 72:     // cima
                     printf("seta acima\n");
                     break;


             case 77:     // direita
                     printf("seta direita\n");
                     break;


             case 75:     // esquerda
                     printf("seta esquerda\n");
                     break;


             case 80:     // baixo
                     printf("seta abaixo\n");
                     break;

             case 59:    // F1
                     printf("tecla F1\n");
                     break;

             case 60:    // F2
                     printf("tecla F2\n");
                     break;

             default:
                     printf("Segundo byte: %d\n", c);

       }

     } else // o byte lido não e zero
       printf("Caracter: %c   ASCII = %d\n", c, c);

  }
  return 0;
}

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!