Jogo de perguntas e respostas
Publicado por Raimundo Alves Portela (última atualização em 26/12/2011)
[ Hits: 9.674 ]
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
Instalar o Navegador Tor em qualquer distribuição Linux
Instale o driver proprietário Nvidia baixado do site oficial em qualquer distro
Testando se a conexão com a Internet está ativa
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
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
Máquinas Virtuais com IP estático acessando Internet no Virtualbox
Criar entrada no GRUB para uma ISO Linux (7)
Open Suse não abre wi-fi automaticamente (3)
Ruído no Microfone (ALC287 - AMD Ryzen 5 7535HS) no Debian 12.9 (15)