• Viernes 8 de Noviembre de 2024, 18:59

Autor Tema:  Una Función Que Lea Por Letra  (Leído 3225 veces)

Twinsen

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Una Función Que Lea Por Letra
« en: Viernes 26 de Mayo de 2006, 05:54 »
0
Hola.

Cuando usaba turbo c, hice un juego. El tipico del gusanito para el celular. en modo consola y en la libreria graphics.h

La cosa, es que quiero hacer un arkanoid ahora. Pero me pase a dev-c++ y claro, eso es trabajar en modo consola.

PERO el problema que tengo. es que la función que usaba en turbo c no lo lee el dev-c [Usaba algo como c=getch();]

Ahora. si uso getchar, cin o lo que sea. el pc queda esperando a que presione la tecla "enter".

Y lo que yo quiero es al que, presionar cualquier tecla, el programa haga algo y si no se apreta .. no haga nada. pero no que espere la tecla enter.

Existe alguna función que haga esto ??. Muchas Gracias

angel_aprendiz

  • Nuevo Miembro
  • *
  • Mensajes: 21
    • Ver Perfil
    • http://spaces.msn.com/blueangelluis/
Re: Una Función Que Lea Por Letra
« Respuesta #1 en: Martes 30 de Mayo de 2006, 04:53 »
0
hola¡

la verdad no entendi muy bein lo que quieres hacer, pero segun la funcion que buscas creo que es getch(); esta funcion lee un caracter y no espera el retorno del carro, ni tampoco causa eco. el getche(); lee un  caracter con eco, y no espera el retorno del carro :comp:

x.cyclop

  • Miembro de PLATA
  • *****
  • Mensajes: 1039
  • Nacionalidad: mx
    • Ver Perfil
Re: Una Función Que Lea Por Letra
« Respuesta #2 en: Martes 30 de Mayo de 2006, 17:27 »
0
¿Será scanf()? :blink:

- Great works aren't produced on the first try. [Ernest Hemingway]
- Be ambitious, yet realistic in your dreams. Do something that makes a positive impact. Don’t let the nay-sayers get you down. [Bjarne Stroustrup]

Geo

  • Miembro de PLATA
  • *****
  • Mensajes: 1011
  • Nacionalidad: mx
    • Ver Perfil
    • http://hsblog.mexchip.com
Re: Una Función Que Lea Por Letra
« Respuesta #3 en: Martes 30 de Mayo de 2006, 23:59 »
0
La función que menciona angel_aprendiz es la que buscas, está en la biblioteca conio:

http://c.conclase.net/Borland/funcion.php?fun=getch

Este tipo de funciones es las que más se extrañan de conio, afortunadamente esta función si está disponible en la implementación de MinGW (el compilador que se usa normalmente con Dev-C++).

Saludos,
José Jorge (Geo).
La imaginación es el límite.
Hardware & Software | Mexchip

Masiosare

  • Miembro MUY activo
  • ***
  • Mensajes: 118
    • Ver Perfil
Re: Una Función Que Lea Por Letra
« Respuesta #4 en: Miércoles 31 de Mayo de 2006, 06:19 »
0
El compilador de C que viene con el Dev-C++ no viene con la librería <conio.h>. Puedes ir a actualizaciones escoger el espejo "devpaks.org" y buscar la una librería que escribieron para este compilador creo que también se llama conio. O puedes bajar la librería de aquí e instalarla, y listo. Al parecer no es el mismo que la librería para borland pero tiene las funciones getch(), getche(), y kbhit() (que creo que son las que necesitas) entre otras.

      Suerte  :)
El experto es aquel que sabe cada vez más sobre cada vez menos, hasta que sabe competamente todo sobre absolutamente nada.
[size=109]Ley de Murphy[/size]

Twinsen

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Re: Una Función Que Lea Por Letra
« Respuesta #5 en: Jueves 1 de Junio de 2006, 02:40 »
0
Gracias. pero scanf() no funciona.

Mi idea de pasarme a Dev c++ es usar 100% su funcionalidad .. no exportar librerias viejas .. o sea, usar el standard ...

Les pego la parte del codigo ke creo, usaba en turbo c y les explico la funcionalidad.

do
{
    c=getch();
    cout<<"Cualquier cosa";
}
while ( c==algo)

Lo que quiero hacer es que el programa NO SE DETENGA cuando se presione una tecla. sino que guarde el valor en una variable. y que funcione a cada rato.

Por ejemplo .. lo que cualquiera pensaria es que el programa espere que aprete una tecla, luego diria "Cualquier Cosa" y luego esperaria una tecla .... lo que yo quiero es que salga sin parar "Cualquiero cosa", pero que al apretar una tecla se guarde en la variable C el codigo ascii.

O mas facil. imaginense al gusano moviendose indefinidamente ... y si nadie apreta una tecla va a chocar contra la pared.. y si apreta una tecla equivocada no va a reaccionar y chocara contra la pared igual. solo reacciona cuando apreto esc o las teclas de movimiento... Espero se haya entendido un poco mas mi idea, que de verdad no se como explicarla bien

En mi codigo (Lo voy a buscar. debo de tenerlo en un respaldo por ahi. lo hice con la libreria graphics.h xD) el gusanito se movia derecho solo hasta que alguien apreta una tecla. y hacia algo si era la a,s,w o d o si apretaba la tecla Enter...

TIENE que haber una forma de hacerlo. Con la libreria Conio (Insisto. no la quiero usar, quiero usar la standard) lo hacia facil. no era la mejor movilidad, pero funcionaba. No lo alcanze a optimizar.

Espero se haya entendido un poco mejor lo que busco hacer.. Gracias por su ayuda !!

tonilope

  • Miembro activo
  • **
  • Mensajes: 51
    • Ver Perfil
Re: Una Función Que Lea Por Letra
« Respuesta #6 en: Martes 6 de Junio de 2006, 04:59 »
0
Código: Text
  1.  
  2. #include &#60;stdio.h&#62;
  3. #include &#60;stdlib.h&#62;
  4. #include &#60;windows.h&#62;
  5.  
  6. char lee_caracter();
  7.  
  8. int main(int argc, char **argv)
  9. {
  10.  
  11. char opcion;
  12.  
  13. printf(&#34;&#092;nPulsa una tecla:&#092;n&#092;n&#34;);
  14.  
  15. while(opcion!=13)
  16.     {
  17.     opcion=lee_caracter();
  18.     printf(&#34;&#092;nHas pulsado -&#62; %c &#092;n&#34;, opcion);
  19.     }
  20.  
  21. return 0;
  22.  
  23. }
  24.  
  25. char lee_caracter()
  26. {
  27.    int car;
  28.    DWORD leidos, modo;
  29.    
  30.    GetConsoleMode(GetStdHandle(STD_INPUT_HANDLE), &modo);  
  31.    SetConsoleMode(GetStdHandle(STD_INPUT_HANDLE), modo & !ENABLE_ECHO_INPUT & !ENABLE_PROCESSED_INPUT);
  32.    ReadConsole(GetStdHandle(STD_INPUT_HANDLE), &car, 1, &leidos, NULL);
  33.    SetConsoleMode(GetStdHandle(STD_INPUT_HANDLE), modo);  
  34.    return (char)car;
  35. }
  36.  
  37.  

Salu2 ;)

Geo

  • Miembro de PLATA
  • *****
  • Mensajes: 1011
  • Nacionalidad: mx
    • Ver Perfil
    • http://hsblog.mexchip.com
Re: Una Función Que Lea Por Letra
« Respuesta #7 en: Martes 6 de Junio de 2006, 06:11 »
0
Cita de: "Twinsen"
Mi idea de pasarme a Dev c++ es usar 100% su funcionalidad .. no exportar librerias viejas .. o sea, usar el standard ...
No hay una función estándar que tenga el comportamiento que deseas.
Nota: Dev-C++ es el IDE, el compilador es MinGW.

Tendrás que usar alguna de estas:
  • Funciones de consola de Borland (conio: getch).</li>
  • Funciones de consola de la API de Windows.</li>
  • Alguna biblioteca de funciones gráficas.</li>
Saludos,
JJ (Geo).
La imaginación es el límite.
Hardware & Software | Mexchip