lunedì 19 maggio 2014

Un esempio di gioco a punti e a risposte temporizzate

Salve!

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