Bash RPG
Publicado por Xerxes (última atualização em 09/04/2017)
[ Hits: 3.967 ]
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
EvalDate v1.0 - Script para Executar Programas em Datas Específicas.
Tags de Cores e formatação no Terminal
Conexão e Desconexão ADSL automáticas no Slackware
Script de cópia (destino - origem) otimizado
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
Criando uma VPC na AWS via CLI
Multifuncional HP imprime mas não digitaliza
Dica básica para escrever um Artigo.
Como Exibir Imagens Aleatórias no Neofetch para Personalizar seu Terminal
Melhorando a precisão de valores flutuantes em python[AJUDA] (11)
GLPI - Configuração de destinatário com conta Microsoft Exchange (0)
Vou voltar moderar conteúdos de Dicas e Artigos (3)
OpenVPN no MACBOOK conecta mas não pinga pastas de rede compartilhada ... (1)