elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  funciones similares a kbhit y getch en c++ gnu/linux
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: funciones similares a kbhit y getch en c++ gnu/linux  (Leído 6,927 veces)
etcheverrypablol

Desconectado Desconectado

Mensajes: 37


¡Hoy mejor que ayer, mañana mejor que hoy!


Ver Perfil
funciones similares a kbhit y getch en c++ gnu/linux
« en: 8 Enero 2016, 08:52 am »

Hola, estoy haciendo un programa en c++, de un avión que tiene que esquivar a meteoritos que vienen cayendo. El avión se debería mover con las teclas de izquierda y derecha. Preciso de alguna función que al momento de presionar algunas de estas dos teclas, almacene un valor en una variable, para de esta forma saber para dónde el juegador quiere mover el avión. Estuve averiguando en interntet, y sólo encuentro que dicen que hay que incluir la libería conio.h y que hay que usar las funciones kbhit y getch. Pero mi compilador no me recnonce ni la librería ni las funciones debido a, creo, que esas se deben usar cuando estás en windows. Y yo uso gnu/linux. Estoy uando el sistema operativo Manjaro, y compilanto en el terminal. Con el siguiente comando:
$ g++ space.cpp -o space

Alguno sabe qué funciones alternativas tengo a las ya nombradas. Desde ya muchas gracias.



Mod: No escribir los títulos en mayúsculas


« Última modificación: 8 Enero 2016, 13:48 pm por engel lex » En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: FUNCIONES SIMILARES A KBHIT Y GETCH EN C++ GNU/LINUX
« Respuesta #1 en: 8 Enero 2016, 10:39 am »

Esto lo puedes hacer con ncurses, es una librería para manejar la consola.


En línea

Stakewinner00


Desconectado Desconectado

Mensajes: 1.426



Ver Perfil WWW
Re: funciones similares a kbhit y getch en c++ gnu/linux
« Respuesta #2 en: 8 Enero 2016, 17:14 pm »

Haciendo una búsqueda rápida puedes encontrar cosas como http://stackoverflow.com/a/16361724  que ya podrían servir para substituir a la función getch de la librería conio.h
En línea

JavierScars

Desconectado Desconectado

Mensajes: 116



Ver Perfil
Re: funciones similares a kbhit y getch en c++ gnu/linux
« Respuesta #3 en: 8 Enero 2016, 18:10 pm »

No se si tiene mucho que ver el hecho de que estas en linux para esa libreria... Pero si recuerdo que algunas tienen que ser especificadas con "-l" o álgo asi. en otras palabras prueba a ver si tienes que linkearla.
En línea

Usa lo malo de la vida a tu favor, escala montañas de problemas para deslizarte sobre soluciones, derrumba muros de decepciones para encontrar la libertar de la felicidad,  y quema la leña del fracaso para calentarte con el éxito. Recuerda que sin la oscuridad la luz no brillaría tanto.
etcheverrypablol

Desconectado Desconectado

Mensajes: 37


¡Hoy mejor que ayer, mañana mejor que hoy!


Ver Perfil
Re: funciones similares a kbhit y getch en c++ gnu/linux
« Respuesta #4 en: 8 Enero 2016, 21:30 pm »

No puedo creer lo dificil que se me está haciendo esto, de encontrar una respuesta en interntet, cuando considero que debería ser algo ya re sabido por muchos y fácil. Lo que necesito es una forma de hacer lo siguiente:
    Si (el usuario presiona una tecla){  // Tecla izquierda o derecha
       hacer tal cosa
   }
En esa condición lógica, ¿qué tendría que colocar? Porque solo se debería ejecutar la sentencia del bloque "Si" sólo si se presiona una tecla. De esta forma, no se frena el programa, esperando que el usuario presione una.
He visto que muchos utilizan la función kbhit, de la librería conio. Pero yo necesito otra alternativa, ya que no puedo usar esa en linux. Alguno sabe cuál es la solución a este problema? Gracias.
« Última modificación: 8 Enero 2016, 21:45 pm por etcheverrypablol » En línea

furby86

Desconectado Desconectado

Mensajes: 4



Ver Perfil
Re: funciones similares a kbhit y getch en c++ gnu/linux
« Respuesta #5 en: 8 Enero 2016, 21:55 pm »

Puedes probar a asignar a una variable el valor de una tecla.

como el siguiente código escrito y probado en ubuntu.

Código:
#include <stdio.h>
#include <ctype.h>

void main(){
char tecla=getchar();
printf("La tecla es %d",tecla);
}

Es una idea.
En línea

etcheverrypablol

Desconectado Desconectado

Mensajes: 37


¡Hoy mejor que ayer, mañana mejor que hoy!


Ver Perfil
Re: funciones similares a kbhit y getch en c++ gnu/linux
« Respuesta #6 en: 8 Enero 2016, 22:41 pm »

Hola furby86, gracias por responder. Me parece que eso no es precisamente lo que necesito, porque eso frenaría el programa hasta que se lea una tecla. Yo preciso que se siga ejecutanto el programa, y si(se presiona una tecla) entonces hacer tal cosa.



No se si tiene mucho que ver el hecho de que estas en linux para esa libreria... Pero si recuerdo que algunas tienen que ser especificadas con "-l" o álgo asi. en otras palabras prueba a ver si tienes que linkearla.

Hola JavierScars, gracias, lo voy a tener en cuenta. Saludos.



Esto lo puedes hacer con ncurses, es una librería para manejar la consola.

Hola MAFUS, estuve averiguando sobre esa librería, parece ser que es la que reemplaza a la conio.h. Me va a ser de utilidad parece ser, pero aún no encuentro la solcuión al problema. Muchas gracias por responder. Saludos.
« Última modificación: 8 Enero 2016, 23:06 pm por Eternal Idol » En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: funciones similares a kbhit y getch en c++ gnu/linux
« Respuesta #7 en: 8 Enero 2016, 23:12 pm »

Para leer flechas
http://tldp.org/HOWTO/NCURSES-Programming-HOWTO/keys.html

Para que no pare el programa
http://stackoverflow.com/questions/4025891/create-a-function-to-check-for-key-press-in-unix-using-ncurses

Como ves puedes hacer lo que quieres con ncurses.
En línea

Stakewinner00


Desconectado Desconectado

Mensajes: 1.426



Ver Perfil WWW
Re: funciones similares a kbhit y getch en c++ gnu/linux
« Respuesta #8 en: 9 Enero 2016, 12:40 pm »

Código
  1. #include <unistd.h>
  2. #include <termios.h>
  3. #include <cstdio>
  4.  
  5. char getch(){
  6.    /*#include <unistd.h>   //_getch*/
  7.    /*#include <termios.h>  //_getch*/
  8.    char buf=0;
  9.    struct termios old={0};
  10.    fflush(stdout);
  11.    if(tcgetattr(0, &old)<0)
  12.        perror("tcsetattr()");
  13.    old.c_lflag&=~ICANON;
  14.    old.c_lflag&=~ECHO;
  15.    old.c_cc[VMIN]=1;
  16.    old.c_cc[VTIME]=0;
  17.    if(tcsetattr(0, TCSANOW, &old)<0)
  18.        perror("tcsetattr ICANON");
  19.    if(read(0,&buf,1)<0)
  20.        perror("read()");
  21.    old.c_lflag|=ICANON;
  22.    old.c_lflag|=ECHO;
  23.    if(tcsetattr(0, TCSADRAIN, &old)<0)
  24.        perror ("tcsetattr ~ICANON");
  25.    printf("%c\n",buf);
  26.    return buf;
  27. }
  28.  
  29. int main() {
  30.  if(getch() == 'X') {
  31.      //hacer lo que sea
  32.  }
  33. }
  34.  
  35.  
En línea

etcheverrypablol

Desconectado Desconectado

Mensajes: 37


¡Hoy mejor que ayer, mañana mejor que hoy!


Ver Perfil
Re: funciones similares a kbhit y getch en c++ gnu/linux
« Respuesta #9 en: 18 Enero 2016, 19:09 pm »

Muchas gracias chicos
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
funciones con Bases de datos similares a phpMyAdmin?
PHP
Luisango 4 2,839 Último mensaje 27 Mayo 2007, 14:32 pm
por Luisango
AYUDA!! kbhit() en linux « 1 2 »
Programación C/C++
godofredo 10 10,328 Último mensaje 6 Abril 2011, 00:45 am
por godofredo
getch propia para no usar getch de conio
ASM
neo_from_cs_matrix 3 5,429 Último mensaje 24 Agosto 2011, 18:43 pm
por Eternal Idol
Eclipse no me reconoce las funciones getch() y cls()
Programación C/C++
momo75 4 4,365 Último mensaje 13 Enero 2015, 18:16 pm
por momo75
Función kbhit() y getch()
Programación C/C++
jmhr98 0 1,732 Último mensaje 13 Agosto 2018, 16:12 pm
por jmhr98
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines