Bash RPG
Publicado por Xerxes (última atualização em 09/04/2017)
[ Hits: 4.205 ]
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
Script para mostrar IP, usando zenity
Script Iniciador do PostgreSQL
Renomeador Automático de Arquivos de Mídia
Aprenda a Gerenciar Permissões de Arquivos no Linux
Como transformar um áudio em vídeo com efeito de forma de onda (wave form)
Como aprovar Pull Requests em seu repositório Github via linha de comando
Aplicativo simples para gravar tela
Quebra de linha na data e hora no Linux Mint
Como fazer boot em img do debian 12.img da web? (11)
ME GERAL! ADD...! BORA CONVERSAR (0)
Manjaro 25.0 no permite usar crontab (1)