Bash RPG

Publicado por Xerxes (última atualização em 09/04/2017)

[ Hits: 4.516 ]

Homepage: -

Download bash_rpg_v1b.sh




Jogo de RPG muito simples.

  



Esconder código-fonte

#!/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

Scripts recomendados

Conversão em massa de arquivos .wav para .mp3

Multiconversor (Octal para binário, decimal para hexadecimal, etc)

Cracking protocolo WPS aprimorado

sysaudit

Tabela do Campeonato Brasileiro Direto no Terminal


  

Comentários
[1] Comentário enviado por Lunovox em 09/06/2017 - 11:12h

Como seu script está sobre licença GPL, eu resolvi melhorá-lo para deixá-lo mais divertido.

Download: https://cloud.disroot.org/s/uvZOTNxRnlWffR2

Adicionei:
* Menu de Load para carregar salves (e poder continuar o jogo depois).
* Texto Capitular
* E som de Combate e de UpLevel baseado nos áudio OGG que já vem no meu linux mint.

Ainda pretendo adicionar:
* Menu de configuração. (se quer som ou não, e qual o nível de dificuldade do jogo)
* Nomes para alguns tipos de monstros.
* Barra de HP

Espero que eu não tenha sido muito atrevido em modificar seu código.

[2] Comentário enviado por xerxeslins em 09/06/2017 - 13:35h


[1] Comentário enviado por Lunovox em 09/06/2017 - 11:12h

Como seu script está sobre licença GPL, eu resolvi melhorá-lo para deixá-lo mais divertido.

Download: https://cloud.disroot.org/s/uvZOTNxRnlWffR2

Adicionei:
* Menu de Load para carregar salves (e poder continuar o jogo depois).
* Texto Capitular
* E som de Combate e de UpLevel baseado nos áudio OGG que já vem no meu linux mint.

Ainda pretendo adicionar:
* Menu de configuração. (se quer som ou não, e qual o nível de dificuldade do jogo)
* Nomes para alguns tipos de monstros.
* Barra de HP

Espero que eu não tenha sido muito atrevido em modificar seu código.


Que massa! Vou testar assim que possível e dizer o que achei. :D

[3] Comentário enviado por xerxeslins em 09/06/2017 - 15:18h

Eu diria que é um belo "fork" rsrs!

Gostei dos textos com figlet. Dá um tcham! Principalmente no level up. A opção de save é muito legal também. A opção de dar comandos sem Enter agiliza muito. Não gostei muuuito do lance do HP em %, mas isso é detalhe e gosto pessoal. Efeitos sonoros, pelo menos para mim, nesse script, é dispensável.

Se eu fosse fazer uma versão nova (deu até vontade hahaha), eu colocaria textos capitulares (sem figlet mesmo) como os seus, opção de save (como você fez), comandos sem enter (igual a você) e talvez mais algumas modificações como tipos diferentes de monstros... não sei. Mas não colocaria sons nem HP em %.

Foi muito massa suas modificações. Curti!

Abraço!

[4] Comentário enviado por danielns em 21/06/2019 - 05:38h


[1] Comentário enviado por Lunovox em 09/06/2017 - 11:12h

Como seu script está sobre licença GPL, eu resolvi melhorá-lo para deixá-lo mais divertido.

Download: https://cloud.disroot.org/s/uvZOTNxRnlWffR2

Adicionei:
* Menu de Load para carregar salves (e poder continuar o jogo depois).
* Texto Capitular
* E som de Combate e de UpLevel baseado nos áudio OGG que já vem no meu linux mint.

Ainda pretendo adicionar:
* Menu de configuração. (se quer som ou não, e qual o nível de dificuldade do jogo)
* Nomes para alguns tipos de monstros.
* Barra de HP

Espero que eu não tenha sido muito atrevido em modificar seu código.


Ainda tem essa versão disponível?
O link está fora.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts