Bash RPG
Publicado por Xerxes (última atualização em 09/04/2017)
[ Hits: 4.407 ]
Homepage: -
Jogo de RPG muito simples.
#!/bin/bash
#
#
# Simples RPG em bash v1.0
#
# Criado em alguma horas no dia 27/2/2017
#
# por xerxeslins (xerxeslins@gmail.com)
# www.vivaolinux.com.br/~xerxeslins
#
# GPL
#
###########################################
NIVEL=1
EXP=0
NEXT=10
DUNGEON=1
POTION=1
KILL=0
COMBATE=0
ESCADA=0
SAUDE_ID=0
SAUDE=("saudável" "com arranhões" "com cortes" "com cortes profundos e ematomas" "mal consegue andar")
function _comandos () {
echo "Comandos:"
echo "(a)tacar (b)eber (c)omandos (d)escer (e)xplorar (f)ugir (p)ersonagem (s)air"
_menu
}
function _personagem () {
echo "$NOME [${SAUDE[SAUDE_ID]}] nível $NIVEL, experiência $EXP/$NEXT, dungeon $DUNGEON, poções $POTION, matou $KILL."
_menu
}
function _sair () {
echo "$NOME se perdeu na dungeon e nunca mais retornou..."
exit 0
}
function _dado {
DT=$(( ( RANDOM % 6) + 1 ))
}
function _testa_morte_personagem () {
if [ $SAUDE_ID -gt 4 ]
then
echo "$NOME morreu!!!
R.I.P.
Nível: $NIVEL
Dungeon: $DUNGEON
Poções: $POTION
Matou: $KILL"
exit 0
fi
}
function _monstro_ataca () {
_dado
if [ $DT -lt 5 ]
then
echo "$NOME se desviou do ataque do monstro!"
else
echo "$NOME sofreu o ataque do monstro!"
SAUDE_ID=$(( $SAUDE_ID + 1 ))
_testa_morte_personagem
fi
_menu
}
function _testa_evolucao () {
if [ $EXP -ge $NEXT ]
then
NIVEL=$(( $NIVEL + 1 ))
NEXT=$(( $NEXT + (( 1 + $NIVEL ) * 5) ))
echo "$NOME se sente mais forte!"
fi
}
function _personagem_acerta {
echo "$NOME atingiu o monstro!"
_dado
DIFICULDADE=$(( 3 + $NIVEL - $DUNGEON ))
if [ $DT -le $DIFICULDADE ] || [ $DT -eq 1 ]
then
echo "$NOME matou o monstro!"
COMBATE=0
KILL=$(( $KILL + 1 ))
EXP=$(( $EXP + ( RANDOM % 4) + $DUNGEON ))
_testa_evolucao
else
_monstro_ataca
fi
}
function _atacar () {
if [ $COMBATE -eq 0 ]
then
echo "$NOME desfere um golpe com a espada, cortando o ar!"
else
_dado
if [ $DT -lt 5 ]
then
_personagem_acerta
else
echo "$NOME errou o ataque!"
_monstro_ataca
fi
fi
_menu
}
function _beber () {
if [ $POTION -gt 0 ]
then
echo "$NOME bebe uma poção e se sente muito bem!"
POTION=$(( $POTION - 1 ))
SAUDE_ID=0
else
echo "$NOME procura uma poção na mochila, mas não encontra."
fi
_menu
}
function _explorar () {
if [ $COMBATE -eq 0 ]
then
_dado
if [ $DT -gt 4 ]
then
echo "$NOME encontrou um monstro!"
COMBATE=1
elif [ $DT -lt 2 ]
then
if [ $ESCADA -eq 0 ]
then
echo "$NOME encontrou escadas que levam para o próximo nível da dungeon."
ESCADA=1
else
echo "$NOME encontrou uma poção e guardou na mochila."
POTION=$(( $POTION + 1 ))
fi
else
echo "$NOME explora o interior da dungeon..."
fi
else
echo "$NOME está no meio do combate e não pode explorar agora!"
fi
_menu
}
function _descer () {
if [ $ESCADA -eq 1 ]
then
echo "$NOME desceu as escadas."
DUNGEON=$(( $DUNGEON + 1 ))
ESCADA=0
else
echo "$NOME olha em volta, mas não vê por onde descer."
fi
_menu
}
function _fugir () {
if [ $COMBATE -eq 1 ]
then
_dado
if [ $DT -lt 3 ]
then
echo "$NOME fugiu do monstro como uma garotinha assustada!"
COMBATE=0
else
echo "$NOME procurou uma oportunidade para fugir, mas não encontrou!"
_monstro_ataca
fi
else
echo "$NOME não tem do que fugir no momento."
fi
_menu
}
function _menu () {
read -p "> " OPT
#Se quiser idle de 5 segundos descomente o trecho abaixo e comente o read acima
#read -t 5 -p "> " OPT
#if [ -z "$OPT" ]
# then
# if [ $COMBATE -eq 1 ]
# then
# OPT="a"
# else
# OPT="e"
# fi
# echo ""
#fi
case $OPT in
c|comandos) _comandos;;
p|personagem) _personagem;;
s|sair) _sair;;
a|ataque|atacar) _atacar;;
b|beber) _beber;;
e|explorar) _explorar;;
d|descer) _descer;;
f|fugir) _fugir;;
*) echo "$NOME não entendeu o seu comando. (digite c para ver os comandos)"; _menu;;
esac
}
function _start () {
echo "Qual o nome do seu personagem?"
read -p "> " NOME
echo "(digite c para ver os comandos)
$NOME entrou na dungeon para eliminar os monstros."
_menu
}
_start
sbinstall.sh - Descompacta, compila e instala SlackBuild
Shell Script para consulta a Wikipedia utilizando linhas de comando
[Firefox] Instalação de Flash Player 10
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Instalando partes faltantes do Plasma 6
Adicionar botão "mostrar área de trabalho" no Zorin OS
Como montar um servidor de backup no linux
Estou tentando ser legalista, mas tá complicado! (9)
espelhar monitores nao funciona (2)
SQLITE não quer funcionar no LINUX LMDE6 64 com Lazaruz 4.2 64bit (n... (1)









