Autor
|
Tema: funciones similares a kbhit y getch en c++ gnu/linux (Leído 7,371 veces)
|
etcheverrypablol
Desconectado
Mensajes: 37
¡Hoy mejor que ayer, mañana mejor que hoy!
|
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
Mensajes: 1.603
|
Esto lo puedes hacer con ncurses, es una librería para manejar la consola.
|
|
|
En línea
|
|
|
|
|
JavierScars
Desconectado
Mensajes: 116
|
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
Mensajes: 37
¡Hoy mejor que ayer, mañana mejor que hoy!
|
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
Mensajes: 4
|
Puedes probar a asignar a una variable el valor de una tecla. como el siguiente código escrito y probado en ubuntu. #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
Mensajes: 37
¡Hoy mejor que ayer, mañana mejor que hoy!
|
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
|
|
|
|
|
Stakewinner00
|
#include <unistd.h> #include <termios.h> #include <cstdio> char getch(){ /*#include <unistd.h> //_getch*/ /*#include <termios.h> //_getch*/ char buf=0; struct termios old={0}; fflush(stdout); if(tcgetattr(0, &old)<0) perror("tcsetattr()"); old.c_lflag&=~ICANON; old.c_lflag&=~ECHO; old.c_cc[VMIN]=1; old.c_cc[VTIME]=0; if(tcsetattr(0, TCSANOW, &old)<0) perror("tcsetattr ICANON"); if(read(0,&buf,1)<0) perror("read()"); old.c_lflag|=ICANON; old.c_lflag|=ECHO; if(tcsetattr(0, TCSADRAIN, &old)<0) perror ("tcsetattr ~ICANON"); printf("%c\n",buf); return buf; } int main() { if(getch() == 'X') { //hacer lo que sea } }
|
|
|
En línea
|
|
|
|
etcheverrypablol
Desconectado
Mensajes: 37
¡Hoy mejor que ayer, mañana mejor que hoy!
|
Muchas gracias chicos
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
funciones con Bases de datos similares a phpMyAdmin?
PHP
|
Luisango
|
4
|
3,022
|
27 Mayo 2007, 14:32 pm
por Luisango
|
|
|
AYUDA!! kbhit() en linux
« 1 2 »
Programación C/C++
|
godofredo
|
10
|
10,902
|
6 Abril 2011, 00:45 am
por godofredo
|
|
|
getch propia para no usar getch de conio
ASM
|
neo_from_cs_matrix
|
3
|
5,686
|
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,655
|
13 Enero 2015, 18:16 pm
por momo75
|
|
|
Función kbhit() y getch()
Programación C/C++
|
jmhr98
|
0
|
1,999
|
13 Agosto 2018, 16:12 pm
por jmhr98
|
|