Jogo de perguntas e respostas
Publicado por Raimundo Alves Portela (última atualização em 26/12/2011)
[ Hits: 9.851 ]
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
O que fazer após instalar o Debian 8 - versão em Shell Script
Sincronização entre Servidores de Impressão
Invertendo strings usando vetores
Envia e-mails periodicamente com back-up do servidor
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Novos apps de produtividade, avanços em IA e distros em ebulição agitam o universo Linux
Como instalar o repositório do DBeaver no Ubuntu
Como instalar o Plex Media Server no Ubuntu
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
O programa assinador digital (1)
PIP3 - erro ao instalar módulo do mariadb para o Python (9)
É normal não gostar de KDE? (8)
dpkg: erro: gatilho de arquivo duplicado chamado pelo arquivo de nome (6)









