| QUIZ | #2


 

Eccoci pronti per fare tanti click! 💪

Nella prima parte abbiamo visto come caricare ed organizzare i dati, mescolare e posizionare la domanda e le risposte, oggi invece andremo a gestire l'evento click sui vari pulsanti per capire se la risposta è stata data nel modo corretto o meno. Anche in questo caso ci avvaliamo dei blocchi any per gestire più velocemente tutte le operazioni e per evitare codice superfluo.


Il codice di base è veramente molto semplice e bisogna solo prendere dimestichezza con i blocchi nuovi e organizzare nel modo corretto i dati salvati. Prima di tutto visto che usiamo i blocchi any, che come dice la parola valgono per tutti, dobbiamo assicuraci che questo codice si attivi solo al click sui nostri buttons che contengono le risposte e non magari sui pulsanti del menu, del suono o qualsiasi altro, per questo motivo un carinissimo if andrà ad abbracciare il nostro codice per effettuare un controllo. Vi ricordo che all'inizio abbiamo creato una lista BUTTONS che contiene proprio i 4 pulsanti delle risposte e quindi ci basterà controllare se il componente appena cliccato è presente in questa lista is in list thing entrando nella lista dei pulsanti effettua la verifica. Il blocco when  any Button.click ad ogni click di qualsiasi pulsante restituisce il nome del pulsante cliccato component che useremo proprio per vedere se è presente nella famosa lista, se l'esito è positivo vuol dire che abbiamo premuto un tasto risposta. Evitata l'attivazione da parte di pulsanti errati andiamo a verificare la risposta che abbiamo preventivamente salvato come secondo elemento della nostra lista QUESTION quindi non dobbiamo fare altro che verificare se il testo del componente cliccato è uguale alla risposta esatta. If then else , perché possiamo anche sbagliare domanda, parte controllando se Button text del componente cliccato (quindi il suo testo) è uguale a select list item index 2 , il secondo elemento della lista cioè la risposta esatta. In questo caso gioia infinita , abbiamo indovinato la risposta, facciamo partire la musica aumentiamo il punteggio di 50 (label points text + 50) , aggiorniamo il punteggio nella label e facciamo partire la procedura che mostrerà un'altra domanda, call SET QUESTION.

In caso contrario else dobbiamo studiare di più, quindi diminuiamo i punti sottraendo a global SCORE 20, sempre usando label POINTS text - 20, e adesso dobbiamo fare una distinzione. Mentre aggiungendo punti non abbiamo bisogno di monitorare il valore del punteggio , sottraendo punteggio dobbiamo verificare se il valore attuale dello SCORE è maggiore o uguale a zero, vuol dire che abbiamo ancora la possibilità di giocare. In questo caso musichetta a tutto spiano , aggiorniamo il punteggio a video (set label POINTS text to global SCORE ) e mandiamo in esecuzione SET_QUESTION per una nuova domanda. In caso contrario con un valore negativo di SCORE abbiamo perso definitivamente quindi musica triste, azzeriamo la label POINTS per non andare nei negativi , notifichiamo la fine della partita con la scelta di poter giocare una nuova partita o meno. Ecco quindi un altro modo per far terminare la partita , perdere tutti i punti guadagnati con le risposte esatte. Il gioco prevede anche del tempo che scorre, anzi abbiamo visto che meno tempo si perde per rispondere più punti si guadagnano , vediamo quindi il codice dell'orologio che settato a un secondo useremo per fare un countdown. Ad ogni rintocco del nostro orologio andremo a sottrarre 1 al valore attuale della label TIME text che contiene il tempo rimasto, questo blocco non è soggetto a condizioni perché dovrà sempre lavorare andando a creare l'effetto countdown. Adesso partiamo con la personalizzazione! 

Io voglio che gli ultimi 10 rintocchi abbiano un suono diverso o comunque voglio che si capisca che il tempo sta finendo , per questo motivo se il tempo è minore di 10 ( label TIME text < 10) imposto il mio TIC TAC per essere riprodotto ma non finisce qui. Il tempo scorre e devo identificare il momento in cui finirà quindi se label TIME text è uguale a zero, il nostro GONG sancisce la fine dei giochi quindi fermiamo anche il clock GAME che avevamo attivato ad inizio partita. Anche in questo caso se SCORE ( punteggio della partita) > BEST SCORE andiamo ad aggiornare il valore del BEST SCORE, salviamo i dati nel tinyDb, aggiorniamo l'intestazione e notifichiamo il nuovo record. In ogni caso andremo a settare la label con la scritta TIME OUT notificando anche la fine del tempo, come sempre mostreremo la scelta se voler giocare ancora o finire il gioco. 

Ecco tutti i blocchi di base per poter fare un quiz veloce ricco di tutte le domande che vogliamo , vi ricordo che il progetto da scaricare QUI contiene più personalizzazioni che vi consiglio di visionare per prendere spunto, QUI invece troverete apk per testare il progetto. Commenti , proposte e domande sono sempre ben accette, seguite commentate e mettete like su tutti i social così da supportare  il mio impegno.

Notte a tutti , alla prossima.


Integrazione 

Come promesso andremo a vedere anche come aggiornare il nostro quiz scaricando una nuova versione delle domande, quindi non più domande statiche salvate in locale ma la possibilità di poter scaricare ad ogni accesso la nuova versione.

Come creare il file lo abbiamo visto la scorsa volta solo che adesso non andremo manualmente a scaricare il file per salvarlo in app ma faremo il download da app, usando il link diretto del foglio di google. Una volta scritto il nostro csv lo lasciamo salvato nel nostro drive e rendiamo pubblico il file attivando l'opzione visibile a chiunque abbia il link. Salviamoci questo link ed andiamo in app.

Prima cosa controlliamo il link ottenuto perché dovremo fare delle modifiche.


Qui in alto ho segnato il link ottenuto direttamente da drive, è l'ultimo con la scritta finale che contiene edit e sharing, se lo confrontiamo con il primo link noteremo una notevole somiglianza a differenza della parte finale dopo lo slash. Uno è per lo sharing l'altro per il download, noi andremo a selezionare la parte evidenziata in celeste e la cancelleremo, al suo posto dobbiamo inserire export?format=csv.

Naturalmente a differenza di prima dobbiamo introdurre dei blocchi per il download , come prima cosa introduciamo il link corretto e lo possiamo gestire sia nelle impostazioni sotto la voce URL oppure tramite blocchi in app, per esempio sotto Initialize screen.



Una volta impostato mandiamo in esecuzione il componente web Get dopo aver inserito Web nel designer editor , questo farà attivare il blocco GotText e qui abbiamo due possibilità. 
1) Salvare il contenuto direttamente in una variabile tramite il blocco list from csv table che ci restituisce partendo da un file csv una lista di liste ( vi ricordo che il file conteneva più righe e più colonne ).  In questo caso il file è pronto per l'uso come da vecchio tutorial.
2) Salvare il file in memoria usando save file e il componente file, vi ricordo che file diversi con stesso nome andranno sovrascritti.
Usando quindi il save file introducendo direttamente content nel plug andremo a salvare il file in formato csv nella nostra memoria , da qui adesso dobbiamo usare il blocco ReadFrom per andare a richiamare il file e modificarlo. Read file attiva GotText che ci permette tramite text di salvare il nostro quiz come una lista per essere riutilizzato ( blocco list from csv table ). In entrambi i casi il risultato sarà quello sul lato sinistro dove i balloon ci permettono di vedere i vari passaggi. La lista è composta da tre righe ed ogni riga da quattro colonne, ogni tripletta forma una riga.
Spero vi sia piaciuta questa aggiunta. 
Un saluto da Raffaele  


 Se hai apprezzato il mio lavoro offrimi un bel caffè 😍

 

Commenti

Ciao, spero ti piaccia il blog. Se ti fa piacere qui puoi offrirmi un caffè!

Post popolari in questo blog

GOOGLE SCRIPT & KODULAR READ, WRITE, UPDATE, DELETE

Tu lo conosci THUNKABLE?