Autor
|
Tema: Lectura teclado (Leído 3,794 veces)
|
AXA
|
Quiero leer la letra o la tecla que escribo sin que el programa espere a que precione una. en pascal esta el keypressed. Aqui no encuentro una funcion que diga si aprieto una tecla para leerla. Y getchar espera a que se apriete una. Quiero hacer un juego y estoy trabada con esto.
|
|
|
En línea
|
|
|
|
.xAk.
Desconectado
Mensajes: 397
F0r3v3R NeWbI3
|
Depende del sistema. Con las ncurses es muy sencillo, pero no para win. Con SDL, tienes funciones para ello, para todos los sistemas, o al api de win, seguro dudas en windows, mírate: Using Keyboard InputSaludos
|
|
« Última modificación: 4 Enero 2022, 09:07 am por .xAk. »
|
En línea
|
|
|
|
RayR
Desconectado
Mensajes: 243
|
Como ya te dijeron, no hay forma estándar ni portable. O usas bibliotecas multiplataforma, como las que ya te mencionaron, o recurres a funciones específicas de cada sistema operativo. En Windows, la forma más sencilla y parecida a lo que se hace en Pascal es usar las funciones _kbhit() y _getch() (debes incluir "conio.h"). La primera verifica si hay una tecla presionada, y la segunda lee una tecla (que puede ser una de las "especiales", como Esc, las flechas, etc) sin esperar a que se presione Enter. Obviamente esto es muy distinto a lo que hace getchar(). No hay nada de malo en usar estas funciones cuando es necesario. Te lo digo porque a veces se critica de forma exagerada su uso. Sí, no son estándar de C o C++, pero es que no hay manera estándar de hacer lo que quieres, así que se justifica utilizarlas. Y conio.h es parte del runtime de C de Microsoft desde hace mucho, por lo que todo compilador para Windows que se precie la incluye, como es el caso de MinGW y, obviamente, VC++: https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/getch-getwch?view=msvc-170https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/kbhit?view=msvc-170
|
|
|
En línea
|
|
|
|
Hextor
Desconectado
Mensajes: 4
|
Es que getchar() intenta leer del fichero de entrada stdin, si hay algo en el buffer lo pilla, sino espera a que metas tú algo. Lo que sucede es que estás intentado usar funciones que están orientadas a meter valores por entrada estandar de ejecución del programa, una consola por lo general.
Para hacer algo como un videojuego en C, deberías utilizar unas librerias a modo de framework que ya implementen funciones que te permiten recibir eventos.
Eso, o si lo estás haciendo de forma didactica, buscar en la api de windows algo que te permita manejar eventos del teclado, yo nunca lo he heco, pero librerias para C de juegos de alguna forma lo tienen que implementar.
|
|
|
En línea
|
- Hector
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Lectura del teclado en una ventana
Java
|
rommel89
|
4
|
2,798
|
2 Agosto 2012, 23:07 pm
por leogtz
|
|
|
¿Como romper una lectura de teclado?
Java
|
exoesqueleto
|
3
|
2,441
|
6 Julio 2013, 05:49 am
por exoesqueleto
|
|
|
Duda con una lectura de teclado en c++
Programación C/C++
|
dato000
|
9
|
3,954
|
28 Diciembre 2013, 15:42 pm
por leosansan
|
|
|
Busqueda binaria en JAVA con lectura de archivos sin ingresar datos desd teclado
Java
|
Hana29
|
3
|
2,564
|
9 Diciembre 2015, 16:24 pm
por DarK_FirefoX
|
|
|
Python: Lectura errónea por teclado
Programación General
|
kurosakisan
|
2
|
2,485
|
24 Junio 2018, 20:33 pm
por kurosakisan
|
|