venerdì 26 dicembre 2014

La tombola parlante

Nella tombola, un giocatore con ruolo di croupier ha a disposizione un tabellone sul quale sono riportati tutti i numeri da 1 a 90, e un sacchetto riempito con pezzi numerati. Il suo compito consiste nell'estrarre i pezzi in modo casuale, e annunciare agli altri giocatori il numero uscito.

Bene, lo script, appena abbozzato, non fa altro che estrarre i numeri in modo casuale e annunciarli. Per continuare con l'estrazione bisogna premere Invio, per uscire dallo script, Ctrl+C.

Installiamo alcune dipendenze:

$ sudo apt-get install toilet espeak sox

Create un documento di testo nella cartella Documenti, chiamatelo croupier.sh e incollateci il codice di cui sotto.

Poi dal terminale spostatevi nella directory Documenti

$ cd Documenti

rendete eseguibile lo script

$ chmod +x croupier.sh

e lanciatelo

$ ./croupier.sh

#!/bin/bash
#Bit3Lux
#tombola.sh

function numero(){
espeak -p 50 -s 180 --stdout -v it+f5 | play -t wav - \
overdrive 10 
}
a=`for i in {1..90}; do echo $i; done | shuf`
clear
for i in $a 
do
     toilet -f smmono12 $i  && echo $i | numero 
    echo -e "\v" "Premere invio per continuare, Ctrl+C per uscire dallo script"
    read
    echo ""
    clear
done
exit 0

Alla prossima!

3 commenti:

  1. Nei prerequisiti dovresti inserire anche il pacchetto "sox", altrimenti il comando "play" non funziona

    RispondiElimina
    Risposte
    1. Vero! Lo aggiungo. :)
      P.S. Davo per scontato che tutti utilizzassero Lubit. Infatti su Lubit Sox è installato di default ;)

      Elimina
  2. Ho apportato una piccola modifica per tenere traccia anche dei numeri già estratti.

    #!/bin/bash
    #Bit3Lux
    #tombola.sh

    function numero(){
    espeak -p 50 -s 180 --stdout -v it+f2 | play -t wav - \
    overdrive 10
    }
    a=`for i in {1..90}; do echo $i; done | shuf`
    estratti="Nessuno"
    clear
    for i in $a
    do
    toilet -f smmono12 $i && echo $i | numero
    echo "Estratti: $estratti"
    if [ "$estratti" == "Nessuno" ];
    then
    estratti="$i"
    else
    estratti="$estratti,$i"
    fi
    echo -e "\v" "Premere invio per continuare, Ctrl+C per uscire dallo script"
    read
    echo ""
    clear
    done
    exit 0

    RispondiElimina