Bash RPG
Publicado por Xerxes (última atualização em 09/04/2017)
[ Hits: 4.133 ]
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
Ajuda a usar o comando ln [SCRIPT]
Configuração de rede wireless (WPA)
Instalar e Configurar o Slackware Linux em 2025
Como configurar os repositórios do apt no Debian 12 em 2025
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Configurando o Conky para iniciar corretamente no sistema
3 configurações básicas que podem melhorar muito a sua edição pelo editor nano
Como colorir os logs do terminal com ccze
Instalação Microsoft Edge no Linux Mint 22
Como configurar posicionamento e movimento de janelas no Lubuntu (Openbox) com atalhos de teclado
Jogando com Proton no LInux (0)
Ingress NGINX Controller CVSS base score of 9.8 (4)
Impossível corrigir problemas, você manteve (hold) pacotes quebrados. (2)