entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Problema con getch() en C++. Ignora la orden.

Hola, mi problema es que, después de llamar a getch(), la variable no guarda el valor.

#include <iostream>
#include <conio.h>
using namespace std;

int main() {
    char tecla;

    cout << "Derecha o izquierda? ";
    tecla = getch();

    if (tecla == 77)
        cout << "Derecha" << endl;
    else if (tecla == 75)
        cout << "Izquierda" << endl;

    return 0;
}

2 Respuestas

0voto

Yorji Puntos340

Ya esta, lo solucioné con la función kbhit().

0voto

Peter comentado

Si esta es la solución, por favor márcala como correcta.

1voto

kaiba78987 Puntos2300

Hola.

Entiendo que lo que quieres capturar es una pulsación de la tecla con la flecha izquierda o derecha, ¿no?

Creo que el problema es el siguiente:

Cuando utilizas una tecla de función (F1, F2, F3... teclas de dirección incluidas), el código ASCII que captura el teclado no es el habitual. Para todas ellas, getch registrará un valor 0 en la pulsación. el valor específico para cada una se captura en un nuevo getch.

Por ejemplo, el código debería ser algo así:

tecla = getch();
if (tecla==0) tecla=getch();

Añadiendo esa línea, compruebas que la tecla pulsada es una tecla de función y, si lo es, capturas el código de la tecla específica.

También he observado que usas getch() en lugar de _getch(). creo que la primera está obsoleta, al menos en algunas implementaciones de C++.

Espero que esto te ayude :)

0voto

Yorji comentado

Gracias por contestar. He estado investigando y efectivamente debería ser como tu dices, pero sigo con el mismo error de antes, no me reconoce la orden :/

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta