Buon giorno,
Avrei bisogno di un paio di riferimenti e indirizzamenti riguardo ad uno ostacolo che ho riscontrato durante la programmazione un paio di giorni fa, e a cui non ho trovato molte risposte.
Il problema in questione, è " l'input istantaneo"; mi spiego meglio.
A me sarebbe utile, trovare il modo di ottenere dall'utente un input (oppure non ottenerlo) in un determinato istante ripetuto nel corso dello svolgimento del programma.
Inizialmente avevo pensato ad una cosa del genere, che avevo già provato a usare:
// [...]
//Input Mossa
int inputKey=getch();
if(inputKey==224){
inputKey=getch();
switch(inputKey){
case 72: Direc='N'; break;
case 75: Direc='W'; break;
case 77: Direc='E'; break;
case 80: Direc='S'; break;
}
}
// [...]
In questa maniera, appena l'utente preme un qualsiasi tasto, essendo un input unbuffered, non occorre che l'utente prema invio.
Tramite la funziona sopra riportata infatti, riuscivo a determinare Direc in base a quale freccia direzionale si era premuta.
Il problema, sorge nell'esatto momento in cui l'utente non preme nulla, e infatti, il codice attende (e continuerà ad attendere) fino a quando l'utente non premerà nulla.
Così facendo mi impedisce di eseguire il resto del codice.
Quello che cerco dunque, e un modo che mi permette di richiedere un input all'utente non bufferandolo, proprio come sopra, ma che al tempo stesso, se l'utente non inserisce nulla in un arco di tempo relativamente breve (tipo 100ms al massimo) saltare l'operazione di input e procedere con il resto del programma.
So bene che questo, tecnicamente sarebbe risolto tramite la programmazione concorrente, e che quindi gestisse in modo separato i due processi (il resto del codice e l'input dell'utente), ma so anche, che si può sfruttare la velocità dei processori odierni evitando questo metodo di programmazione, anche se possa complicare le carte in tavola.
Grazie mille dell'eventuale aiuto,
- MoraGames