shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Shimon - Simon/Genius no Bash


From: Maik Alberto
Subject: Shimon - Simon/Genius no Bash
Date: Thu, 21 Mar 2019 17:11:58 +0000

Aproveitando o gancho do tput pelo Julio, dias atrás tava brincando de tentar reproduzir aquele jogo  Genius ou Simon no terminal, ao tentar dar um pouco mais de vida ao script, me deparei com o tput, agora depois da aula enviada no último e-mail, vai dar pra aprender melhor, mas segue o código para compartilhamento: https://github.com/m41k/shimon. Source abaixo: 

#!/bin/bash
#--------------------------------------#
# SHIMON - SIMON - GENIUS(BR) FOR BASH #
# CREATED BY: address@hidden #
#--------------------------------------#

A=$(tput setaf 1)
B=$(tput setaf 2)
C=$(tput setaf 3)
D=$(tput setaf 4)
N=$(tput setaf 7)

setas(){
clear
cat <<EOM
                     $1.
                   .:;:.
                 .:;;;;;:.
                   ;;;;;
                   ;;;;;
                   ;;;;;
                   ;;;;;
                   ;:;;;
$2     .                            $3.
$2   .;;............    $3............;;.
$2 .;;;;::::::::::::    $3::::::::::::;;;;.
$2  ':;;::::::::::::    $3::::::::::::;;:'
$2    ':                            $3:'
$4
                   ;;;;;
                   ;;;;;
                   ;;;;;
                   ;;;;;
                   ;;;;;
                 ..;;;;;..
                  ':::::'
                    ':'

${N}
EOM
}

cima(){
setas "${A}" "${N}" "${N}" "${N}"
}
esquerda(){
setas "${N}" "${B}" "${N}" "${N}"
}
direita(){
setas "${N}" "${N}" "${C}" "${N}"
}
baixo(){
setas "${N}" "${N}" "${N}" "${D}"
}
nulo(){
setas "${N}" "${N}" "${N}" "${N}"
}
p=0;
i=1;
SETAS=( " " cima baixo direita esquerda )
TECLA=( $'\e[F' $'\e[A' $'\e[B' $'\e[C' $'\e[D' )

while [ 1 ]; do
 j=1;
 MEM[$i]=`cat /dev/urandom | tr -dc '1-4' | fold -w 1 | head -n 1`
 NUM=${MEM[$i]}
 MEM2[$i]=${TECLA[$NUM]}
for r in $(seq $i); do
 VERSEQ=${MEM[$r]};
 ${SETAS[$VERSEQ]}
 sleep 0.5
 nulo
 sleep 0.1
done
 sleep 0.5
 while [ $j -le $i ]; do
  nulo
  read  -n3 -s DIG[$j]
  if ! [[ ${DIG[$j]} = ${MEM2[$j]} ]]; then
  echo "Game Over! Score: $p"
  exit 1
  fi
  sleep 0.5
 j=$((j+1))
 done
i=$((i+1))
p=$((p+1))
done

reply via email to

[Prev in Thread] Current Thread [Next in Thread]