Jogo de perguntas e respostas
Publicado por Raimundo Alves Portela (última atualização em 26/12/2011)
[ Hits: 9.681 ]
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
Script para montagem de compartilhamento SAMBA (Gentoo)
Script de controle do Alfresco para RHEL / CentOS / Fedora
Disponibilidade de impressoras de rede
Instalar e Configurar o Slackware Linux em 2025
Como configurar os repositórios do apt no Debian 12 em 2025
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Configurando o Conky para iniciar corretamente no sistema
3 configurações básicas que podem melhorar muito a sua edição pelo editor nano
Como colorir os logs do terminal com ccze
Instalação Microsoft Edge no Linux Mint 22
Como configurar posicionamento e movimento de janelas no Lubuntu (Openbox) com atalhos de teclado
Jogando com Proton no LInux (0)
Ingress NGINX Controller CVSS base score of 9.8 (4)
Impossível corrigir problemas, você manteve (hold) pacotes quebrados. (2)