Bash RPG
Publicado por Xerxes (última atualização em 09/04/2017)
[ Hits: 4.191 ]
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
BusqueM3P! - Download de músicas pelo shell
Envia e-mail notificando configurações de uma máquina
Logs do daemontools - tradução de timestamp
Script simples para ripar CDs de áudio em mp3 com uso do CDDB para nomear as faixas.
Automatizando digitação de códigos 2FA no browser
Resolver problemas de Internet
Como compartilhar a tela do Ubuntu com uma Smart TV (LG, Samsung, etc.)
Como converter imagens PNG/JPEG para SVG em linha de comando
Fez porcaria no teu repositório Git? Aprenda a restaurar uma versão anterior do seu código!
Restaurando Fontes de Download do Hydra no Linux
Atualizando "na marra" o YT-DLP quando começa a dar erro de downloads
Como instalar o WPS com interface e corretor ortográfico em PT-BR no Arch Linux
Java é uma linguagem de brinquedo? (1)
Linux não desliga a tela da TV nunca (4)
Mudar ícone do favorito "encerrar sessão" do Debian 12.10, c... (2)