Ir ao conteúdo
  • Cadastre-se

Jogo em Shellscript


_Luks

Posts recomendados

aí galera!

eu andei tentando fazer um script de jogo em bash...

consegui fazer uma engine de movimento:



#!/bin/sh
# x = linha
#y = coluna
clear
echo "Desenha Script"
echo "Comandos: W = Up; S = Down; A = Left; D = Right; Q = Sair "
echo "Press Enter for Start"
read
clear
x=5
y=5

function right()
{
     clear
     y=$(($y + 1))
     tput cup $x $y
     echo "#"
     mov
}

function  down()
{
      clear    
     x=$(($x + 1))
     tput cup $x $y
     echo "#"
     mov
}  
function up()
{
         clear  
     x=$(($x - 1))
     tput cup $x $y
     echo "#"
     mov
    }
   
function left()
{
       clear    
     y=$(($y - 1))
     tput cup $x $y
     echo "#"    
     mov
}


function mov()
{
read mov
case $mov in
d) right;;
w) up;;
s) down;;
a) left;;
q) exit;;
*) clear; echo "comando invalido"; sleep 1; mov;;
esac
}

mov

ajudem ai!

o que posso fazer ?

um cenario em ASCII art?

Link para o comentário
Compartilhar em outros sites

  • 3 semanas depois...

update

o nosso companheiro aalexandree deu umas melhoradas e algumas implementações ao meu código ..

quem tiver mais ideias poste aqui :D


#!/bin/bash

clear                            # limpa a Tela
stty -echo                        # nada digitado aparecerá na tela     
telalin=`tput lines`                    # quantidade de linhas da tela
telalin=`expr $telalin - 2`                # excluindo o cabecálio e rodapé    
telacol=`tput cols`                    # quantidade de colunas da tela
colunas=`expr $telacol / 3`                # um terço de colunas , para dividir a tela em 3
limite=1                        # variável limite no loop de criação das 2 colunas

function tiro
{
sobe=3
until [ $sobe = $telalin ]
do
echo -ne '\033['`expr $telalin - $sobe`';'`expr $coluna + 2`'H'
echo -n "|"
echo -ne '\033['`expr $telalin - $sobe + 1`';'`expr $coluna + 2`'H'
echo -n " "
sleep 0.1
sobe=`expr $sobe + 1`
done
}
###########################################################################################################################    
########################### Criação da tela pincipal do jogo , colunas , pontos , vidas etc ###############################
###########################################################################################################################




until [ $limite = $telalin ]                 # até que $limite seja igual a quantidade de linhas da tela:
do                            # início do loop            
echo -e '\033[41m'                     # fundo vermelho
tput cup $limite $colunas                # posiciona o ponteiro na linha $limite e no primeiro terço da tela
echo  "    "                        # cria a primeira coluna , já que o fundo é vermelho
tput cup $limite `expr $colunas + $colunas`        # mesma linha , mas pula para o 2º terço da tela
echo  "    "                        # cria a segunda coluna
limite=`expr $limite + 1`                # adiciona 1 ao limite para que possa passar para proxima linha
echo -e '\033[m'                    # volta o fundo padrão
done                             # fim do loop

###########################################################################################################################
############################################# Criação e posicionamento da nave ############################################
###########################################################################################################################






tput cup `expr $telalin - 2` `expr $colunas + $colunas / 2`    # posiciona o ponteiro 2 linhas acima da última
echo -n ' 0'                            # parte superior da nave        
tput cup `expr $telalin - 1` `expr $colunas + $colunas / 2`    # posiciona o ponteiro 1 linha abaixo (1 acima da ultima)
echo -n "| |"                            # parte inferior da nave

coluna=`expr $colunas + $colunas / 2`                # variavel limite de movimentação

while true                            # loop perpétuo
do                                # inicio do loop
read -n 1 movimento                        # lendo o movimento teclado pelo jogador
case $movimento in                        # caso a tecla digitada for :
C)                                # 'C' que representa a seta direita:
            
    if [ $coluna -le 78  ]                    # condicional que delimita o final a direita entre barras
    then                            
    tput cup `expr $telalin - 2` $coluna       # posiciona o ponteiro em relação a variável $coluna para realizar movimento
    echo -n '  0'                   # escreve a parte superior da nave
    tput cup `expr $telalin - 1` $coluna      
    echo -n ' | |'
    coluna=`expr $coluna + 1`                # adiciona 1 ao limite
    else
    sleep 0
    fi
    
;;
D)                        # idem ao movimento C
    if [ $coluna -ge 46 ]            
    then
    coluna=`expr $coluna - 1`
    tput cup `expr $telalin - 2` $coluna
    echo -n ' 0 '
    tput cup `expr $telalin - 1` $coluna
    echo -n '| | '
    echo -ne '\033[1D'
    else
    sleep 0
    fi
;;
x)
    tiro&
    
esac
done

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!