Jogo da Velha
Publicado por Hertz Raya Zocolan Silva (última atualização em 13/07/2018)
[ Hits: 2.068 ]
Jogo da velha feito em script shell.
#!/bin/bash # # Script: jv.sh ( Release 1.0 ) # Feito : Hertz S. ( 30/12/2006 ) # Obs : Jogo da Velha # tput clear cat<<EOT | | ---+---+--- | | ---+---+--- | | EOT #------------------------------------------------------------------------------ rm /tmp/jogadas.txt 2>/dev/null cat<<EOT>/tmp/jogadas.txt XXX XXX XXX EOT #------------------------------------------------------------------------------ Print_123() { tput cup 2 5 ; echo "`tput smso`${valor}`tput rmso`" tput cup 2 9 ; echo "`tput smso`${valor}`tput rmso`" tput cup 2 13 ; echo "`tput smso`${valor}`tput rmso`" tput cup 2 7 ; echo "`tput smso`|`tput rmso`" tput cup 2 11 ; echo "`tput smso`|`tput rmso`" tput cup 2 4 ; echo "`tput smso` `tput rmso`" tput cup 2 6 ; echo "`tput smso` `tput rmso`" tput cup 2 8 ; echo "`tput smso` `tput rmso`" tput cup 2 10 ; echo "`tput smso` `tput rmso`" tput cup 2 12 ; echo "`tput smso` `tput rmso`" tput cup 2 14 ; echo "`tput smso` `tput rmso`" } Print_456() { tput cup 4 5 ; echo "`tput smso`${valor}`tput rmso`" tput cup 4 9 ; echo "`tput smso`${valor}`tput rmso`" tput cup 4 13 ; echo "`tput smso`${valor}`tput rmso`" tput cup 4 7 ; echo "`tput smso`|`tput rmso`" tput cup 4 11 ; echo "`tput smso`|`tput rmso`" tput cup 4 4 ; echo "`tput smso` `tput rmso`" tput cup 4 6 ; echo "`tput smso` `tput rmso`" tput cup 4 8 ; echo "`tput smso` `tput rmso`" tput cup 4 10 ; echo "`tput smso` `tput rmso`" tput cup 4 12 ; echo "`tput smso` `tput rmso`" tput cup 4 14 ; echo "`tput smso` `tput rmso`" } Print_789() { tput cup 6 5 ; echo "`tput smso`${valor}`tput rmso`" tput cup 6 9 ; echo "`tput smso`${valor}`tput rmso`" tput cup 6 13 ; echo "`tput smso`${valor}`tput rmso`" tput cup 6 7 ; echo "`tput smso`|`tput rmso`" tput cup 6 11 ; echo "`tput smso`|`tput rmso`" tput cup 6 4 ; echo "`tput smso` `tput rmso`" tput cup 6 6 ; echo "`tput smso` `tput rmso`" tput cup 6 8 ; echo "`tput smso` `tput rmso`" tput cup 6 10 ; echo "`tput smso` `tput rmso`" tput cup 6 12 ; echo "`tput smso` `tput rmso`" tput cup 6 14 ; echo "`tput smso` `tput rmso`" } Print_147() { tput cup 2 5 ; echo "`tput smso`${valor}`tput rmso`" tput cup 4 5 ; echo "`tput smso`${valor}`tput rmso`" tput cup 6 5 ; echo "`tput smso`${valor}`tput rmso`" tput cup 3 5 ; echo "`tput smso`-`tput rmso`" tput cup 5 5 ; echo "`tput smso`-`tput rmso`" } Print_258() { tput cup 2 9 ; echo "`tput smso`${valor}`tput rmso`" tput cup 4 9 ; echo "`tput smso`${valor}`tput rmso`" tput cup 6 9 ; echo "`tput smso`${valor}`tput rmso`" tput cup 3 9 ; echo "`tput smso`-`tput rmso`" tput cup 5 9 ; echo "`tput smso`-`tput rmso`" } Print_369() { tput cup 2 13 ; echo "`tput smso`${valor}`tput rmso`" tput cup 4 13 ; echo "`tput smso`${valor}`tput rmso`" tput cup 6 13 ; echo "`tput smso`${valor}`tput rmso`" tput cup 3 13 ; echo "`tput smso`-`tput rmso`" tput cup 5 13 ; echo "`tput smso`-`tput rmso`" } Print_159() { tput cup 2 5 ; echo "`tput smso`${valor}`tput rmso`" tput cup 4 9 ; echo "`tput smso`${valor}`tput rmso`" tput cup 6 13 ; echo "`tput smso`${valor}`tput rmso`" tput cup 5 11 ; echo "`tput smso`+`tput rmso`" tput cup 3 7 ; echo "`tput smso`+`tput rmso`" } Print_357() { tput cup 2 13 ; echo "`tput smso`${valor}`tput rmso`" tput cup 4 9 ; echo "`tput smso`${valor}`tput rmso`" tput cup 6 5 ; echo "`tput smso`${valor}`tput rmso`" tput cup 3 11 ; echo "`tput smso`+`tput rmso`" tput cup 5 7 ; echo "`tput smso`+`tput rmso`" } #------------------------------------------------------------------------------ jogar() { if [ "${1}" -eq "1" ] then linha1c2="`cat /tmp/jogadas.txt | head -1 | cut -c2,2`" linha1c3="`cat /tmp/jogadas.txt | head -1 | cut -c3,3`" linha2="`cat /tmp/jogadas.txt | head -2 | tail -1`" linha3="`cat /tmp/jogadas.txt | tail -1`" echo "${vx}${linha1c2}${linha1c3}" > /tmp/tmpj.$$ echo "${linha2}" >> /tmp/tmpj.$$ echo "${linha3}" >> /tmp/tmpj.$$ mv /tmp/tmpj.$$ /tmp/jogadas.txt unset linha2 linha3 vx linha1c2 linha1c3 fi if [ "${1}" -eq "2" ] then linha1c1="`cat /tmp/jogadas.txt | head -1 | cut -c1,1`" linha1c3="`cat /tmp/jogadas.txt | head -1 | cut -c3,3`" linha2="`cat /tmp/jogadas.txt | head -2 | tail -1`" linha3="`cat /tmp/jogadas.txt | tail -1`" echo "${linha1c1}${vx}${linha1c3}" > /tmp/tmpj.$$ echo "${linha2}" >> /tmp/tmpj.$$ echo "${linha3}" >> /tmp/tmpj.$$ mv /tmp/tmpj.$$ /tmp/jogadas.txt unset linha2 linha3 vx linha1c1 linha1c3 fi if [ "${1}" -eq "3" ] then linha1c1="`cat /tmp/jogadas.txt | head -1 | cut -c1,1`" linha1c2="`cat /tmp/jogadas.txt | head -1 | cut -c2,2`" linha2="`cat /tmp/jogadas.txt | head -2 | tail -1`" linha3="`cat /tmp/jogadas.txt | tail -1`" echo "${linha1c1}${linha1c2}${vx}" > /tmp/tmpj.$$ echo "${linha2}" >> /tmp/tmpj.$$ echo "${linha3}" >> /tmp/tmpj.$$ mv /tmp/tmpj.$$ /tmp/jogadas.txt unset linha2 linha3 vx linha1c1 linha1c2 fi if [ "${1}" -eq "4" ] then linha2c2="`cat /tmp/jogadas.txt | head -2 | tail -1 | cut -c2,2`" linha2c3="`cat /tmp/jogadas.txt | head -2 | tail -1 | cut -c3,3`" linha1="`cat /tmp/jogadas.txt | head -1`" linha3="`cat /tmp/jogadas.txt | tail -1`" echo "${linha1}" > /tmp/tmpj.$$ echo "${vx}${linha2c2}${linha2c3}">> /tmp/tmpj.$$ echo "${linha3}" >> /tmp/tmpj.$$ mv /tmp/tmpj.$$ /tmp/jogadas.txt unset linha1 linha3 vx linha2c2 linha2c3 fi if [ "${1}" -eq "5" ] then linha2c1="`cat /tmp/jogadas.txt | head -2 | tail -1 | cut -c1,1`" linha2c3="`cat /tmp/jogadas.txt | head -2 | tail -1 | cut -c3,3`" linha1="`cat /tmp/jogadas.txt | head -1`" linha3="`cat /tmp/jogadas.txt | tail -1`" echo "${linha1}" > /tmp/tmpj.$$ echo "${linha2c1}${vx}${linha2c3}" >> /tmp/tmpj.$$ echo "${linha3}" >> /tmp/tmpj.$$ mv /tmp/tmpj.$$ /tmp/jogadas.txt unset linha1 linha3 vx linha2c1 linha2c3 fi if [ "${1}" -eq "6" ] then linha2c1="`cat /tmp/jogadas.txt | head -2 | tail -1 | cut -c1,1`" linha2c2="`cat /tmp/jogadas.txt | head -2 | tail -1 | cut -c2,2`" linha1="`cat /tmp/jogadas.txt | head -1`" linha3="`cat /tmp/jogadas.txt | tail -1`" echo "${linha1}" > /tmp/tmpj.$$ echo "${linha2c1}${linha2c2}${vx}">> /tmp/tmpj.$$ echo "${linha3}" >> /tmp/tmpj.$$ mv /tmp/tmpj.$$ /tmp/jogadas.txt unset linha1 linha3 vx linha2c3 linha2c4 fi if [ "${1}" -eq "7" ] then linha3c2="`cat /tmp/jogadas.txt | tail -1 | cut -c2,2`" linha3c3="`cat /tmp/jogadas.txt | tail -1 | cut -c3,3`" linha1="`cat /tmp/jogadas.txt | head -1`" linha2="`cat /tmp/jogadas.txt | head -2 | tail -1`" echo "${linha1}" > /tmp/tmpj.$$ echo "${linha2}" >> /tmp/tmpj.$$ echo "${vx}${linha3c2}${linha3c3}">> /tmp/tmpj.$$ mv /tmp/tmpj.$$ /tmp/jogadas.txt unset linha1 linha2 vx linha3c2 linha3c3 fi if [ "${1}" -eq "8" ] then linha3c1="`cat /tmp/jogadas.txt | tail -1 | cut -c1,1`" linha3c3="`cat /tmp/jogadas.txt | tail -1 | cut -c3,3`" linha1="`cat /tmp/jogadas.txt | head -1`" linha2="`cat /tmp/jogadas.txt | head -2 | tail -1`" echo "${linha1}" > /tmp/tmpj.$$ echo "${linha2}" >> /tmp/tmpj.$$ echo "${linha3c1}${vx}${linha3c3}">> /tmp/tmpj.$$ mv /tmp/tmpj.$$ /tmp/jogadas.txt unset linha1 linha2 vx linha3c1 linha3c3 fi if [ "${1}" -eq "9" ] then linha3c1="`cat /tmp/jogadas.txt | tail -1 | cut -c1,1`" linha3c2="`cat /tmp/jogadas.txt | tail -1 | cut -c2,2`" linha1="`cat /tmp/jogadas.txt | head -1`" linha2="`cat /tmp/jogadas.txt | head -2 | tail -1`" echo "${linha1}" > /tmp/tmpj.$$ echo "${linha2}" >> /tmp/tmpj.$$ echo "${linha3c1}${linha3c2}${vx}">> /tmp/tmpj.$$ mv /tmp/tmpj.$$ /tmp/jogadas.txt unset linha1 linha2 vx linha3c1 linha3c2 fi if [ ${var} -gt 2 ] then check_play fi } #------------------------------------------------------------------------------ seq_123() { conf="`cat /tmp/jogadas.txt | head -1 | grep X | wc -l`" if [ ${conf} -eq 0 ] then var1="`cat /tmp/jogadas.txt | head -1 | cut -c1,1`" var2="`cat /tmp/jogadas.txt | head -1 | cut -c2,2`" var3="`cat /tmp/jogadas.txt | head -1 | cut -c3,3`" tot="`expr ${var1} + ${var2} + ${var3}`" if [ ${tot} -eq 3 ] || [ ${tot} -eq 6 ] then STATUS="${tot}" ; REF="123" fi fi unset var1 var2 var3 tot conf } #------------------------------------------------------------------------------ seq_456() { conf="`cat /tmp/jogadas.txt | head -2 | tail -1 | grep X | wc -l`" if [ ${conf} -eq 0 ] then var1="`cat /tmp/jogadas.txt | head -2 | tail -1 | cut -c1,1`" var2="`cat /tmp/jogadas.txt | head -2 | tail -1 | cut -c2,2`" var3="`cat /tmp/jogadas.txt | head -2 | tail -1 | cut -c3,3`" tot="`expr ${var1} + ${var2} + ${var3}`" if [ ${tot} -eq 3 ] || [ ${tot} -eq 6 ] then STATUS="${tot}" ; REF="456" fi fi unset var1 var2 var3 tot conf } #------------------------------------------------------------------------------ seq_789() { conf="`cat /tmp/jogadas.txt | tail -1 | grep X | wc -l`" if [ ${conf} -eq 0 ] then var1="`cat /tmp/jogadas.txt | tail -1 | cut -c1,1`" var2="`cat /tmp/jogadas.txt | tail -1 | cut -c2,2`" var3="`cat /tmp/jogadas.txt | tail -1 | cut -c3,3`" tot="`expr ${var1} + ${var2} + ${var3}`" if [ ${tot} -eq 3 ] || [ ${tot} -eq 6 ] then STATUS="${tot}" ; REF="789" fi fi unset var1 var2 var3 tot conf } #------------------------------------------------------------------------------ seq_147() { CONF1="`cat /tmp/jogadas.txt | head -1 | cut -c1,1`" CONF2="`cat /tmp/jogadas.txt | head -2 | tail -1 | cut -c1,1`" CONF3="`cat /tmp/jogadas.txt | tail -1 | cut -c1,1`" expr ${CONF1} + ${CONF2} + ${CONF3} 1>/dev/null 2>&1 ERRO="$?" if [ ${ERRO} -gt 0 ] then conf=1 else conf=0 fi if [ ${conf} -eq 0 ] then var1="`cat /tmp/jogadas.txt | head -1 | cut -c1,1`" var2="`cat /tmp/jogadas.txt | head -2 | tail -1 | cut -c1,1`" var3="`cat /tmp/jogadas.txt | tail -1 | cut -c1,1`" tot="`expr ${var1} + ${var2} + ${var3}`" if [ ${tot} -eq 3 ] || [ ${tot} -eq 6 ] then STATUS="${tot}" ; REF="147" fi fi unset var1 var2 var3 tot CONF1 CONF2 CONF3 conf } #------------------------------------------------------------------------------ seq_258() { CONF1="`cat /tmp/jogadas.txt | head -1 | cut -c2,2`" CONF2="`cat /tmp/jogadas.txt | head -2 | tail -1 | cut -c2,2`" CONF3="`cat /tmp/jogadas.txt | tail -1 | cut -c2,2`" expr ${CONF1} + ${CONF2} + ${CONF3} 1>/dev/null 2>&1 ERRO="$?" if [ ${ERRO} -gt 0 ] then conf=1 else conf=0 fi if [ ${conf} -eq 0 ] then var1="`cat /tmp/jogadas.txt | head -1 | cut -c2,2`" var2="`cat /tmp/jogadas.txt | head -2 | tail -1 | cut -c2,2`" var3="`cat /tmp/jogadas.txt | tail -1 | cut -c2,2`" tot="`expr ${var1} + ${var2} + ${var3}`" if [ ${tot} -eq 3 ] || [ ${tot} -eq 6 ] then STATUS="${tot}" ; REF="258" fi fi unset var1 var2 var3 tot CONF1 CONF2 CONF3 conf } #------------------------------------------------------------------------------ seq_369() { CONF1="`cat /tmp/jogadas.txt | head -1 | cut -c3,3`" CONF2="`cat /tmp/jogadas.txt | head -2 | tail -1 | cut -c3,3`" CONF3="`cat /tmp/jogadas.txt | tail -1 | cut -c3,3`" expr ${CONF1} + ${CONF2} + ${CONF3} 1>/dev/null 2>&1 ERRO="$?" if [ ${ERRO} -gt 0 ] then conf=1 else conf=0 fi if [ ${conf} -eq 0 ] then var1="`cat /tmp/jogadas.txt | head -1 | cut -c3,3`" var2="`cat /tmp/jogadas.txt | head -2 | tail -1 | cut -c3,3`" var3="`cat /tmp/jogadas.txt | tail -1 | cut -c3,3`" tot="`expr ${var1} + ${var2} + ${var3}`" if [ ${tot} -eq 3 ] || [ ${tot} -eq 6 ] then STATUS="${tot}" ; REF="369" fi fi unset var1 var2 var3 tot CONF1 CONF2 CONF3 conf } #------------------------------------------------------------------------------ seq_357() { CONF1="`cat /tmp/jogadas.txt | head -1 | cut -c3,3`" CONF2="`cat /tmp/jogadas.txt | head -2 | tail -1 | cut -c2,2`" CONF3="`cat /tmp/jogadas.txt | tail -1 | cut -c1,1`" expr ${CONF1} + ${CONF2} + ${CONF3} 1>/dev/null 2>&1 ERRO="$?" if [ ${ERRO} -gt 0 ] then conf=1 else conf=0 fi if [ ${conf} -eq 0 ] then var1="`cat /tmp/jogadas.txt | head -1 | cut -c3,3`" var2="`cat /tmp/jogadas.txt | head -2 | tail -1 | cut -c2,2`" var3="`cat /tmp/jogadas.txt | tail -1 | cut -c1,1`" tot="`expr ${var1} + ${var2} + ${var3}`" if [ ${tot} -eq 3 ] || [ ${tot} -eq 6 ] then STATUS="${tot}" ; REF="357" fi fi unset var1 var2 var3 tot CONF1 CONF2 CONF3 conf } #------------------------------------------------------------------------------ seq_159() { CONF1="`cat /tmp/jogadas.txt | head -1 | cut -c1,1`" CONF2="`cat /tmp/jogadas.txt | head -2 | tail -1 | cut -c2,2`" CONF3="`cat /tmp/jogadas.txt | tail -1 | cut -c3,3`" expr ${CONF1} + ${CONF2} + ${CONF3} 1>/dev/null 2>&1 ERRO="$?" if [ ${ERRO} -gt 0 ] then conf=1 else conf=0 fi if [ ${conf} -eq 0 ] then var1="`cat /tmp/jogadas.txt | head -1 | cut -c1,1`" var2="`cat /tmp/jogadas.txt | head -2 | tail -1 | cut -c2,2`" var3="`cat /tmp/jogadas.txt | tail -1 | cut -c3,3`" tot="`expr ${var1} + ${var2} + ${var3}`" if [ ${tot} -eq 3 ] || [ ${tot} -eq 6 ] then STATUS="${tot}" ; REF="159" fi fi unset var1 var2 var3 tot CONF1 CONF2 CONF3 conf } #------------------------------------------------------------------------------ check_play() { seq_123 seq_456 seq_789 seq_147 seq_258 seq_369 seq_357 seq_159 if [ -z $STATUS ] then echo not_yest > /dev/null else if [ ${STATUS} -eq 3 ] then Print_`echo ${REF}` tput cup 11 5 echo " " tput cup 15 5 echo " " tput cup 11 5 echo "`tput smso` Jogador : ${jogador1} Ganhou !! `tput rmso`" rm /tmp/jogadas.txt 2>/dev/null tput cup 17 0 exit fi if [ ${STATUS} -eq 6 ] then Print_`echo ${REF}` tput cup 11 5 echo " " tput cup 15 5 echo " " tput cup 11 5 echo "`tput smso` ${jogador2} Ganhou !! `tput rmso`" rm /tmp/jogadas.txt 2>/dev/null tput cup 17 0 exit fi fi } #------------------------------------------------------------------------------ aviso() { tput cup 15 5 echo -e "$player --> Posicao ja esta ocupada ! - Tecle <RETURN>...\c" read stop tput cup 15 5 echo " " play $player } #------------------------------------------------------------------------------ rot1() { if [ -z $j1 ] then j1=$player ; tput cup 2 5 ; echo "$valor" ; jogar 1 else aviso fi } rot2() { if [ -z $j2 ] then j2=$player ; tput cup 2 9 ; echo "$valor" ; jogar 2 else aviso fi } rot3() { if [ -z $j3 ] then j3=$player ; tput cup 2 13 ; echo "$valor" ; jogar 3 else aviso fi } rot4() { if [ -z $j4 ] then j4=$player ; tput cup 4 5 ; echo "$valor" ; jogar 4 else aviso fi } rot5() { if [ -z $j5 ] then j5=$player ; tput cup 4 9 ; echo "$valor" ; jogar 5 else aviso fi } rot6() { if [ -z $j6 ] then j6=$player ; tput cup 4 13 ; echo "$valor" ; jogar 6 else aviso fi } rot7() { if [ -z $j7 ] then j7=$player ; tput cup 6 5 ; echo "$valor" ; jogar 7 else aviso fi } rot8() { if [ -z $j8 ] then j8=$player ; tput cup 6 9 ; echo "$valor" ; jogar 8 else aviso fi } rot9() { if [ -z $j9 ] then j9=$player ; tput cup 6 13 ; echo "$valor" ; jogar 9 else aviso fi } #------------------------------------------------------------------------------ tput cup 15 5 echo -e "Nome do Jogador [ 0 ] --> \c" read jogador1 tput cup 17 5 echo -e "Nome do Jogador [ X ] --> \c" read jogador2 tput cup 15 5 echo " " tput cup 17 5 echo " " tput cup 2 30 echo "Jogador [ 0 ] --> $jogador1" tput cup 6 30 echo "Jogador [ X ] --> $jogador2" #------------------------------------------------------------------------------ play() { tput cup 15 5 echo " " tput cup 15 5 echo -e "$player : _\b\c" read opcao expr $opcao + 1 2>/dev/null 1>/dev/null ERRO="$?" if [ $ERRO -gt 0 ] then tput cup 15 5 echo -e "$player --> Digite um valor entre 1 e 9 - Tecle <RETURN> ...\c" read stop tput cup 15 5 echo " " play $player else if [ -z $opcao ] then tput cup 15 5 echo -e "$player --> Digite um valor entre 1 e 9 - Tecle <RETURN> ...\c" read stop tput cup 15 5 echo " " play $player else if [ $opcao -gt 9 ] || [ $opcao -lt 1 ] then tput cup 15 5 echo -e "$player --> Valor validos entre 1 e 9 ! - Tecle <RETURN> ...\c" read stop tput cup 15 5 echo " " play $player else rot`echo $opcao` fi fi fi } #------------------------------------------------------------------------------ var=0 player="$jogador2" while true do var="`expr $var + 1`" if [ "$player" = "$jogador1" ] then valor=X vx="2" player="$jogador2" play $player else valor=O vx="1" player="$jogador1" play $player fi if [ $var -eq 9 ] then tput cup 17 0 rm /tmp/jogadas.txt 2>/dev/null exit else tput cup 11 5 echo "Jogada : ${var}" fi done
Verificando disponibilidade de link (V.1)
Backup MySQL Incremental via RSYNC/FTP
Nenhum comentário foi encontrado.
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Tem como instalar o gerenciador AMD Adrenalin no Ubuntu 24.04? (16)
Arch Linux - Guia para Iniciantes (2)
Problemas ao instalar o PHP (11)
Tenho dois Link's ( IP VÁLIDOS ), estou tentando fazer o failover... (0)