Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - vedere se un tasto è premuto
Forum - C/C++ - vedere se un tasto è premuto

Pagine: [ 1 2 3 4 ] Precedente | Prossimo
Avatar
venerbamirco (Normal User)
Newbie


Messaggi: 9
Iscritto: 31/05/2016

Segnala al moderatore
Postato alle 16:46
Martedì, 31/05/2016
buongiorno a tutti,
sto progettando il gioco del tetris, ed ho riscontrato questa difficoltà:
-mentre scendono i vari pezzi dalla parte superiore dello schermo, ho impostato il loro movimento in maniera verticale. ma io vorrei la possibilità di premere un tasto del pc, quando voglio, mentre il pezzo scende per impostarne la traslatura o verso sinistra o verso destra.
io fino a questo punto, ho progettato il movimento e la traslatura dei vari pezzi sia a sinistra che a destra facendo un cin dopo ogni movimento, ma volevo chiedere se esistono dei comandi di input eseguibili sempre, ad ogni punto del codice.

es:
Codice sorgente - presumibilmente C/C++

  1. for(int i=0; i<10; ++i){
  2.         cout<<oggetto preso in considerazione;
  3.         cin>>numero;
  4.         if(numero==questo)
  5.                 traslalo a sinistra;
  6.         else
  7.                  traslalo a destra;
  8. }


io ho impostato il codice come il precedente, ma ogni volta, il mio ciclo si ferma per aspettare in input un valore.
io lo volevo che questo succedesse quando l utente che ci gioca vuole spostarlo , senza che il ciclo sifermi per aspettare di inserire un valore.

grazie a chi risponde.
non so se ho reso l' idea, ho cercato di essere il più chiaro possibile

Ultima modifica effettuata da venerbamirco il 31/05/2016 alle 16:47
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5475
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 16:50
Martedì, 31/05/2016
Non esistono funzioni standard ma in base al sistema operativo puoi operare in diversi modi.

Con Windows potresti usare le API di controllo dei tasti.

Oppure la funzione kbhit() o _kbhit() di conio.h anch'essa non standard.


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Avatar
Template (Member)
Pro


Messaggi: 175
Iscritto: 09/12/2015

Segnala al moderatore
Postato alle 17:05
Martedì, 31/05/2016
Concordo con Nessuno: conviene utilizzare le API.

A proposito: si dice TRASLAZIONE.


"Nel curriculum scrivete quello che sapete fare... e anche quello che non sapete fare! Tipo: "Già vescovo di Cracovia, partecipai alla Coppa America, vincendola!""
[...]
"Sto giocando al piccolo Dio e mi sta venendo pure alla grande."
PM Quote
Avatar
venerbamirco (Normal User)
Newbie


Messaggi: 9
Iscritto: 31/05/2016

Segnala al moderatore
Postato alle 17:15
Martedì, 31/05/2016
ok grazie, ma per vedere che tasto ho premuto come si fa?

Ultima modifica effettuata da venerbamirco il 31/05/2016 alle 17:22
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5475
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 17:29
Martedì, 31/05/2016
Dipende da quale metodo hai scelto ...


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Avatar
venerbamirco (Normal User)
Newbie


Messaggi: 9
Iscritto: 31/05/2016

Segnala al moderatore
Postato alle 17:44
Martedì, 31/05/2016
io ho scelto questo:
Codice sorgente - presumibilmente C/C++

  1. if (_kbhit())
  2. {
  3.         cout << "premuto un tasto"; system("pause");
  4. }


poi un altro dubbio,
se ho due stringhe:
Codice sorgente - presumibilmente C/C++

  1. string primo;
  2. string secondo;


posso fare:
Codice sorgente - presumibilmente C/C++

  1. string primo="ciao";
  2. string secondo="bo bo"+ciao+" bo bo";


posso farla? se no, mi date altre alternative per piacere?

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5475
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 18:27
Martedì, 31/05/2016
Usi la getch()

Per le stringhe hai provato?


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Avatar
venerbamirco (Normal User)
Newbie


Messaggi: 9
Iscritto: 31/05/2016

Segnala al moderatore
Postato alle 21:32
Martedì, 31/05/2016
allora intanto le mie domande sono due:
-come posso fare per vedere che tasto della tastiera ho premuto?
-se ho questo pezzo di codice:
Codice sorgente - presumibilmente C/C++

  1. string seconda="mirco";
  2. string prima="ciao"+seconda;


per ottenere il risultato di ciao mirco ?

PM Quote
Avatar
Template (Member)
Pro


Messaggi: 175
Iscritto: 09/12/2015

Segnala al moderatore
Postato alle 23:29
Martedì, 31/05/2016
Rispondo intanto alla tua seconda domanda: la classe string implementa un overload dell'operatore + per la concatenazione delle stringhe, quindi di fatto ciò che vuoi fare è possibile.
http://www.cplusplus.com/reference/string/string/operator+/

Per quanto riguarda la prima domanda: puoi prelevare il "valore" del tasto che, premuto, ha attivato _kbhit() dal buffer di input: https://msdn.microsoft.com/it-it/library/58w7c94c.aspx

Ultima modifica effettuata da Template il 31/05/2016 alle 23:29


"Nel curriculum scrivete quello che sapete fare... e anche quello che non sapete fare! Tipo: "Già vescovo di Cracovia, partecipai alla Coppa America, vincendola!""
[...]
"Sto giocando al piccolo Dio e mi sta venendo pure alla grande."
PM Quote
Pagine: [ 1 2 3 4 ] Precedente | Prossimo