Dialogo....

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

Dialogo....

Notapor carlachacon » Mar Mar 15, 2011 3:10 pm

Buenos Dias Chicos!!

Hoy les escribo para preguntar una cosita con respecto al diálogo.

Primero: quiero utilizarlo en un personaje para que cuando alguien presione un botón él le diga algo...
tengo 3 botones (bien, mal , no respondio), entonces lo he estado utilizando de esta manera:

Declaro:
dialogue = pilas.actores.Dialogo()
dialogue.iniciar()


luego en la función del botón coloco estas lineas de código:
pilas.eventos.click_de_mouse.conectar(dialogue.avanzar_al_siguiente_dialogo)
dialogue.decir(actor, Mensaje)


peeeero lo que pasa es que cuando le doy la primera vez no sale nada, solo a la 2da o 3era. ¿que estoy haciendo mal?

Otra pregunta que les tengo es la siguiente:
¿Por que en algunos métodos no puedo enviar como parámetros funciones con parámetros? (valga la redundancia)
ejemplo:
boton.conectar_presionado( press_button(mensaje) ) ==> esto me revienta el programa... y así con otros métodos que pilas tiene.. lo pregunto ya que muchas veces uno quisiera hacer un método genérico que me sirva para varios botones por ejemplo, pero enviarle parámetros distintos.

espero su respuesta...
carlachacon
 
Mensajes: 68
Registrado: Mié Feb 16, 2011 7:04 pm
Ubicación: Venezuela

Re: Dialogo....

Notapor hugoruscitti » Mar Mar 15, 2011 4:15 pm

carlachacon escribió:Buenos Dias Chicos!!

Hoy les escribo para preguntar una cosita con respecto al diálogo.

Primero: quiero utilizarlo en un personaje para que cuando alguien presione un botón él le diga algo...
tengo 3 botones (bien, mal , no respondio), entonces lo he estado utilizando de esta manera:

Declaro:
dialogue = pilas.actores.Dialogo()
dialogue.iniciar()


luego en la función del botón coloco estas lineas de código:
pilas.eventos.click_de_mouse.conectar(dialogue.avanzar_al_siguiente_dialogo)
dialogue.decir(actor, Mensaje)


peeeero lo que pasa es que cuando le doy la primera vez no sale nada, solo a la 2da o 3era. ¿que estoy haciendo mal?


Creo que la forma mas sencilla es creando un dialogo
sin textos y que cada boton genere un mensaje y avance.. Por ejemplo,
este código tiene dos botones, cuando pulsas en uno de
ellos el personaje que está a la izquierda dice que botón se
ha pulsado:

Imagen

Código: Seleccionar todo
import pilas                                                                                                                                                             

pilas.iniciar()

# Genera al personaje que habla
aceituna = pilas.actores.Aceituna(x=-100)


# Se crean los dos botones.
b1 = pilas.actores.Boton(x=100, y=50)
b2 = pilas.actores.Boton(x=100, y=-50)


# Generamos el administrador de los dialogos.
dialogo = pilas.actores.Dialogo()


# Ahora las acciones que vamos a ejecutar cuando
# se pulsan los botones.

def cuando_pulsa_el_boton(texto):
    dialogo.decir(aceituna, "Has pulsado: " + texto)
    dialogo.iniciar()


# Y conectamos las funciones con los botones.
b1.conectar_presionado(cuando_pulsa_el_boton, "boton de arriba")
b2.conectar_presionado(cuando_pulsa_el_boton, "boton de abajo")


pilas.avisar("Pulsa alguno de los botones")
pilas.ejecutar()


carlachacon escribió:Otra pregunta que les tengo es la siguiente:
¿Por que en algunos métodos no puedo enviar como parámetros funciones con parámetros? (valga la redundancia)
ejemplo:
boton.conectar_presionado( press_button(mensaje) ) ==> esto me revienta el programa... y así con otros métodos que pilas tiene.. lo pregunto ya que muchas veces uno quisiera hacer un método genérico que me sirva para varios botones por ejemplo, pero enviarle parámetros distintos.

espero su respuesta...


Se puede, solo que tienes que enviar el argumento separado por una coma:

Código: Seleccionar todo
boton.conectar_presionado( press_button, mensaje )


porque si escribes "press_botton(mensaje)", python cree que quieres
evaluar el resultado de llamar a "press_botton" y enviarselo al boton, algo que
en realidad no quieres....
Avatar de Usuario
hugoruscitti
Site Admin
 
Mensajes: 1242
Registrado: Dom Jul 30, 2006 3:57 am
Ubicación: Buenos Aires, Argentina

Re: Dialogo....

Notapor carlachacon » Sab Mar 19, 2011 9:46 pm

Hola Hugo!!!!

te escribo ya que al ejecutar el ejemplo que colocaste encuentro un errorcito, y quisiera saber como podríamos corregirlo
prueba esto:
1.- presiona el botón de arriba (te aparecerá el mensaje)
2.- presiona el botón de abajo, sólo una vez (se quita el primer mensaje, peeeero aparece el mensaje nuevo, sino hasta que se le dá otro click)

cómo pudiéramos arreglar esto?? osea que con un sólo click aparezca el mensaje correspondiente
carlachacon
 
Mensajes: 68
Registrado: Mié Feb 16, 2011 7:04 pm
Ubicación: Venezuela

Re: Dialogo....

Notapor hugoruscitti » Lun Mar 21, 2011 2:46 pm

Si, efectivamente es un bug en los cuadros de dialogo. Ahí lo corregí creando
un nuevo argumento para el objeto Dialogo, es así:

Si quieres que el ejemplo funcione correctamente, hay que iniciar el objeto
dialogo con el argumento "modo_automatico=False",

dialogo = pilas.actores.Dialogo(modo_automatico=False)


Esto le indica al dialogo que tú quieres mostrar u ocultar los
cuadros de dialogo de manera manual. Esto se ajusta mas
a lo que quieres hacer con los botones, porque la lógica de
los mensajes está gobernada por los botones y no por
un dialogo paso a paso.

En definitiva, tienes que actualizar a la versión 0.43, puedes hacerlo
con el comando "hg pull" y luego "hg update" si has instalado pilas
desde un repositorio, o usando "easy_install -U pilas" (creo que esto
no estába andando muy bien, no lo recomiendo...)

Si quieres ver los últimos cambios están indicandos en el repositorio:

https://bitbucket.org/hugoruscitti/pila ... 008d2bd128


El código completo del ejemplo queda así:

import pilas                                                                                                                                                              
pilas.iniciar()

# Genera al personaje que habla
aceituna = pilas.actores.Aceituna(x=-100)

# Se crean los dos botones.
b1 = pilas.actores.Boton(x=100, y=50)
b2 = pilas.actores.Boton(x=100, y=-50)

# Generamos el administrador de los dialogos.
dialogo = pilas.actores.Dialogo(modo_automatico=False)

# Ahora las acciones que vamos a ejecutar cuando
# se pulsan los botones.
def cuando_pulsa_el_boton(texto):
dialogo.decir(aceituna, "Has pulsado: " + texto)
dialogo.iniciar()

# Y conectamos las funciones con los botones.
b1.conectar_presionado(cuando_pulsa_el_boton, "boton de arriba")
b2.conectar_presionado(cuando_pulsa_el_boton, "boton de abajo")

pilas.avisar("Pulsa alguno de los botones")
pilas.ejecutar()


Saludos.
Avatar de Usuario
hugoruscitti
Site Admin
 
Mensajes: 1242
Registrado: Dom Jul 30, 2006 3:57 am
Ubicación: Buenos Aires, Argentina

Re: Dialogo....

Notapor carlachacon » Lun Mar 21, 2011 2:52 pm

ok! gracias!!

cuando le doy hg update lo que me sale es la lista de archivos modificados... como hago para terminarlos de instalar??
carlachacon
 
Mensajes: 68
Registrado: Mié Feb 16, 2011 7:04 pm
Ubicación: Venezuela

Re: Dialogo....

Notapor hugoruscitti » Lun Mar 21, 2011 3:05 pm

primero intenta ejecutar el siguiente código desde el intérprete de python:

import pilas
pilas.version()


Si te retorna '0.43' es porque ya se instaló solo al hacer "pull y update".

Sino, tienes que ejecutar este comando desde el directorio de donde
has hecho "update":

sudo python setup.py develop


Saludos.
Avatar de Usuario
hugoruscitti
Site Admin
 
Mensajes: 1242
Registrado: Dom Jul 30, 2006 3:57 am
Ubicación: Buenos Aires, Argentina

Re: Dialogo....

Notapor carlachacon » Lun Mar 21, 2011 3:18 pm

primero:
cuando ejecuto:
import pilas
pilas.version()


me aparece lo siguiente:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'version'


y luego cuando le digo
sudo python setup.py develop


me aparece:
running develop
install_dir /usr/local/lib/python2.6/dist-packages/
Checking .pth file support in /usr/local/lib/python2.6/dist-packages/
/usr/bin/python -E -c pass
TEST PASSED: /usr/local/lib/python2.6/dist-packages/ appears to support .pth files
running egg_info
writing requirements to pilas.egg-info/requires.txt
writing pilas.egg-info/PKG-INFO
writing top-level names to pilas.egg-info/top_level.txt
writing dependency_links to pilas.egg-info/dependency_links.txt
reading manifest file 'pilas.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
writing manifest file 'pilas.egg-info/SOURCES.txt'
running build_ext
Creating /usr/local/lib/python2.6/dist-packages/pilas.egg-link (link to .)
pilas 0.41 is already the active version in easy-install.pth
Installing pilas script to /usr/local/bin

Installed /home/carla/instalacion_pilas/pilas
Processing dependencies for pilas==0.41
Searching for Box2D==2.0.2b1
Best match: Box2D 2.0.2b1
Processing Box2D-2.0.2b1-py2.6-linux-i686.egg
Box2D 2.0.2b1 is already the active version in easy-install.pth

Using /usr/local/lib/python2.6/dist-packages/Box2D-2.0.2b1-py2.6-linux-i686.egg
Searching for distribute==0.6.14
Best match: distribute 0.6.14
Adding distribute 0.6.14 to easy-install.pth file
Installing easy_install script to /usr/local/bin
Installing easy_install-2.7 script to /usr/local/bin
Installing easy_install-2.6 script to /usr/local/bin

Using /usr/lib/python2.6/dist-packages
Finished processing dependencies for pilas==0.41


por lo que creo que no me esta instalando la versión 0.43
carlachacon
 
Mensajes: 68
Registrado: Mié Feb 16, 2011 7:04 pm
Ubicación: Venezuela

Re: Dialogo....

Notapor hugoruscitti » Lun Mar 21, 2011 4:00 pm

Te paso los comandos para actualizar pilas completo, seguramente
lo que faltaba era eliminar la versión anterior...

Tienes que ejecutar estos comandos desde tu directorio
personal (home):


mkdir -p instalacion_pilas
cd instalacion_pilas
mv pilas anterior_pilas

sudo easy_install -m pilas
hg clone http://bitbucket.org/hugoruscitti/pilas
cd pilas
sudo python setup.py develop


Lo que hacen estos comandos es mover la versión de pilas actual
a un directorio llamado "anterior_pilas", luego desinstala pilas
de tu sistema (es donde dice -m pilas) y luego
descarga pilas desde cero y lo re-instala.

Espero te funcione bien, comentanos como te fué.
Saludos.
Avatar de Usuario
hugoruscitti
Site Admin
 
Mensajes: 1242
Registrado: Dom Jul 30, 2006 3:57 am
Ubicación: Buenos Aires, Argentina

Re: Dialogo....

Notapor carlachacon » Lun Mar 21, 2011 6:41 pm

Hola!

ahora cuando utilizo el dialogo me aparece esto
File "/home/carla/instalacion_pilas/pilas/pilas/actores/dialogo.py", line 29, in iniciar
self.avanzar_al_siguiente_dialogo()
File "/home/carla/instalacion_pilas/pilas/pilas/actores/dialogo.py", line 61, in avanzar_al_siguiente_dialogo
self._mostrar_o_ejecutar_siguiente(siguiente)
File "/home/carla/instalacion_pilas/pilas/pilas/actores/dialogo.py", line 51, in _mostrar_o_ejecutar_siguiente
self.dialogo_actual.colocar_origen_del_globo(actor.x, actor.arriba)
AttributeError: 'NoneType' object has no attribute 'x'


que pasará?
carlachacon
 
Mensajes: 68
Registrado: Mié Feb 16, 2011 7:04 pm
Ubicación: Venezuela

Re: Dialogo....

Notapor hugoruscitti » Lun Mar 21, 2011 7:16 pm

probá los ejemplos del directorio: "ejemplos", por citar alguno:

dialogo_con_botones.py
dialogo_con_funciones.py
dialogo_con_preguntas.py

por lo que ví en el mensaje de error te está faltando especificar el actor
en el diálogo. ¿que te retorna la función "pilas.version()"?
Avatar de Usuario
hugoruscitti
Site Admin
 
Mensajes: 1242
Registrado: Dom Jul 30, 2006 3:57 am
Ubicación: Buenos Aires, Argentina

Re: Dialogo....

Notapor carlachacon » Vie Mar 25, 2011 8:25 pm

Hoooola

les escribo para saber si uno podría cambiar la posición del diálogo... hay alguna forma??
carlachacon
 
Mensajes: 68
Registrado: Mié Feb 16, 2011 7:04 pm
Ubicación: Venezuela

Re: Dialogo....

Notapor hugoruscitti » Vie Mar 25, 2011 10:06 pm

carlachacon escribió:Hoooola

les escribo para saber si uno podría cambiar la posición del diálogo... hay alguna forma??


Si, podrías escribir:

dialogo.dialogo_actual.x = 200


donde 200 es la posicion que le quieres asignar al dialogo.
Avatar de Usuario
hugoruscitti
Site Admin
 
Mensajes: 1242
Registrado: Dom Jul 30, 2006 3:57 am
Ubicación: Buenos Aires, Argentina

Re: Dialogo....

Notapor carlachacon » Vie Mar 25, 2011 10:51 pm

hola huguillo!!!

disculpa tanta molestia pero al asignarle valor a la X, me sale lo siguiente:
AttributeError: 'NoneType' object has no attribute 'x'
carlachacon
 
Mensajes: 68
Registrado: Mié Feb 16, 2011 7:04 pm
Ubicación: Venezuela


Volver a Consultas, problemas o bugs.

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados

cron