2012-03-03 28 views
9

Estoy programando un juego de consola, (pac-man), y me preguntaba cómo obtendría la entrada del usuario sin que ellos presionen la tecla enter. Miré un poco por Internet y encontré algunas cosas sobre _getch() pero aparentemente ya no es actual y no se conocen archivos de encabezado que lo declaren a menos que uno construya el suyo, lo que no puedo hacer, ya que todavía soy nuevo en C++. Entonces, ¿cómo construiría un código que pueda hacer esto? Gracias ¿Hay alguna manera de obtener la entrada del usuario sin presionar la tecla enter?

+1

La biblioteca de juegos curses soporta una función como esta: http://invisible-island.net/ncurses/man/curs_get_wch.3x.html –

+0

¿Cuál es su plataforma? Linux o Windows? –

+0

Mac. Estoy usando xCode –

Respuesta

7

Esto funciona para mí (estoy en Linux):

#include <stdio.h> 
#include <unistd.h> 
#include <termios.h> 

int main() 
{ 
    struct termios old_tio, new_tio; 
    unsigned char c; 

    /* get the terminal settings for stdin */ 
    tcgetattr(STDIN_FILENO,&old_tio); 

    /* we want to keep the old setting to restore them a the end */ 
    new_tio=old_tio; 

    /* disable canonical mode (buffered i/o) and local echo */ 
    new_tio.c_lflag &=(~ICANON & ~ECHO); 

    /* set the new settings immediately */ 
    tcsetattr(STDIN_FILENO,TCSANOW,&new_tio); 

    do { 
     c=getchar(); 
     printf("%d ",c); 
    } while(c!='q'); 

    /* restore the former settings */ 
    tcsetattr(STDIN_FILENO,TCSANOW,&old_tio); 

    return 0; 
} 

Esto hace que la consola sin búfer.

referencia: http://shtrom.ssji.net/skb/getc.html

2

puede usar la biblioteca conio.h y una función _getch() para obtener el aporte de un modo directo y también se puede configurar en bucle para múltiples entradas.

#include<conio.h> 
#include<iostream> 
using namespace std; 
int main() 
{ 
char n='a'; //Just to initialize it. 
while(n!='e') // Will exit if you press e. 
{ 
n=_getch(); 
} 
} 
Cuestiones relacionadas