Come da titolo il mio problema si riferisce alla gestione degli input da tastiera, prima di porvi la domanda vi spiego qual'è l'obiettivo, a che punto sono arrivato e qual'è il problema.
Obiettivo: Controllare una macchinetta radiocomandata con un programmino scritto in c#, quindi utilizzando i tasti W, S, A, D devo fare in modo che la macchinetta si sposti in avanti o indietro e giri a sinistra o a destra, precisamente il programma deve fare questo: mentre tengo premuto il tasto W la macchinetta deve procedere avanti, quando rilascio il tasto W la macchinetta si deve fermare, stessa cosa per il tasto S tranne che la macchinetta deve procedere indietro. Se invece tengo premuto il tasto A le ruote della macchinetta devono girare verso sinistra e rimanere in quella posizione finchè non rilascio il tasto A, stessa cosa per il tasto D. Ora la parte complicata, MENTRE tengo premuto il tasto W quindi la macchinetta procede avanti, se premo il tasto A o D le ruote devono girare verso la direzione che corrisponde al tasto, quando rilascio A o D le ruote devono tornare nella loro posizione iniziale, in pratica mentre la macchinetta corre deve girare a destra e a sinistra.
Stato attuale del programma: Dopo varie ricerche in rete ho trovato il modo per gestire l'input da tastiera con KeyPress e KeyUp, ecco il codice che ho scritto per provare, in pratica mentre è premuto il tasto W il numero all'interno della textbox vieni incrementato, quando W viene rilasciato li numero torna a 0, quindi se tengo premuto S il numero viene decrementato se rilascio S il numero si azzera, invece se premo A o D nella textbox vengono scritte tante A o D.
Problema: Mentre tengo premuto il tasto W, il numero viene incrementato(la macchinetta va avanti) se premo il tasto A o D il numero si ferma e non viene più incrementato e nella textbox vengono scritte le A o D, quando rilascio il tasto premuto A o D ma tengo ancora premuto il tasto W il numero della text box viene azzerato come se nessun tasto sia premuto, in pratica mentre la macchinetta corre avanti quando premo A per girare a sinistra la macchinetta si ferma e le ruote girano a sinistra quindi quando rilascio A le ruote tornano nella posizione iniziale e la macchinetta sta ferma. Capisco che alla fine questo è normale ma sapete se è possibile aggirare questo problema? Nei giochi con le macchine funziona, cioè mentre la macchina corre avanti(tasto W premuto) se premo A la macchina corre e gira, c'è un modo di risolvere il problema con XNA? Non l'ho mai utilizzato e adesso sto effettuando delle ricerche. Grazie per l'attenzione e per la pazienza nel leggere questo poema, spero di esser stato chiaro
Ultima modifica effettuata da lupodenis il 25/05/2014 alle 19:28
Ciao Amreo, ti ringrazio per la risposta, in realtà ormai ho risolto il problema, prima ho utilizzato XNA e funzionava tutto bene solo che per il lavoro che devo fare il timer di XNA è troppo veloce. Alla fine ho lasciato XNA e ho risolto catturando il valore del tasto premuto con
Codice sorgente - presumibilmente C# / VB.NET
string Tasto = e.KeyData.ToString();
, quindi quando un tasto viene premuto e viene generato l'evento keydown modifico delle variabili boolean a seconda del tasto premuto, in seguito in un timer impostato a 150 ms, a seconda della variabile boolean che è true il programma mi esegue una determinate get HTTP.