Jogo de perguntas e respostas

Publicado por Raimundo Alves Portela (última atualização em 26/12/2011)

[ Hits: 9.573 ]

Homepage: http://portelanet.com

Download jogo_do_milho.tar.gz




Jogo do Milho ;-)

Fiz esse jogo usando Shell Script + Yad (http://www.vivaolinux.com.br/artigo/Apresentando-o-Yad-zenity-melhorado/)

Ele é bem genérico, coloquei apenas 3 perguntas, mas qualquer um poderá utilizá-lo, adicionando mais perguntas.

Para adicionar mais perguntas, basta criar um arquivo com o "formato" .pergunta, dentro do diretório perguntas e seguir a seguinte estrutura:

P| coloque a sua pergunta aqui
Q1 "alternativa1"
Q2 "alternativa2"
Q3 "alternativa3"
Q4 "alternativa4"
R|Q2 indique a alternativa correta aqui usando o seu identificador, como no exemplo Q2

Exemplo:
P|Qual dos comandos abaixo permite redirecionar sua entrada padrão para a saída padrão?
Q1 "gato"
Q2 "cp"
Q3 "mv"
Q4 "cat"
R|Q4

Para executá-lo, basta chamar o script main.sh:

./main.sh

Observe no código abaixo que são 4 arquivo, separados por "#---------------------------".
Boa diversão à todos.

  



Esconder código-fonte

#!/bin/bash
# arquivo main.sh
while yad --title='Jogo do Milho' --image='milho.jpg' --image-on-top --button='Jogar':0 --button='Parar':1
do
   export ARQ_TEMP='/tmp/lista_pergunta'
   cd perguntas
   ls *.pergunta > "$ARQ_TEMP"
   cd -
   QTD_PERGUNTAS=$( cat "$ARQ_TEMP" | wc -l)
   [ "${QTD_PERGUNTAS:-0}" -eq 0 ] && yad --title='Aviso' --text='Não há perguntas no diretório [perguntas]' --button='OK':0
   PROXIMA=$[RANDOM%$QTD_PERGUNTAS+1]
   
   PERGUNTA=$(cat "$ARQ_TEMP" | head -n $PROXIMA | tail -n 1)
   
   sed -i /"$PERGUNTA"/d "$ARQ_TEMP"

   ./tela_pergunta.sh "perguntas/$PERGUNTA"
done

#---------------------------------------------------------------------------------------
#!/bin/bash
# arquivo tela_pergunta.sh
ARQUIVO="$1"
RESP=$(egrep '^R.*' "$ARQUIVO" | cut -d'|' -f2)
PERGUNTA=$(egrep '^P.*' "$ARQUIVO" | cut -d'|' -f2) 
QUESTAO[1]=$(egrep '^Q1.*' "$ARQUIVO") 
QUESTAO[2]=$(egrep '^Q2.*' "$ARQUIVO") 
QUESTAO[3]=$(egrep '^Q3.*' "$ARQUIVO") 
QUESTAO[4]=$(egrep '^Q4.*' "$ARQUIVO")

QTD_QUESTOES="${#QUESTAO[@]}"

RESPOSTA=$(\
   eval yad --list \
    --title \'Jogo do Milho \' \
    --width=500 --height=500 \
    --window-icon=\'vux.png\' \
    --borders=20 \
    --undecorated \
    --sticky \
    --center \
    --no-headers \
    --hide-column=1 \
    --print-column=1 \
    --separator=\'\' \
    --timeout=10 \
    --timeout-indicator=\'left\' \
    --text \"\<b\>$PERGUNTA\<\/b\>\" \
    --button=\'Pulo\':\"./tela_pulo.sh\"  --button=\'Parar\':1 --button=\'Respondo\':0 \
    --column=\'OP\':TEXT --column=\'Opções\':TEXT \
    $( for i in $(seq $QTD_QUESTOES)
       do
         echo ${QUESTAO[$i]}
       done ))
       
[ "$?" -eq 1 ] && exit

[ "$RESPOSTA" == "$RESP" ] && yad --title='Jodo do Milho' --text='Parabéns você acertou!' --button='OK':0

./tela_perdeu.sh && exit
#---------------------------------------------------------------------------------------
#!/bin/bash
# arquivo tela_pulo.sh
#captura próxima pergunta
killall yad
QTD_PERGUNTAS=$( cat "$ARQ_TEMP" | wc -l)

[ "${QTD_PERGUNTAS:-0}" -eq 0 ] && yad --title='Aviso' --text='As perguntas acabaram-se' --button='OK':0 && exit

PROXIMA=$[RANDOM%$QTD_PERGUNTAS+1]

PERGUNTA=$(cat "$ARQ_TEMP" | head -n $PROXIMA | tail -n 1)

sed -i /"$PERGUNTA"/d "$ARQ_TEMP"

yad --image='pular.jpg' --image-on-top --timeout=2 --undecorated --no-buttons

./tela_pergunta.sh "perguntas/$PERGUNTA"

#---------------------------------------------------------------------------------------
#!/bin/bash
# arquivo tela_perdeu.sh
yad --text='Que pena, você perdeu tudo!' --image='perdeu_tudo.jpg' --image-on-top --timeout=2 --undecorated --no-buttons 

Scripts recomendados

Find em arquivos compactados (grep em arquivos tgz)

Adicionar/Deletar Usuarios Samba/Sistema

Gerenciamento de logs em servidores de aplicação

Atualizando /home dos usuários em rede.(GNOME)

Atualização para KDE 3.5.2


  

Comentários
[1] Comentário enviado por danniel-lara em 26/12/2011 - 11:06h

Parabens ficou legal o jogo

[2] Comentário enviado por rai3mb em 26/12/2011 - 11:28h

Obrigado ;-). Pena não ter dado para colocar fotos dele aqui, mas vou por no Artigo que estou fazendo sobre as novidades recentes do Yad.
Feliz ano novo.

[3] Comentário enviado por danniel-lara em 26/12/2011 - 15:45h

tranquilo , vou esperar pelo artigo ;
há aquele script que tu me ajudou com o YAD eu melhorei um pouco ele
estou quase finalizando para postar também .
Feliz Ano Novo pra você também


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts