SamL
(usa XUbuntu)
Enviado em 04/02/2022 - 16:04h
Satan_666 escreveu:
Boa tarde, já fiz todas as variaveis que definem a posição do personagem e funcionou,
mas com o personagem pequeno, assim:
Personagem=(*-*)
mas eu quero que funcione com o personagem tipo assim:
personagem="
[\_/]
(*-*)
/ \
------
"
obs: não esse que está aí acima, isso foi só um exemplo
mas quando eu vou imprimir o personagem na tela ele não se move e só se move quando eu defino o personagem
bem pequeno
meu codigo aqui
personagem="
[\_/]
(*-*)
/ \
------
"
posicion_y=10
posicion_x=50
velocity=5
while ((1)) ; do
read -s -n1 _tecla
case "$_tecla" in
d|D)
clear
soma=$(echo $(($posicion_y + $velocity)))
velocity=$soma
printf "\e[${posicion_x};${soma}f %s" "$personagem"
;;
esac
done
ele só consegue exibir uma unica linha do personagem
Tem de rever essa "soma" ai, porque fazer posicao_y + velocity na verdade você está movendo no eixo Y, porém, essa soma NÃO é pra ser a nova velocidade.
posicao_y + velocity é pra ser colocado como a nova posicao_y, e velocity fica como está sem mudar.
Exemplo:
Quero mover o personagem pra baixo:
1-coloco velocity como igual a 5
2-então, no loop, faço posicao_y = posicao_y + velocity
Se quero parar de mover o personagem, apenas faço: velocity = 0;
Então, se quero mover apenas o personagem no eixo X ou Y? como fica?
Será preciso uma velocity para X e outra para Y.
Assim, basta criar uma variável para cada um dos eixos.
E se quiser mover pra direita sem mover em Y?
COm a nova variável de velocidade x, faça velocity_x = 5
Se quiser parara, faça: velocity_x = 0
Se quiser ir pra esquerda, faça: velocity_x = -5
E então, pra de fato mover, tem de somar posicao_x = posicao_x + velocity_x, todo tempo dentro do loop.