Oggi vi presento un esempio di gioco a punti e a risposte temporizzate, scritto in bash.
Lo script l'ho realizzato alle tre di notte, su richiesta di un mio amico nottambulo in cambio di... Vabbè, Ciro mi ha promesso che per colazione mi avrebbe portato un vassoio di paste, ecco.
La notte è stata già parecchio movimentata. Stamattina devo mietere l'erba intorno alla casa, e il decespugliatore non ne voleva sapere. L'ho dovuto riparare. Abito in campagna, e l'erba alta diventa un pericolo per via delle vipere. Vabbè, mi sto lamentando troppo.
Penso che lo script sia abbastanza chiaro. Ho tirato fuori dal cappello magico una preziosa opzione del comando read, -t, che temporizza la risposta in base al tempo passatogli attraverso una variabile.
Nella funzione "elaborazione", tra gli if, ci sono dei contatori di punteggio. Ad ogni risposta esatta vengono assegnati 5 punti, a quelle sbagliate o fuori tempo, 0 punti.
Un'altra nota di rilievo è costituita dal comando grep -i, che rende la ricerca case-insensitive, cioè quando la ricerca di una parola dà risultati identici indipendentemente dal fatto che sia scritta con caratteri maiuscoli o minuscoli.
Poi ci sarebbe il parametro speciale $?, che restituisce lo stato dell'ultimo comando eseguito. Se restituisce il valore 0, è andato tutto bene, se restituisce il valore uno, cavoli amari.
Bisogna essere veloci a dare, di volta in volta, le risposte. Solo 4 secondi.
Avrei potuto perfezionarlo, aggiungere altre domande, magari renderlo più snello...lascio a voi, qualora vi piaccia, l'arduo compito.
Non esitate a chiedere chiarimenti, a suggerire consigli o a esternare perplessità. ;)
#!/bin/bash
#Un esempio di gioco a punti e a risposta temporizzata!
#gioco.sh
#Bit3Lux
successo=0 #Il valore con cui si confronterà il parametro speciale $?
punti=0 #contantore punti
tempo=4 #Il tempo di risposta (quattro secondi).
function elaborazione(){
if [ "$?" -eq $successo ]; then
echo -e "\n\tBravo!\n\tHai risposto in tempo e il nome della capitale è giusto\n"
punti=$[$punti+5]
elif [ -z $capitale ]; then
echo -e "\n\tNon hai risposto in tempo\n."
punti=$[$punti+0]
else
echo -e "\n\til nome della capitale è sbagliato\n"
punti=$[$punti+0]
fi
sleep 3
}
#Prima domanda
echo
read -t $tempo -p "Qual è la capitale della Francia? " capitale
clear
echo -n "$capitale" | grep -i "Parigi"
elaborazione
clear
#Seconda domanda
echo
read -t $tempo -p "Qual è la capitale della Spagna? " capitale #l'opzione -t di read temporizza la risposta.
clear
echo -n "$capitale" | grep -i "Madrid"
elaborazione
clear
#Terza domanda
echo
read -t $tempo -p "Qual è la capitale del Portogallo? " capitale
clear
echo -n "$capitale" | grep -i "Lisbona"
elaborazione
clear
#Quarta domanda
echo
read -t $tempo -p "Qual è la capitale della Germania? " capitale
clear
echo -n "$capitale" | grep -i "Berlino"
elaborazione
clear
#Punteggio finale
if [ $punti -eq 0 ]; then
echo -e "\n\tSarà il caso di ritornare a studiare, non pensi? :)\n"
elif [ $punti -eq 20 ]; then
echo -e "\n\tCaro $USER, hai totalizzato il massimo dei punti!!! Bravo/a!!\n"
else
echo -e "\n\tCaro $USER,\n\thai totalizzato $punti punti su 20\n!"
fi
exit 0
Posto che salviate lo script nella cartella Documenti,
$ cd Documenti
$ chmod +x gioco.sh
$ ./gioco.sh
P.S.
Vi ricordo che da una decina di giorni è online Lubit 3!!! Qualora vogliate scaricarla, qui la presentazione, qui la pagina di download, qui il sito ufficiale.
Da non molto tempo abbiamo creato anche una pagina facebook di Lubit Linux. Sulla pagina facebook vengono riportate tutte le notizie afferenti a lubit, al suo sviluppo, alla sua associazione, "Amici di Lubit", ai suoi sviluppatori, etc.
Alla prossima!
Nessun commento:
Posta un commento