Bash RPG
Publicado por Xerxes (última atualização em 09/04/2017)
[ Hits: 4.362 ]
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
Gerenciamento de usários do Squid usando Dialog
Ativa e dasativa o XGL para o KDE
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Atualizando o Fedora 42 para 43
Como saber se o seu e-mail já teve a senha vazada?
Como descobrir se a sua senha já foi vazada na internet?
Warcraft II Remastered no Linux? (6)
O programa assinador digital (5)









