elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
14 Febrero 2012, 10:21  

+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting (Moderadores: Novlucker, Leo Gutiérrez.)
| | |-+  [Bash] Motor Físico (Sencillo) [BETA 1]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Bash] Motor Físico (Sencillo) [BETA 1]  (Leído 739 veces)
BlacKGilgamesH

Desconectado Desconectado

Mensajes: 28


¿¿Por qué la gente aprecia más un post estupido??


Ver Perfil WWW
[Bash] Motor Físico (Sencillo) [BETA 1]
« en: 31 Julio 2010, 03:03 »

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
#!/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

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.


« Última modificación: 31 Julio 2010, 03:13 por BlacKGilgamesH » En línea

Leo Gutiérrez.
. . .. ... ..... ........ ............. .....................
Moderador
***
Desconectado Desconectado

Mensajes: 2.940


/^$/


Ver Perfil WWW
Re: [Bash] Motor Físico (Sencillo) [BETA 1]
« Respuesta #1 en: 31 Julio 2010, 03:05 »

Mejora la indentación de tu código, es una buena costumbre.


En línea

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

leorocko13@hotmail.com
https://github.com/leogtzr/
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines