2012-03-03 13 views
9

Sto programmando un gioco per console, (pac-man), e mi chiedevo come avrei ottenuto l'input dell'utente senza che loro premessero il tasto Invio. Ho guardato in giro un po 'su internet e ho trovato alcune cose su _getch() ma apparentemente non è più attuale e non si sa che i file di intestazione lo dichiarano a meno che uno non costruisca il suo, cosa che non posso fare poiché sono ancora veramente nuovo per C++. Quindi, come potrei creare un codice che possa farlo? GrazieC'è un modo per ottenere l'input dell'utente senza premere il tasto Invio?

+1

La biblioteca gioco maledizioni supporta una funzione come questa: http://invisible-island.net/ncurses/man/curs_get_wch.3x.html –

+0

Qual è la vostra piattaforma? Linux o Windows? –

+0

Mac. Sto usando xCode –

risposta

7

Questo funziona per me (io sono su 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; 
} 

rende il buffer console.

di riferimento: http://shtrom.ssji.net/skb/getc.html

2

è possibile utilizzare libreria conio.h e una funzione _getch() per ricevere input in modo vivo e si può anche impostare ciclo per più ingressi.

#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(); 
} 
} 
Problemi correlati