Dic 5 2014
Come sviluppare un’Interfaccia touch Multiutente per Windows
Ci sono diverse situazioni in cui possiamo ipotizzare l’uso di un dispositivo touch screen da più utenti simultaneamente ma, nel momento in cui scriviamo, il touchscreen non è in grado di attribuire un singolo comando all’utente corrispondente, è solo in grado di registrare l’azione multipla, senza discernere il fatto che venga da due input diversi.
In un gioco da tavolo virtuale, come possono essere la dama o gli scacchi, dove le mosse degli utenti si avvicendano, non è importante stabilire chi abbia effettuato i tocchi, può essere anche un unico utente ad giocare contro se stesso oppure quattro giocatori che si avvicendano. Ai fini del gioco comunque non è importante capire chi abbia fatto quella determinata mossa.
Ci sono giochi e situazioni per cui è invece importante stabilire chi ha lanciato quel determinato comando (come i giocatori di ping pong del video sottostante)ed è compito dello sviluppatore progettare il modo più efficace per determinare quale tocco corrisponde a quale utente. Al momento purtroppo le API di Windows per gli sviluppatori forniscono scarso supporto per le applicazioni touch based multiutente, ma non è difficile per gli sviluppatori implementare metodi alternativi per il monitoraggio dei vari touch.
Il modo più semplice è quello di dividere il touchscreen in aree separate, una per ogni utente. Vedremo insieme degli strumenti che l’API di Windows offre a supporto delle touch app.
Creare un gioco Multiutente con le API di Windows
Le API di Windows, in questo preciso momento, offrono due formati di base per gli input tattili:
1. WM_TOUCH (la domanda deve elaborare ed interpretare i punti di contatto).
2. WM_GESTURE (la domanda è generata dai gesti predefiniti del sistema come zoommare, trascinare, toccare ecc), ma questo purtroppo supporta al momento solo gli input da singolo utente.
Il classico gioco del ping pong, un evergreen degli arcade, è l’esempio perfetto per un gioco creato con lo scopo di monitorare gli input da almeno due utenti. La palla infatti viaggia in diagonale da una parte all’altra dello schermo e viene controllata dagli input touch degli utenti che muovono la “racchetta virtuale”.
In questo caso il movimento della palla è gestito in un thread separato nell’applicazione, questo per garantire un movimento fluido al gioco.
L’interfaccia touch a due utenti
Come dicevamo all’inizio, il modo più semplice di monitorare l’input touch da due utenti diversi è quello di dividere l’area di gioco (lo schermo) in due metà, il giocatore uno a sinistra, il giocatore due sulla destra.
Ogni volta che si verifica l’evento WM_TOUCH noi possiamo recuperare l’elenco completo delle possibili coordinate di contatto, come nell’esempio di codice uno.
…
bret = GetTouchInputInfo(
(HTOUCHINPUT)lparam,
data.geometry_data.touch_inputs_count,
data.geometry_data.touch_inputs,
sizeof(TOUCHINPUT)
);
assert(bret != FALSE);
//-----------------------------------------------------------------
// process touch inputs
//-----------------------------------------------------------------
for(i = 0; i < data.geometry_data.touch_inputs_count; i++) { touch_input = &data.geometry_data.touch_inputs[i]; //----------------------------------------------------------------- //Convert 100ths of pixels to pixels //----------------------------------------------------------------- x = touch_input->x / 100;
y = touch_input->y / 100;)
{
…
Il passaggio successivo è quello di controllare e vedere in quale metà del campo/schermo è stato registrato il tocco e aggiornare la posizione verticale della “racchetta” virtuale perché corrisponda a quella del punto di contatto. In questo modo possiamo gestire i due input diversi.
…
if (x < (ULONG)((data.graphic_data.rect.right – data.graphic_data.rect.left) / 2))
{
//-----------------------------------------------------------------
// 2-player touch division
//-----------------------------------------------------------------
Data.geometry_data.p1y = y;
}else{
Data.geometry_data.p2y = y;
}
bret = move_paddles(&data);
assert(bret == TRUE);
{
Anche se tutti gli input sullo schermo vengono elaborati, viene utilizzato solamente il più recente punto di contatto attivo per determinare la posizione della racchetta virtuale.
Da ultimo vi lascio a questo interessante approfondimento se siete interessati a scoprire anche come impostare il monitoraggio degli input touch a quattro utenti.
Fateci sapere nei commenti se avete provato ad utilizzare questa guida e quali sono state le vostre impressioni.
© 2008 Ziogeek.com
No tag for this post.
Dic 22 2014
Ecco la guida di BANCOMAT® per i vostri regali in sicurezza
Ci risiamo: arriva il Natale e parte la corsa frenetica agli acquisti dei regali per parenti ed amici. Sicuramente è un periodo di stress per tutti nel districarsi tra giocattoli, hi-tech e oggetti vari per accontentare, o almeno tentare di accontentare, un po’ di tutti. A complicare le cose, oltre alla frenesia dell’ultimo momento aggravata dalle poche idee per gli acquisti, si aggiungono file chilometriche alla cassa per i pagamenti. Ed in tutto questo caos, fatto di poco tempo e pochi soldi, ci si mette magari anche una cassiera che da il resto sbagliato.
Ti sarà capitato anche a te, vero?
Pagare in contanti è già di per se un’operazione lenta: prendi le banconote, prendi le monete, consegnale al cassiere, attendi il resto, controlla il resto, evidenzia eventuali errori di calcolo nel consegnare il resto…insomma, non il pagamento più veloce. Per fortuna però ci sono metodi di pagamento alternativi ai contanti, come è giusto che sia dato che siamo nel 2014 (anche se ancora per poco dato l’imminente ingresso nel 2015). Il Consorzio BANCOMAT® infatti afferma che anche quest anno Dicembre è il mese in cui si effettuano più pagamenti tramite POS, con una crescita del 2% rispetto alla media annuale. Ed effettivamente pagare con carta è molto più facile e veloce che in contanti.
L’infografica promossa dal Consorzio che gestisce i marchi BANCOMAT® e PagoBANCOMAT® è molto chiara e conferma quanto detto. Ma la velocità non è l’unico vantaggio del pagamento con carta. Mettiamo caso che perdete il portafogli: il denaro all’interno è perso per sempre. Se invece perdeste la carta basterebbe una chiamata al numero dedicato (800.822056 oppure quello comunicato dalla propria banca al momento dell’attivazione del conto) per bloccare la carta e non perdere denaro. Come abbiamo già detto può capitare anche che la cassiera dia il resto sbagliato: con il pagamento con carta questo non può succedere.
Logicamente bisogna avere diligenza nel conservare la carta ed il PIN. L’infografica vi fornisce anche utili consigli per acquistare in sicurezza: seguili!
By Blogbv Expert • Altro • • Tags: acquisti sicuri, pagamenti sicuri, pagare con carta