La verdad es muy sencillo, pero puede servir de algo.
Les dejo el code y les explico como funciona:
Código
#!/bin/bash ################# ##Proyecto MFG1## ################# #By GilgamesH Co# #######2010###### ################# py=0 px=0 mov(){ tput cup $1 $2 } key(){ read -t 1 -n 1 $1 } lim=("6 0" "6 1" "4 2" "6 2" "6 3") llen="5" while [ 1 = 1 ] do clear mov 4 2 echo -n "X" mov 6 0 echo -n "XXXX" mov $py $px echo -n "M" key err py=$(($py+1)) if [ $err = d ] then px=$(($px+1)) fi if [ $err = w ] then py=$(($py-3)) fi if [ $err = a ] then px=$(($px-1)) fi while [ $px -lt 0 ] do px=$(($px+1)) done while [ $px -ge $(($llen-1)) ] do px=$(($px-1)) done for i in `seq 0 $llen` do if [ "$py $px" = "${lim[$i]}" ] then py=$(($py-1)) fi done done
Solo voy a explicar unas cuantas cosas, primero que nada, las cordenadas:
Código:
lim=("6 0" "6 1" "4 2" "6 2" "6 3")
llen="5"
Aqui lo que hago es especificar donde va a estar el territorio por el que puede caminar nuestro personaje y guardarlo en un array (lim), aparte de que defino la variable llen, que es la cantidad de cordenadas que hay en lim, osea:
Citar
X
M
XXXXXX
M
XXXXXX
Digamos que la M es el personaje y las X los lugares por los que puede caminar, entonces eso define los lugares (se ve en el code).
Código:
for i in `seq 0 $llen`
do
if [ "$py $px" = "${lim[$i]}" ]
then
py=$(($py-1))
fi
done
Ahora bien, esto lo que hace es comparar las cordenadas en las que se encuentra el personaje con las que se especificaron en el array lim.
Y lo demas es bash puro y sencillo.
Solo quiero dar un enfasis en la funcion "key" (que hice, mas no descubri), que lo que hace es esperar un segundo para que se pulse una tecla, y guardar la tecla presionada en la variable que se le pase como parametro, (en este caso siempre le paso err como parametro).
Bueno eso es todo, si prueban el code, estos son los controles:
A - Mover hacia la izquierda
D - Mover hacia la Derecha
W - Saltar
Ire actualizando en cuanto las demás cosas esten listas.
Puede que tenga algun error o bug (como que puedes saltar en el aire), pero los ire corrigiendo a la vez que saque las versiones, y si notan algun error o bug, porfavor informenme para tratar de corregirlo.
Saludos.