Un gioco sulle tabelline in scratch

Adesso proviamo a realizzare un’applicazione che può essere affrontata a diversi livelli a partire dalla quinta classe della scuola primaria sino ai primi anni di liceo. Basta introdurre alcune varianti per rendere l’applicazione più o meno difficile.

L’intenzione nostra è quella di costruire un elaboratore automatico di domande sulle tabelline che analizza anche e risposte e stila un punteggio finale.
Il nostro elaboratore può anche essere arricchito con un gioco dove ad esempio il personaggio dello sprite si muove ogni volta che risponde correttamente e svanisce man mano ogni volta che sbaglia.

L’applicazione potrebbe essere più complessa se la si arricchisce con dei quesiti su qualcosa di più difficile delle tabelline come ad esempio elevamento a potenza ed altre funzioni matematiche.

Da dove partire? Intanto occorre fare un primo ragionamento su cosa si vuole ottenere. L’obiettivo è quello di fornire di volta in volta una domanda del tipo “quanto fa x per y?” , elaborare la risposta, confrontarla con la risposta corretta e fornire il punteggio. X e y sono dei numeri a caso compresi tra 1 e 10. Quindi una prima cosa da fare è quella di dichiarare due variabili, “primo numero” e “secondo numero” che conterranno i valori estratti a caso. Poi ci serve una variabile che contenga il valore inserito dall’utente come risposta, infine ci serve una variabile che conti un eventuale punteggio ed un’altra che conti gli errori

Iniziamo a dichiarare le variabili che ci servono:

Queste variabili sono più che sufficienti per il nostro programma. Iniziamo a realizzare la nostra applicazione estraendo due numeri a caso e salvandoli nelle apposite variabili.

A questo punto occorre formulare bene la domanda. Qui ho utilizzato in modo pesante la funzione “unione” che consente di unire due parole o una parola e un numero per costruire una frase.

Questa istruzione apparentemente complessa non lo è. Infatti essa consente di unire le parole “calcola” il numero primo, la parola x e il numero secondo. Ovviamente al posto del blocco primo apparirà il valore del primo numero e al posto del blocco secondo apparirà il valore della variabile secondo.  Ecco cosa ci aspettiamo che appaia:

Dove 8 e 3 sono i numeri casuali appena estratti e il resto è ciò che fa parte della costruzione della frase che di fatto rappresenta la richiesta di inserire un valore nello spazio in basso.

La risposta la leggiamo direttamente non appena essa viene inserita e viene premuto il bottone invio. Una volta letta la risposta occorre verificare se essa è corretta o meno. Basta Utilizzare un blocco condizionale che testa il valore che è stato inserito confrontandolo con il valore che ci si aspetta e si comporta di conseguenza. Una soluzione potrebbe essere questa:

Come è possibile vedere, si verifica se la risposta è veramente uguale al prodotto. Se lo è si dà una risposta e si incrementa il punteggio, altrimenti si dà un’altra risposta e si incrementa il contatore degli errori. Questa struttura decisionale contiene al suo interno anche l’avanzamento dello sprite. L’idea che si potrebbe proporre è quella di una ideale corsa verso un traguardo che si raggiunge 10 passi alla volta e, se vogliamo, si va indietro di 10 passi se si sbaglia. Sull’aspetto ludico possiamo ipotizzare diverse varianti come ad esempio la totale scomparsa dello sprite. Ecco come si presenta il codice completo:

Ovviamente questo codice esegue una sola volta le istruzioni. Avevamo ipotizzato qualcosa che  consenta di ripetere la domanda per un certo numero di volte. Basta aggiungere un ciclo. Aggiungiamolo!

Il ciclo si ripete un certo numero indefinito di volte. Esso finisce solo se raggiungiamo un numero massimo di 3 errori oppure raggiungiamo 10 punti. Alla fine del ciclo visualizziamo il risultato finale che in questo caso sarà inferiore o uguale a 10 a seconda se abbiamo raggiunto o meno il numero massimo di errori.

Modifiche e varianti

Una interessante modifica potrebbe essere rappresentata da un cronometro che misuri la durata dell’esecuzione e quindi aggiunga un fattore tempo al numero di risposte corrette. Un’altra potrebbe essere rappresentata con la richiesta di operazioni di tipo diverso come ad esempio elevamento a potenza, somme anche con numeri relativi. Un’altra ancora potrebbe proporre numeri frazionari. In questo modo si può evolvere l’applicazione adeguandola all’ordine di studi dove la si vuole applicare.

 

Ecco il codice sorgente da scaricare e provare Tabelline.sb2

11362total visits,1visits today