Motor Físico Beta 2

Iniciado por BlacKGilgamesH, 18 Agosto 2010, 00:14 AM

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

BlacKGilgamesH

Hola, pues he seguido con mi proyecto del motor físico en bash, así que les dejo la siguiente actualización, (aunque no la ultima), en esta versión ya se corrigieron algunos bugs y se implementaron cosas.

Bugs reparados:

  • Saltos en el aire

Implementaciones:

  • Objetos (para empujar)

Por ahora eso es todo, todavía tiene muchos bugs, pero va mejorando poco a poco, sin más les dejo el codigo:

Código (bash) [Seleccionar]
#!/bin/bash
#################
##Proyecto MFG1##
#################
#By GilgamesH Co#
#######2010######
#################
py=2
px=2
mov(){
tput cup $1 $2
}
key(){
read -t 0.2 -n 1 $1
}
ox=4
oy=8
lim=( "4 2" "4 3" "4 4" "4 5" "4 6"  "4 7" "7 11" "7 12" "7 13" "9 0" "9 1" "9 2" "9 3" "9 4" "9 5" "9 6" "9 7" "9 8" "9 9" "9 10" "9 11" "9 12" "9 13" "9 14" "11 5" "11 6" "11 7" "11 8" "11 9" "11 10" "11 11" "11 12" "11 13" "11 14" "11 15" "11 16" "11 17" "13 0" "13 1" "13 2" "13 3" "15 0" "15 1" "15 2" "15 3" "18 0" "18 1" "18 2" "18 3" "18 4" "18 5" "18 6" "18 7" "18 8" "18 9" "18 10" "18 11" "18 12" "18 13" "18 14" "18 15" "18 17" "18 18")
llen=19
llen1="${#lim[@]}"
salto=3
while [ 1 = 1 ]
do
clear
echo
echo
echo
echo
echo "  XXXXXX"
echo
echo         
echo "           XXX"
echo
echo "XXXXXXXXXXXXXXX"
echo
echo "     XXXXXXXXXXXXX"
echo
echo "XXXX"
echo
echo "XXXX"
echo
echo
echo "XXXXXXXXXXXXXXXXXX"
mov $py $px
echo -n "M"
mov $oy $ox
echo -n "N"
mov 0 0
key err
py=$(($py+1))
oy=$((oy+1))
if [ $err = d ]
then
px=$(($px+1))
fi
if [ $err = w ]
then
if [ $salto = 0 ]
then
py=$(($py-3))
salto=99999
fi
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 $llen1`
do
if [ "$py $px" = "${lim[$i]}" ]
then
py=$(($py-1))
salto=0
fi
done
for i in `seq 0 $llen1`
do
if [ "$oy $ox" = "${lim[$i]}" ]
then
oy=$(($oy-1))
fi
done
if [ $salto != 0 ]
then
salto=$((salto-1))
fi
if [ $ox -lt 0 ]
then
ox=0
fi
if [ $ox = $llen ]
then
ox=$((ox-1))
fi
if [ "$px $py" = "$ox $oy" ]
then
if [ $lx -lt $ox ]
then
ox=$((ox+1))
if [ $px = $ox ]
then
px=$((px+1))
fi
fi
if [ $lx -gt $ox ]
then
ox=$((ox-1))
if [ $px = $ox ]
then
px=$((px-1))
fi
fi
if [ $ly -lt $oy ]
then
py=$((py-1))
fi
fi
lx=$px
ly=$py
done


El funcionamiento es el mismo que el anterior, solo se le agrego una comparación para ver si el personaje esta en el suelo o no, para evitar los saltos en el aire; y también se le aplico la misma física (si se le puede decir así) a la caja, (la "N"), asi que la pueden empujar por los bordes, pero no fuera de los limites (o si ¬¬|| XD).

Les pido que si ven que tiene algún bug, por favor me lo reporten para corregirlo.

Saludos

leogtz

¿Podrías poner un script para ver la forma de utilizarlo?
Código (perl) [Seleccionar]

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

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

BlacKGilgamesH

Pruebalo asi, alli ya hay un ejemplo, pero si quieres algo distinto dime y lo hago.

Saludos.