shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Game em Shell


From: Alfredo Casanova
Subject: Re: [shell-script] Game em Shell
Date: Mon, 4 Aug 2014 18:46:41 -0300

http://www.linuxquestions.org/questions/programming-9/bash-case-with-arrow-keys-and-del-backspace-etc-523441/

Achei esse link com um bom script pra tratar ações em teclas, com certeza vai ajudar.



2014-08-04 17:25 GMT-03:00 Marcos Oliveira address@hidden [shell-script] <address@hidden>:
 

Ah além da dúvida postada segundos atrás, queria saber sobre essa condição ternária (ou binária rs) que vc pôs ae

((Col > 0 )) && let Col--

alterei pra

$Col > 0  && let Col--

e tb

if [ $Col > 0 ]; then let Col++; fi

mas deu erro, porque ?



Em 4 de agosto de 2014 17:19, Marcos Oliveira <address@hidden> escreveu:

Galera, em especial o Júlio Neves (foi quem enviou o código)

Eu analisei esse código aqui


clear; tput civis # cursor invisivel
Lin=$(($(tput lines) / 2)) # linha do meio
Col=$(($(tput cols) / 2))  # coluna do meio
tput cup $Lin $Col; echo X
while true 
do
    read -sn 1 Chave
    tput cup $Lin $((Col > 0 ? Col - 1 : 0)); echo -n " " # apaga
    case $Chave in
        [Hh])   ((Col > 0)) && let Col-- ;;             # Esquerda
        [Ll])   ((Col < $(tput cols))) && let Col++ ;;  # Direita
        [Jj])   ((Lin < $(tput lines))) && let Lin++ ;; # Desce
        [Kk])   ((Lin > 0)) && let Lin-- ;;             # Sobe
        [Qq])   tput cnorm; echo; exit
    esac
    tput ech 1 
    tput cup $Lin $Col
    echo -n X
done


e não consegui entender a linha 16 (tput ech 1) , o que ele faz, tb não encontrei no man do tput

tput ech 1

desculpa resgatar esse tópico é que tou fazendo umas coisas com tput e peguei esse código e vi isso


Em 13 de janeiro de 2014 21:37, Marcos Oliveira <address@hidden> escreveu:

caracaaa, é bom quando vc é entendido, até quando não se explica muito bem, valeu Júlio, era exatamente isso que eu precisava, testei aqui e funcionou legal!


Em 13 de janeiro de 2014 20:54, Julio C. Neves <address@hidden> escreveu:

 

Não está testado, mas deve andar com as teclas do vi H, J, K e L. Para sair Q. Pode ser com maiúsculas ou minúsculas.

clear; tput civis # cursor invisivel
Lin=$(($(tput lines) / 2)) # linha do meio
Col=$(($(tput cols) / 2))  # coluna do meio
tput cup $Lin $Col; echo X
while true 
do
    read -sn 1 Chave
    tput cup $Lin $((Col > 0 ? Col - 1 : 0)); echo -n " " # apaga
    case $Chave in
        [Hh])   ((Col > 0)) && let Col-- ;;             # Esquerda
        [Ll])   ((Col < $(tput cols))) && let Col++ ;;  # Direita
        [Jj])   ((Lin < $(tput lines))) && let Lin++ ;; # Desce
        [Kk])   ((Lin > 0)) && let Lin-- ;;             # Sobe
        [Qq])   tput cnorm; echo; exit
    esac
    tput ech 1 
    tput cup $Lin $Col
    echo -n X
done


Abcs,
Julio
@juliobash

Próximos cursos de Shell

Cidade

Local

Período

São Paulo

4Linux

03-07/02

Curitiba

SoftSell

17-21/02

Rio de Janeiro

EDX

10-14/03

Dou treinamento de shell em qualquer cidade.
Para detalhes, entre em contato por email ou
echo 436233889341364416673541503686485725801923229706P | dc 



Em 13 de janeiro de 2014 19:30, <address@hidden> escreveu:

 

Galera fiz isso aqui, que é só um teste para o entendimento do movimento de um "boneco" em Shell, mas nada mais é o curso, e não um "boneco" em si. Se teclar 'd' vai pra direita; 's' pra esquerda; ... ; 'q' pra sair...n no entanto, está longe do que eu espero obter. Duas dúvidas: como manter o moviemnto contínuo a cada 'teclada' e com usar as SETAS do teclado em vez de letras. Se alguém tiver uma dica, ou um script, link... sei lá, só pra entender (e aprender) a fazer um game( bem básico) em shell, por enquanto, só de movimentar algo na tela, com o tempo, vou pesquisando e caso não encontro, verifico outras coisa. Desde já, agradeço!

#!/bin/bash
reset
tempo=2
while true ; do         
                read -s -n 1 -t $tempo chave
                if [ "$chave" == "d" ]; then
                            tput cup 3 4
                fi
               
                if [ "$chave" == "s" ]; then
                            tput cup 3 1
                fi
               
                if [ "$chave" == "e" ]; then
                            tput cup 2 3
                fi
               
                if [ "$chave" == "x" ]; then
                            tput cup 4 3
                fi
               
                if [ "$chave" == "q" ]; then
                                echo
                            break
                fi
done









--
[]'s
Alfredo Casanova
Linux User #228230
msn: address@hidden
tel: +55 61 9655 9619


reply via email to

[Prev in Thread] Current Thread [Next in Thread]