Título: Lectura teclado Publicado por: AXA en 4 Enero 2022, 06:35 am 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. Título: Re: Lectura teclado Publicado por: .xAk. en 4 Enero 2022, 09:04 am Depende del sistema. Con las ncurses es muy sencillo, pero no para win. Con SDL (https://www.libsdl.org/), tienes funciones para ello, para todos los sistemas, o al api de win, seguro dudas en windows, mírate: Using Keyboard Input (https://docs.microsoft.com//windows/win32/inputdev/using-keyboard-input)
Saludos Título: Re: Lectura teclado Publicado por: RayR en 4 Enero 2022, 16:34 pm 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-170 https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/kbhit?view=msvc-170 Título: Re: Lectura teclado Publicado por: Hextor en 5 Enero 2022, 13:56 pm 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. Título: Re: Lectura teclado Publicado por: .xAk. en 8 Enero 2022, 19:49 pm pruebalo, es divertido hacerlo con ellas
(https://www.libsdl.org/media/SDL_logo.png) (https://www.libsdl.org/) (https://i.imgur.com/kH23Aet.png) (http://www.losersjuegos.com.ar/referencia/libros) SaludOS |