[Bash] Motor Físico (Sencillo) [BETA 1]

Iniciado por BlacKGilgamesH, 31 Julio 2010, 03:03 AM

0 Miembros y 1 Visitante están viendo este tema.

BlacKGilgamesH

Bueno, estos dias e estado trabajando en bash para poder hacer un juego más o menos desente, asi que me puse a hacer el "motor" (por asi llamarlo) fisico  :o , osea, que el personaje, valla cayendo y que alla distintos niveles de suelo (osea plataformas, etc), y objetos moviles (que no he incorporado en esta version pero ya trabajo en ellos), que el personaje salte y enemigos (lo mismo que los objetos).

La verdad es muy sencillo, pero puede servir de algo.

Les dejo el code y les explico como funciona:
Código (bash) [Seleccionar]
#!/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:

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:

CitarX
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).

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.

leogtz

Mejora la indentación de tu código, es una buena costumbre.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com