Autor
|
Tema: AYUDA!! kbhit() en linux (Leído 10,903 veces)
|
godofredo
Desconectado
Mensajes: 8
|
Hola a todos, despues de mucho buscar en google y no entender ni jota (soy nuevo en esto de C), queria que me explicaran por favor si hay algun modo de emular kbhit() en linux. estoy haciendo un pequeño juego y quiero que se repita un bucle hasta que el usuario apriete una tecla, pero soy totalmente incapaz. gracias a todos por adelanatdo
|
|
|
En línea
|
|
|
|
|
godofredo
Desconectado
Mensajes: 8
|
Gracias por tu aporte, entonces debo hacer una libreria con KBHIT.H y KBHIT.C, o tengo que meterlo en mi codigo de algun modo?¿? pdt: se me olvido ponerlo pero mi codigo es para C , no para C++ aunque no se si hay diferencia en lo que busco.
|
|
« Última modificación: 5 Abril 2011, 23:48 pm por godofredo »
|
En línea
|
|
|
|
ssaammuu
|
lo mas simple seria copiar kbhit.h y kbhit.c a la carpeta donde tienes los demas ficheros y simplemente las dos hacen lo mismo solo que la version en c++ esta implementada en una clase, aunque si estas usando c no te preocupes por eso
|
|
« Última modificación: 5 Abril 2011, 23:53 pm por ssaammuu »
|
En línea
|
|
|
|
godofredo
Desconectado
Mensajes: 8
|
y no hay que compilar de manera extaña ni nada?¡
|
|
|
En línea
|
|
|
|
ssaammuu
|
lo estas incluyendo directamente en tu proyecto a traves del #include, asi que se compilara con el resto de tu codigo
|
|
|
En línea
|
|
|
|
godofredo
Desconectado
Mensajes: 8
|
Me salta undefined referente to `kbhit'
|
|
|
En línea
|
|
|
|
ssaammuu
|
eso significa que seguramente hayas escrito el numbre de alguna funcion o variable mal. Puedes enseñar el codigo?
|
|
|
En línea
|
|
|
|
godofredo
Desconectado
Mensajes: 8
|
El codigo no esta acabado y quedan muchas cosas por hacer, el problema salta en la linea 61, si quito el kbhit compila bien #include <stdio.h> #include <stdlib.h> #include <time.h> #include <ncurses.h> #include <unistd.h> /*sleep*/ #include "kbhit.h" #define F 20 #define C 20 char fondo [F][C]; char serpiente[F*C][F*C]; int contador = 0; int a,b;/*comida*/ int x=2,y=2;/*movimiento*/ void imprime (char matriz[F][C]); void iniciar_matriz (char matriz[F][C]); void movimiento (); void comida(); int main() { initscr(); nodelay(stdscr,TRUE); erase(); iniciar_matriz(fondo); comida(); movimiento(); getch(); endwin(); return 0; } void movimiento () { char c='q',d;/*por ejemplo q*/ while (c!='x') { if((x==a)&&(y==b)){ contador++; comida();} /*para comer*/ fondo imprime(fondo); fondo d=c; if(kbhit()){c=getch();} if(c=='x'){break;} if(c=='w'){x=x-1;} if(c=='a'){y=y-1;} if(c=='s'){x=x+1;} if(c=='d'){y=y+1;} if(x<0){x=F-1;} /*si pongo F va a /0*/ if(y<0){y=C-1;} if(x>(F-1)){x=0;} if(y>(C-1)){y=0;} sleep(1); c=d; } } void iniciar_matriz (char matriz[F][C]) { int i, j; for (i=0;i<F;i++) { for (j=0;j<C;j++) { fondo [j]=' '; } } }
void imprime (char matriz[F][C]) { erase(); int i,j; for(i=0;i<(C+2);i++){printw("_ ");}/*arriba*/ printw("\n"); for (i=0;i<F;i++) { printw("|");/*izquierda*/ for (j=0;j<C;j++) { printw("%c ",matriz[j]); } printw(" |\n");/*derecha*/ } for(i=0;i<(C+2);i++){printw("_ ");}/*abajo*/ printw("\n"); printw("%d \n",contador); }
void comida() { a=(rand() % F); /*parentesis para ver si para de salirse*/ b=(rand() % C); fondo[a]='@'; imprime(fondo); }
|
|
|
En línea
|
|
|
|
ssaammuu
|
De linux yo se bien poco, pero por lo que tengo entendido getch() no existe ya que esta definido en conio.h, esto explicaria el error. Asi que tienes que definir tu propia funcion getch(), por lo que he leido seria algo asi int mygetch( ) { struct termios oldt, newt; int ch; tcgetattr( STDIN_FILENO, &oldt ); newt = oldt; newt.c_lflag &= ~( ICANON | ECHO ); tcsetattr( STDIN_FILENO, TCSANOW, &newt ); ch = getchar(); tcsetattr( STDIN_FILENO, TCSANOW, &oldt ); return ch; }
( http://cboard.cprogramming.com/faq-board/27714-faq-there-getch-conio-equivalent-linux-unix.html)
|
|
« Última modificación: 6 Abril 2011, 00:44 am por ssaammuu »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Ayuda T_T alguien sabe como usar la funcion "kbhit()"?
Programación C/C++
|
Ai Toi
|
2
|
11,673
|
19 Julio 2015, 17:07 pm
por Nico01
|
|
|
ayuda con kbhit()
Programación C/C++
|
0xDani
|
3
|
4,779
|
19 Mayo 2012, 21:33 pm
por RyogiShiki
|
|
|
ayuda: kbhit() en iterador en c++
Programación C/C++
|
Nico01
|
6
|
3,566
|
19 Julio 2015, 16:58 pm
por Nico01
|
|
|
funciones similares a kbhit y getch en c++ gnu/linux
Programación C/C++
|
etcheverrypablol
|
9
|
7,371
|
18 Enero 2016, 19:09 pm
por etcheverrypablol
|
|
|
Función kbhit() y getch()
Programación C/C++
|
jmhr98
|
0
|
1,999
|
13 Agosto 2018, 16:12 pm
por jmhr98
|
|