Jogo de perguntas e respostas
Publicado por Raimundo Alves Portela (última atualização em 26/12/2011)
[ Hits: 9.944 ]
Homepage: http://portelanet.com
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.
#!/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
Configurando IP, Nome de maquina, Gateway e Samba.
Identificar,matar e Iniciar novo Processo
Levantamento de hardware e software no Mandriva 2006
Gerenciamento do Samba com Dialog
LazyDocker – Interface de Usuário em Tempo Real para o Docker
Instalando COSMIC no Linux Mint
Turbinando o Linux Mint: o poder das Nemo Actions
Inteligência Artificial no desenvolvimento de software: quando começar a usar?
O widget do Plasma 6 Área de Notificação
[Resolvido] Algo deu errado ao abrir seu perfil
Quando vocês pararam de testar distros? (14)
Problema com som no laptop (3)
Não estou conseguindo fazer funcionar meu Postfix na versão 2.4 no Deb... (2)









