Consulta Pilas

Si tienes alguna duda sobre cómo usar pilas, o tienes problemas para instalar o hacer algo en pilas comentalo aquí.

Consulta Pilas

Notapor danielpuch » Lun Ene 24, 2011 2:27 am

No se si aca es el mejor lugar para hacer esta consulta, si no muevan tranquilos el post a otra parte del foro.

el tema es que estuve intentando cargar una imagen en pilas y me anda de los mas bien...
:-)

je je je... bueno, no se piensen que estoy loco, el problema me surge porque quiero poner el codigo en un archivo de python (*.py) y correrlo desde la terminal y no se porque no me anda.
No se en que estoy fallando. Aca va la muestra...

Imagen

Aca va el codigo:

Código: Seleccionar todo
import pilas

pilas.iniciar()

imagen = pilas.imagenes.cargar('images/Fondo_Test.png')
actor = pilas.actores.Actor(imagen)


Cuando corro el archivo no hace nada, me dice que carga una libreria
(Loading chipmunk for Linux (32bit) [/usr/local/lib/python2.6/dist-packages/pymunk-1.0.0-py2.6.egg/pymunk/libchipmunk.so])
y ahi se queda...


Tengo otra consulta sobre cual es la mejor forma de cargar actores o imagenes pero se las hago despues para no enloquecerlos, je je je....
Última edición por danielpuch el Lun Ene 24, 2011 2:36 am, editado 1 vez en total
Avatar de Usuario
danielpuch
 
Mensajes: 71
Registrado: Mar Ene 11, 2011 10:40 pm
Ubicación: Elizabeth, New Jersey

Re: Consulta Pilas

Notapor pchack » Lun Ene 24, 2011 2:35 am

Saludos Danielpuch,
bueno la solucion es escribir la linea:

Código: Seleccionar todo
pilas.ejecutar()

al final del archivo .py

esto se debe a que pilas funciona de manera algo distinta cuando lo haces en modo interactivo,
y cuando lo haces directamente en un archivo.

Saludos :) .

Pablo Garrido
pchack
 
Mensajes: 106
Registrado: Lun Dic 13, 2010 12:23 am

Re: Consulta Pilas

Notapor danielpuch » Lun Ene 24, 2011 2:39 am

Muchisimas gracias Pablo! je je je...

tenia idea que me faltaba algo al final pero no lo encontraba.
es que es mucha informacion nueva y a veces como que la cabeza no da para tanto, je je je...


Ahora si anda de maravilla.
:-)
Avatar de Usuario
danielpuch
 
Mensajes: 71
Registrado: Mar Ene 11, 2011 10:40 pm
Ubicación: Elizabeth, New Jersey

Re: Consulta Pilas - NUEVA CONSULTA

Notapor danielpuch » Lun Ene 24, 2011 3:35 am

Ok, creo que le estoy agarrando la vuelta al asunto. Cargue un actor nuevo, le puse actor2
y lo hice arrastrable, eso me anduvo bien. Cuando quise ponerle controles como que no responde.
No se si entendi bien, asumi que eso de los controles era para el keyboard o es para joystick?
No se si estoy haciendo mal o si esta pensado para otra cosa, paso la imagen del fondo con
un personaje (un dibujo cualquiera que baje de internet y lo hice trasparente en gimp, Totoro es el personaje de Miyazaki un animador japones muy bueno.)
y el personaje efectivamente lo puedo mover con el mouse, pero no con el keyboard.

Imagen

y el codigo que puse fue este, gracias x adelantado, je je je.
:-)

Código: Seleccionar todo
import pilas

pilas.iniciar()

imagen = pilas.imagenes.cargar('images/Fondo_Test.png')
imagen2 = pilas.imagenes.cargar('images/totoro.png')
actor = pilas.actores.Actor(imagen)
actor2 = pilas.actores.Actor(imagen2)
actor2.aprender(pilas.habilidades.Arrastrable)

if pilas.mundo.control.izquierda:
    imagen2.x -= 1
elif pilas.mundo.control.derecha:
    imagen2.x += 1

pilas.ejecutar()
Avatar de Usuario
danielpuch
 
Mensajes: 71
Registrado: Mar Ene 11, 2011 10:40 pm
Ubicación: Elizabeth, New Jersey

Re: Consulta Pilas

Notapor pchack » Lun Ene 24, 2011 4:37 am

Hola Daniel,
danielpuch escribió:No se si entendi bien, asumi que eso de los controles era para el keyboard o es para joystick?

es para el keyboard, tu codigo esta bien pero debes consultar a los eventos que ocurren a cada momento

esto en pilas se escribe asi:
Código: Seleccionar todo
def presionamos_tecla(eventos):
    if pilas.mundo.control.izquierda:
        imagen2.x -= 1
    elif pilas.mundo.control.derecha:
        imagen2.x += 1
   
pilas.eventos.actualizar.connect(presionamos_tecla)


ahora podras mover a totoro, Saludos
Pablo Garrido
pchack
 
Mensajes: 106
Registrado: Lun Dic 13, 2010 12:23 am

Re: Consulta Pilas

Notapor danielpuch » Lun Ene 24, 2011 5:28 am

Me tira este error...

pilas.eventos.actualizar.send("bucle")
File "/usr/local/lib/python2.6/dist-packages/pilas-0.38-py2.6.egg/pilas/dispatch/dispatcher.py", line 154, in send
response = receiver(DictObj(named))
File "test_cuento1.py", line 13, in presionamos_tecla
imagen2.x -= 1
AttributeError: 'Image' object has no attribute 'x'


este es el codigo que corregi:

Código: Seleccionar todo
import pilas

pilas.iniciar()

imagen = pilas.imagenes.cargar('images/Fondo_Test.png')
imagen2 = pilas.imagenes.cargar('images/totoro.png')
actor = pilas.actores.Actor(imagen)
actor2 = pilas.actores.Actor(imagen2)
actor2.aprender(pilas.habilidades.Arrastrable)

def presionamos_tecla(eventos):
    if pilas.mundo.control.izquierda:
        imagen2.x -= 1
    elif pilas.mundo.control.derecha:
        imagen2.x += 1
   
pilas.eventos.actualizar.connect(presionamos_tecla)
   
pilas.ejecutar()
Avatar de Usuario
danielpuch
 
Mensajes: 71
Registrado: Mar Ene 11, 2011 10:40 pm
Ubicación: Elizabeth, New Jersey

Re: Consulta Pilas

Notapor pchack » Lun Ene 24, 2011 5:50 am

hola daniel, el problema es que una imagen no tiene atributo x, si no el actor - en el codigo anterior se me paso por alto
eso, me enfoque en la parte de codigo para captar la pulsaciones de las flechas:

bueno, el codigo seria:

Código: Seleccionar todo
import pilas

pilas.iniciar()

imagen = pilas.imagenes.cargar('images/Fondo_Test.png')
imagen2 = pilas.imagenes.cargar('images/totoro.png')
actor = pilas.actores.Actor(imagen)
actor2 = pilas.actores.Actor(imagen2)
actor2.aprender(pilas.habilidades.Arrastrable)

def presionamos_tecla(eventos):
    if pilas.mundo.control.izquierda:
        actor2.x -= 1
    elif pilas.mundo.control.derecha:
        actor2.x += 1
   
pilas.eventos.actualizar.connect(presionamos_tecla)
   
pilas.ejecutar()


con eso creo que bastaria para que funcione.

saludos y que estes bien
Pablo Garrido
pchack
 
Mensajes: 106
Registrado: Lun Dic 13, 2010 12:23 am

Re: Consulta Pilas

Notapor danielpuch » Lun Ene 24, 2011 5:57 am

Muchisimas gracias Pablo, no me habia dado cuenta de ese detalle.
Gracias por tu buena disposicion para los que recien empezamos en esto, je je je...

:-)

En estos dias hago unas imagenes para que hagamos el ejemplo del parallax con fondos propios.
Avatar de Usuario
danielpuch
 
Mensajes: 71
Registrado: Mar Ene 11, 2011 10:40 pm
Ubicación: Elizabeth, New Jersey

Re: Consulta Pilas

Notapor pchack » Lun Ene 24, 2011 6:10 am

De nada Daniel, solo ayudo como tambien muchas personas me han ayudado a adentrarme en esto de los videojuegos y la programacion , incluyendo a este foro :wink: .

danielpuch escribió:En estos dias hago unas imagenes para que hagamos el ejemplo del parallax con fondos propios.


buenisimo, y que bueno que podamos contar con tu ayuda para los graficos, ademas pondremos a prueba el gestor
para el ejemplo del parallax que desarrolle.

genial y saludos :D .


Pablo Garrido
pchack
 
Mensajes: 106
Registrado: Lun Dic 13, 2010 12:23 am

Re: Consulta Pilas

Notapor danielpuch » Lun Ene 24, 2011 6:40 pm

Ok, aca va otra prueba que estoy haciendo tratando de agregar animaciones.

Bueno, esto es a lo que llego:

Imagen

Por alguna razon no me carga la animacion. Hice la grilla con el plugin que puso Hugo para Gimp, usando unos dibujos
de templates que encontre en la web. Cuando funcione los cambio por algun personaje terminado.
Pego el codigo a ver si me ayudan a ver donde esta el error. el codigo lo saque del manual de pilas, lo hice corriendo desde
un archivo *.py y tambien directo de la consola y no me anda de ninguna de las dos formas, debe haber algo que falta y no
me estoy dando cuenta...

Código: Seleccionar todo
import pilas

pilas.iniciar()

#Carga imagen de fondo
imagen = pilas.imagenes.cargar('images/Fondo_Test.png')
#Carga segunda imagen
imagen2 = pilas.imagenes.cargar('images/camina_derecha.png')

#Carga actor fondo
actor = pilas.actores.Actor(imagen)
#Cargar actor2 (caminante) y animarlo
actor2 = pilas.actores.Actor(imagen2)

actor2 = pilas.actores.Actor(imagen2)
animacion = pilas.imagenes.Grilla("images/camina_derecha.png", 10)
animacion.asignar(actor2)

animacion.avanzar()
animacion.asignar(actor2)

pilas.ejecutar()
Avatar de Usuario
danielpuch
 
Mensajes: 71
Registrado: Mar Ene 11, 2011 10:40 pm
Ubicación: Elizabeth, New Jersey

Re: Consulta Pilas

Notapor pchack » Lun Ene 24, 2011 7:18 pm

Buenas Daniel, para crear un actor con animacion debes crear un actor sin imagen,
y luego cargar una grilla con la animacion y asignarsela al actor:

aqui esta el codigo corregido, las lineas rojas se deben eliminar y las verdes cambiar por el texto ya escrito.

_________________________________________________________________________________________________
import pilas

pilas.iniciar()

#Carga imagen de fondo
imagen = pilas.imagenes.cargar('images/Fondo_Test.png')
#Carga segunda imagen
imagen2 = pilas.imagenes.cargar('images/camina_derecha.png')


#Carga actor fondo
actor = pilas.actores.Actor(imagen)
#Cargar actor2 (caminante) y animarlo
actor2 = pilas.actores.Actor(imagen2)

actor2 = pilas.actores.Actor(imagen2)
animacion = pilas.imagenes.cargar_grilla("images/camina_derecha.png", 10)
animacion.asignar(actor2)

animacion.avanzar()
animacion.asignar(actor2)

pilas.ejecutar()
_________________________________________________________________________________________________

PD: en la seccion ejemplos de pilas, encontraras un ejemplo justamente de este tema (archivo grilla.py), y de otras funcionalidades de pilas engine.

Saludos
Pablo Garrido
pchack
 
Mensajes: 106
Registrado: Lun Dic 13, 2010 12:23 am

Re: Consulta Pilas

Notapor danielpuch » Mar Ene 25, 2011 2:04 am

Muchas gracias Pablo.
Yo pensaba que tenia que cargar la imagen siempre y luego aplicar la animacion.
Vi tambien que en el ejemplo de la animacion no carga imagen el actor y me confundio un poco, como que no entendia el mecanismo.
Por eso le agregue el actor e hice mas lio, je je je...
Gracias por la aclaracion. Igual no lo pude hacer andar, pero segui tu consejo y me fui a ver el ejemplo grilla.py
y usando ese si lo pude hacer andar, solo que en ejemplo el personaje anda al hacer click sobre la pantalla. Yo queria que se moviera solo, pero es un buen principio.

Este fue el codigo que me anda a medias, otra cosa es que me parte la imagen en algunos lugares, como una mascara que la oculta.
Supongo que eso se podra controlar de alguna manera, todavia no me doy cuenta como.
:-)

Codigo:

Código: Seleccionar todo
import pilas

pilas.iniciar()

#Carga imagen de fondo
imagen = pilas.imagenes.cargar('images/Fondo_Test.png')
actor = pilas.actores.Actor(imagen)

#Cargar actor2 (caminante) para animarlo luego
actor2 = pilas.actores.Actor()
animacion = pilas.imagenes.cargar_grilla("images/camina_derecha.png", 10)
animacion.asignar(actor2)

def avanzar_cuadro(*k, **kv):
    "Avanza un cuadro de animacion."
    animacion.avanzar()
    animacion.asignar(actor2)

pilas.eventos.click_de_mouse.connect(avanzar_cuadro)

pilas.ejecutar()
Avatar de Usuario
danielpuch
 
Mensajes: 71
Registrado: Mar Ene 11, 2011 10:40 pm
Ubicación: Elizabeth, New Jersey

Re: Consulta Pilas

Notapor pchack » Mar Ene 25, 2011 2:18 am

Hola daniel,

sube las imagenes que utilizaste para poder ayudarte mejor.
- camina_derecha.png

Saludos
Pablo Garrido
pchack
 
Mensajes: 106
Registrado: Lun Dic 13, 2010 12:23 am

Re: Consulta Pilas

Notapor danielpuch » Mar Ene 25, 2011 2:41 am

pchack escribió:Hola daniel,

sube las imagenes que utilizaste para poder ayudarte mejor.
- camina_derecha.png

Saludos
Pablo Garrido


Si, pensaba subir todo en un archivo comprimido para que lo veas, en un rato lo paso.
:-)
Avatar de Usuario
danielpuch
 
Mensajes: 71
Registrado: Mar Ene 11, 2011 10:40 pm
Ubicación: Elizabeth, New Jersey

Re: Consulta Pilas

Notapor danielpuch » Mar Ene 25, 2011 4:15 am

Ahi te lo dejo Pablo, este es el link directo, esta todo comprimido. Las imagenes y el archivo de python

http://www.mediafire.com/?18h9j8psm7pda1k
Avatar de Usuario
danielpuch
 
Mensajes: 71
Registrado: Mar Ene 11, 2011 10:40 pm
Ubicación: Elizabeth, New Jersey

Re: Consulta Pilas

Notapor pchack » Mar Ene 25, 2011 5:05 am

hola daniel,
la solucion es sencilla, mira cuando cargas una grilla debes indicar cuantas columnas y filas tendra.
si tu imagen no tiene mas de una fila, no ingresas nada.

en tu caso señalabas en le codigo que cargabas una grilla con diez columnas y en realidad tenia 8.
animacion = pilas.imagenes.cargar_grilla("images/camina_derecha.png", 10)

deberi ser:
Código: Seleccionar todo
animacion = pilas.imagenes.cargar_grilla("images/camina_derecha.png", 8, 1)

eso quere decir 8 columnas y 1 fila
o
Código: Seleccionar todo
animacion = pilas.imagenes.cargar_grilla("images/camina_derecha.png", 8)

que es lo mismo, ya que no ingresas un argumento que en este caso se iguala a 1

tambien podrias escribir:
Código: Seleccionar todo
def avanzar_cuadro(eventos):

en vez de esto:
Código: Seleccionar todo
def avanzar_cuadro(*k, **kv):


el codigo completo aqui va:

Código: Seleccionar todo
import pilas

pilas.iniciar()

#Carga imagen de fondo
imagen = pilas.imagenes.cargar('images/Fondo_Test.png')
actor = pilas.actores.Actor(imagen)

#Cargar actor2 (caminante) para animarlo luego
actor2 = pilas.actores.Actor()
animacion = pilas.imagenes.cargar_grilla("images/camina_derecha.png", 8)
animacion.asignar(actor2)

def avanzar_cuadro(eventos):
    "Avanza un cuadro de animacion."
    animacion.avanzar()
    animacion.asignar(actor2)

pilas.eventos.click_de_mouse.connect(avanzar_cuadro)

pilas.ejecutar()



eso seria, que estes bien

Saludos.
pchack
 
Mensajes: 106
Registrado: Lun Dic 13, 2010 12:23 am

Re: Consulta Pilas

Notapor danielpuch » Mar Ene 25, 2011 2:57 pm

Gracias Pablo por la ayuda, ahora si anda. No me habia dado cuenta que el numero 10 era para la cantidad de pasos.
:-P

Al final le cambie las lineas que me dijiste a mano para realmente ver en carne propia y corrobar que entendi el concepto.
Porque a veces uno simplemente con el copy paste soluciona el problema pero no entiende el mecanismo.
Te agradezco la mano y voy a hacerte lo de parallax asi avanzamos con eso.

Una consulta, es posible por ejemplo en el tema del parallax si creas un personaje que se mueva siguiendo el mouse.
Que el efecto de parallax acompañe ese movimiento? O sea, si hago click en una parte de la pantalla, el personaje avanza hacia ahi y el fondo
acompaña ese movimiento.

Luego voy a plantear un un tema aparte una idea que tengo para hacer un nivel simple de point and click, con la estructura y como pienso que debe funcionar
y vemos como se puede llevar en lo tecnico y que cosas de pilas estan implementadas para eso.

Ultima consulta... como instalo pilas en una mac o en windoze? No encontre nada en el sitio de pilas. Solo tengo que copiar el folder pilas?
O como seria? a donde tendria que colocarlo para que lo reconozca el sistema?
:-)
Avatar de Usuario
danielpuch
 
Mensajes: 71
Registrado: Mar Ene 11, 2011 10:40 pm
Ubicación: Elizabeth, New Jersey

Re: Consulta Pilas

Notapor pchack » Mar Ene 25, 2011 3:43 pm

Saludos Daniel,
vamos por pregunta:
danielpuch escribió:Una consulta, es posible por ejemplo en el tema del parallax si creas un personaje que se mueva siguiendo el mouse.
Que el efecto de parallax acompañe ese movimiento? O sea, si hago click en una parte de la pantalla, el personaje avanza hacia ahi y el fondo
acompaña ese movimiento.

si, si se podria aunque se debe ampliar el ejemplo para ello, ya que por el momento solo se mueve de manera automatica.
espero mejorarlo y subir los cambios.

danielpuch escribió:Luego voy a plantear un un tema aparte una idea que tengo para hacer un nivel simple de point and click, con la estructura y como pienso que debe funcionar
y vemos como se puede llevar en lo tecnico y que cosas de pilas estan implementadas para eso.


buenisima idea, crea un nuevo tema y nos cuentas que ideas tienes y que mejoras podriamos agregar a pilas para
que crear este tipo de juegos sea mas simple.

danielpuch escribió:Ultima consulta... como instalo pilas en una mac o en windoze? No encontre nada en el sitio de pilas. Solo tengo que copiar el folder pilas?
O como seria? a donde tendria que colocarlo para que lo reconozca el sistema?


sobre mac, no se como se hace ya que no he probado este sistema operativo, en windows creo que en la web
si explica como se hace, aqui va le link:

https://bitbucket.org/lmorillas/ple-cpi ... sEnWindows

en windows es simple instalarlo, te tienes que descargar python para windows, y otros programitas que
en el link explica cuales son.

luego descargas pilas con mercurial, te vas a la carpeta de pilas y ejecutas este comando:
python setup.py install

y estaria instalado.

en el link lo explican bien, yo lo he probado en windows y si funciona.

Saludos
pchack
 
Mensajes: 106
Registrado: Lun Dic 13, 2010 12:23 am

Re: Consulta Pilas

Notapor danielpuch » Mar Ene 25, 2011 6:06 pm

Pablo, gracias por lo de windows, no lo habia visto. Voy a usar esas instrucciones, genial.

Y me baje el codigo fuente de pilas y vi que hay un archivo que dice install y explica como
tenerlo al menos localmente para que funcione, simplemente copiando el folder "pilas" al folder donde esta el juego.
Igual solo lo quiero para correr alguna cosita en mis tiempos libres o en mi descanso en mi trabajo que tengo una mac.

Solo que cuando lo corro me esta pidiendo unas librerias, estoy instalando Cairo y les paso el dato de como me va...
:-)
Avatar de Usuario
danielpuch
 
Mensajes: 71
Registrado: Mar Ene 11, 2011 10:40 pm
Ubicación: Elizabeth, New Jersey

Re: Consulta Pilas

Notapor danielpuch » Mar Ene 25, 2011 10:04 pm

Eso me pasa por festejar por adelantado, instale cairo por macports.

Si no sabian es como una especie de apt-get para mac, la instaló (pycairo) pero por algun tema de configuracion como que no lo detecta.
Me carga pilas pero me da un error al importar cairo. Merde!...
voy a tener que entrar a mirar todo ese tema de los paths que usa mac.
Avatar de Usuario
danielpuch
 
Mensajes: 71
Registrado: Mar Ene 11, 2011 10:40 pm
Ubicación: Elizabeth, New Jersey

NUEVO TEST //// Re: Consulta Pilas

Notapor danielpuch » Dom Ene 30, 2011 3:44 am

Bueno, sigo con mis pruebas... estoy intentando hacer un personaje que se mueva por la pantalla con el click del mouse.
Usando pilas por supuesto. El tema es que ya Pablo me explico como era el tema de la animacion por grilla, el ejemplo que hay en el manual de pilas explica como hacerlo avanzar con el click del mouse, pero yo queria que se moviera solo. Sin hacer clicks ni nada.

En el archivo *.py coloco el fondo, luego agrego el actor vacio (como me explico Pablo, ya que antes no me andaba) y luego con imagenes.cargar_grilla cargo la animacion. Al final conectando con el evento eventos.click_de_mouse lo puedo hacer moverse.
Pero lo que yo quiero es que se mueva solo, cambie para eventos.mueve_mouse y responde bien, solo que la animacion es muy rapida, creo que tengo que agregar el tema control de tiempo del clock, pero todavia no lo tengo muy claro. Voy a buscar eso.


Bueno, al final lo deje asi, solo queria que miraran el script y me dieran unas pautas de para donde tengo que enfilar, tal vez estoy mirando en los eventos incorrectos.

Lo que quiero es hacer un personaje quieto y cargarlo. Luego aplicarle la habilidad "seguir clicks" ya que quiero que el personaje se mueva con el click del mouse y que cuando se mueve hacia la derecha muestre la animacion "caminando a la derecha". Luego voy a invertir esa misma animacion y hago lo mismo pero a la izquierda. Creo que con un comienzo asi ya podria empezar a trabajar mas en lo grafico para hacer un capitulo corto de una aventura de point and click.


Aca subi el codigo, lo pego aca y aparte lo subi a un server para que lo investiguen a ver que les parece.
A pesar de que esta con problemas todavia la animacion, estoy muy agradecido y contento con todos los miembros del foro y con aquellos que estan trabajando en pilas, porque me ha ayudado a lograr resultados mas rapido de lo que esperaba.
:-)


Ahi va el codigo:
Código: Seleccionar todo
import pilas

pilas.iniciar()
#Cargo imagen de fondo
fondo = pilas.imagenes.cargar('images/fondo.bmp')
actor = pilas.actores.Actor(fondo)

#cargo la imagen que quiero animar y le asigno un actor vacio
actor_principal = pilas.actores.Actor()
actor_principal_grilla = pilas.imagenes.cargar_grilla("images/camina_derecha.png", 8, 1)
actor_principal_grilla.asignar(actor_principal)


#En teoria intento modificar el objet actor_principal_grilla y luego volver a asignarle el actor actor_principal pero no pasaba nada.
#Asi que agregue def avanzar cuadro y copie del ejemplo en el manual de pilas, pero no entiendo bien todavia esas opciones *k y **kv
#Luego lo conecte a un evento y se mueve cuando muevo el mouse, yo quiero que haga la animacion cuando se mueve hacia donde le hago click
def avanzar_cuadro(*k,  **kv):
    actor_principal_grilla.avanzar()
    actor_principal_grilla.asignar(actor_principal)

pilas.eventos.mueve_mouse.connect(avanzar_cuadro)

#Agregue la habilidad para seguir adonde hago click
actor_principal.aprender(pilas.habilidades.SeguirClicks)


pilas.ejecutar()



Ahi va el link a los archivos con imagenes y todo:

http://www.mediafire.com/?qb4jhk5mrqxx9s1



P.D.: Mire el archivo eventos.py en el folder pilas y le aplique otros eventos que encontre solo para ver lo que hacia y algunos me daban un error y me decian como que al objeto le faltaba Fisica. Que puede ser?
Avatar de Usuario
danielpuch
 
Mensajes: 71
Registrado: Mar Ene 11, 2011 10:40 pm
Ubicación: Elizabeth, New Jersey

Re: NUEVO TEST //// Re: Consulta Pilas

Notapor hugoruscitti » Dom Ene 30, 2011 4:16 am

danielpuch escribió:Lo que quiero es hacer un personaje quieto y cargarlo. Luego aplicarle la habilidad "seguir clicks" ya que quiero que el personaje se mueva con el click del mouse y que cuando se mueve hacia la derecha muestre la animacion "caminando a la derecha". Luego voy a invertir esa misma animacion y hago lo mismo pero a la izquierda. Creo que con un comienzo asi ya podria empezar a trabajar mas en lo grafico para hacer un capitulo corto de una aventura de point and click.


Está muy bien, solo que la habilidad de seguir clicks es un poco limitada... todavía no
le implementamos soporte para animaciones. Pero en breve voy a tratar de hacer algo al
respecto.

Así que por ahora, lo que podrías hacer es crear un objeto a partir de la clase Actor, y hacer
la lógica de animación ahí...

Esta es la versión modificada con esos cambios, ahora el personaje sigue al puntero del
mouse y cambia de dirección dependiendo de hacia dónde camina:

Código: Seleccionar todo
import pilas

pilas.iniciar()
#Cargo imagen de fondo
fondo = pilas.imagenes.cargar('images/fondo.bmp')
actor = pilas.actores.Actor(fondo)

#cargo la imagen que quiero animar y le asigno un actor vacio

class Protagonista(pilas.actores.Actor):
    "Representa un personaje que sigue al mouse y mira hacia donde camina."

    def __init__(self):
        pilas.actores.Actor.__init__(self)

        # Define todos los cuadros de animacion.
        self.grilla = pilas.imagenes.cargar_grilla("images/camina_derecha.png", 8, 1)
        self.grilla.asignar(self)

        # Hace que el punto (x, y) sean los pies del personaje.
        self.centro = ("centro", "abajo")

        # Hace que los clicks del mouse invoque al metodo "cuando_pulsa_el_mouse".
        pilas.eventos.click_de_mouse.conectar(self.cuando_pulsa_el_mouse)
        self.x_final = 0
        self.y_final = 0

    def cuando_pulsa_el_mouse(self, evento):
        "Comienza a caminar en la direccion que le indica el mouse."

        print "Comienza a caminar hacia", evento.x, evento.y
        self.x_final = evento.x
        self.y_final = evento.y

        # Si tiene que ir a la izquierda mira hacia ese lado, sino
        # mira a la derecha.
        if self.x > evento.x:
            self.espejado = True
        else:
            self.espejado = False

    def actualizar(self):
        # Si no esta a donde tiene que ir se mueve un poquito
        donde_estoy = (self.x, self.y)
        a_donde_ir = (self.x_final, self.y_final)
        distancia = pilas.utils.distancia_entre_dos_puntos(donde_estoy, a_donde_ir)

        # Si esta lejos de donde tiene que ir comienza a moverse.
        if distancia > 5:
            # Se desplaza suave hacia la posicion destino.
            # (15.0 es lo que produce la suavidad, si usas valores como 30.0
            #  sera un poco mas fluido).
            self.x += (self.x_final - self.x) / 15.0
            self.y += (self.y_final - self.y) / 15.0

            # Solo avanza la animacion si esta caminando.
            self.avanzar_animacion()

    def avanzar_animacion(self):
        "Avanza un cuadro de animacion."
        self.grilla.avanzar()
        self.grilla.asignar(self)


# Genera el protagonista e inicia el juego.
Protagonista()
pilas.ejecutar()


Te recomiendo pulsar las teclas F8, F10 y F12 para ver las coordenadas de tu personaje.

danielpuch escribió:P.D.: Mire el archivo eventos.py en el folder pilas y le aplique otros eventos que encontre solo para ver lo que hacia y algunos me daban un error y me decian como que al objeto le faltaba Fisica. Que puede ser?


Sip, error mio... estoy modificando el sistema de física y subí unos cambios sin querer... Lo siento.
Avatar de Usuario
hugoruscitti
Site Admin
 
Mensajes: 1242
Registrado: Dom Jul 30, 2006 3:57 am
Ubicación: Buenos Aires, Argentina

Re: Consulta Pilas

Notapor pchack » Dom Ene 30, 2011 4:45 am

Hola a Todos,

bueno, observe el código de Hugo y esta genial, es buenísimo.
encontre eso si que la animación de el personaje cuando caminaba era un poco rápida, así
que agregé unas mejoras.

aquí va el código:
Código: Seleccionar todo
import pilas

pilas.iniciar()
#Cargo imagen de fondo
fondo = pilas.imagenes.cargar('images/fondo.bmp')
actor = pilas.actores.Actor(fondo)

#cargo la imagen que quiero animar y le asigno un actor vacio

class Protagonista(pilas.actores.Actor):
    "Representa un personaje que sigue al mouse y mira hacia donde camina."

    def __init__(self):
        pilas.actores.Actor.__init__(self)

        # Define todos los cuadros de animacion.
        self.grilla = pilas.imagenes.cargar_grilla("images/camina_derecha.png", 8, 1)
        self.grilla.asignar(self)

        # Hace que el punto (x, y) sean los pies del personaje.
        self.centro = ("centro", "abajo")

        # Hace que los clicks del mouse invoque al metodo "cuando_pulsa_el_mouse".
        pilas.eventos.click_de_mouse.conectar(self.cuando_pulsa_el_mouse)
        self.x_final = 0
        self.y_final = 0

        self.paso = 0

        # son los cuadros a mostrar, cabe notar que se repiten
        # para que la animacion sea mas suave y lenta
        self.cuadros = [0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3,
                      4 , 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7]
       
    def cuando_pulsa_el_mouse(self, evento):
        "Comienza a caminar en la direccion que le indica el mouse."

        print "Comienza a caminar hacia", evento.x, evento.y
        self.x_final = evento.x
        self.y_final = evento.y

        # Si tiene que ir a la izquierda mira hacia ese lado, sino
        # mira a la derecha.
        if self.x > evento.x:
            self.espejado = True
        else:
            self.espejado = False

    def actualizar(self):
        # Si no esta a donde tiene que ir se mueve un poquito
        donde_estoy = (self.x, self.y)
        a_donde_ir = (self.x_final, self.y_final)
        distancia = pilas.utils.distancia_entre_dos_puntos(donde_estoy, a_donde_ir)

        # Si esta lejos de donde tiene que ir comienza a moverse.
        if distancia > 15:
            # Se desplaza suave hacia la posicion destino.
            # (15.0 es lo que produce la suavidad, si usas valores como 30.0
            #  sera un poco mas fluido).
            self.x += (self.x_final - self.x) / 30
            self.y += (self.y_final - self.y) / 30

            # Solo avanza la animacion si esta caminando.
            self.avanzar_animacion()

    def avanzar_animacion(self):
        # paso es el frame que se esta mostrando
        self.paso += 1

        # si el frame que estoy viendo es el ultimo volver al inicio
        if self.paso >= len(self.cuadros):
            self.paso = 0

        # asignamos animacion
        self.grilla.definir_cuadro(self.cuadros[self.paso])
        self.grilla.asignar(self)



# Genera el protagonista e inicia el juego.
Protagonista()
pilas.ejecutar()




Saludos :D .
Pablo Garrido
pchack
 
Mensajes: 106
Registrado: Lun Dic 13, 2010 12:23 am

VIDEO /// Re: Consulta Pilas

Notapor danielpuch » Dom Ene 30, 2011 5:28 am

Update!:


Ahora si anda perfecto, buenisimo. Estoy pensando un poco como hacerle el camino para que se mueva, de repente por el lado
de generar zonas con graficos y darle algun tipo de colision, pruebo y les comento.
En este caso se puede darle gravedad al actor y listo...

MUCHAS GRACIAS UNA VEZ MAS!!!
:-)
Avatar de Usuario
danielpuch
 
Mensajes: 71
Registrado: Mar Ene 11, 2011 10:40 pm
Ubicación: Elizabeth, New Jersey

Re: Consulta Pilas

Notapor Alzacon » Dom Ene 30, 2011 2:06 pm

Muy bueno Daniel

Has creado el camino por donde va? o es por donde pones el ratón? me queda la duda :S
Alzacon
 
Mensajes: 19
Registrado: Jue Ene 27, 2011 8:35 pm

Re: Consulta Pilas

Notapor pchack » Dom Ene 30, 2011 2:38 pm

Hola,
Alzacon escribió:Muy bueno Daniel

Has creado el camino por donde va? o es por donde pones el ratón? me queda la duda :S


cuando haces click en el fondo, el personaje llega al lugar donde hiciste click, igual que los juegos point and click.

Saludos.
Pablo Garrido
pchack
 
Mensajes: 106
Registrado: Lun Dic 13, 2010 12:23 am

Re: Consulta Pilas

Notapor danielpuch » Dom Ene 30, 2011 5:09 pm

Alzacon, por ahora solo lo hice caminar con el mouse, lo iba llevando, je jej e...

el siguiente paso es hacerle un camino para que se mueva solo por esa zona, abrazo!

Y en cuanto al codigo, intente hacer mover al personaje con el click del mouse y aparte darle animacion... mas o menos lo consegui y ahi con ayuda de Hugo y de Pablo lo redondearon
y quedo barbaro. Esta genial ese codigo, lo estoy estudiando y es realmente muy potente lo que se puede hacer con pilas.
Avatar de Usuario
danielpuch
 
Mensajes: 71
Registrado: Mar Ene 11, 2011 10:40 pm
Ubicación: Elizabeth, New Jersey

Re: Consulta Pilas

Notapor Alzacon » Dom Ene 30, 2011 9:22 pm

Aha, no sabia si ya se podía hacer con pilas, aunque a mi aun me quedará muy lejos aun.

Saludos ;)
Alzacon
 
Mensajes: 19
Registrado: Jue Ene 27, 2011 8:35 pm


Volver a Consultas, problemas o bugs.

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado

cron