1
2
3
4
5
6
7
8
9 import pilas
10
12 """
13 Representa una secuencia de mensajes entre varios actores.
14
15 >>> mono = pilas.actores.Mono()
16 >>> mono2 = pilas.actores.Mono()
17 >>> dialogo = pilas.actores.Dialogo()
18 >>> dialogo.decir(mono, "Hola Mundo")
19 >>> dialogo.decir(mono2, "Estoy diciendo algo")
20 >>> dialogo.iniciar()
21
22 .. image:: images/actores/mono_dice.png
23
24
25 """
26
27 - def __init__(self, modo_automatico=True):
28 """ Constructor del Diálogo
29
30 :param modo_automatico: Establece si el dialogo ira cambiando automatiamente.
31 :type modo_automatico: boolean
32 """
33 self.dialogo = []
34 self.dialogo_actual = None
35 self.modo_automatico = modo_automatico
36
37 - def decir(self, actor, texto):
38 """ Añade un texto a la conversación y establece el actor que lo dice.
39
40 :param actor: Actor que dirá el texto.
41 :type actor: Actor
42 :param texto: Texto que dirá el actor.
43 :type texto: string
44 """
45 self.dialogo.append((actor, texto))
46
60
61 - def elegir(self, actor, texto, opciones, funcion_a_invocar):
62 """ Muestra un texto de dialogo con una lista de opciones para poder seleccionar y ejecutar una accion cuando se seleccione una de las opciones del cuadro de dialogo.
63
64 :param actor: Actor que dirá el texto.
65 :type actor: Actor
66 :param texto: Texto que aparecerá en la parte superior del dialogo de opciones.
67 :type texto: string
68 :param opciones: Array de posibles opciones que mostrará el cuadrio de dialogo.
69 :type opciones: Array
70 :param funcion_a_invocar: Método al que se llamará cuando se seleccione una de las opciones del listado. Este metodo recibirá como parámetro la opción que se haya seleccinado.
71
72 >>> def cuando_responde_color_favorito(respuesta):
73 >>> colores = {
74 >>> 'rojo': pilas.colores.rojo,
75 >>> 'verde': pilas.colores.verde,
76 >>> 'azul': pilas.colores.azul,
77 >>> }
78 >>>
79 >>> pilas.fondos.Color(colores[respuesta])
80 >>> mono.sonreir()
81 >>> d.decir(mono, '¡mira!')
82 >>>
83 >>> d.elegir(mono_chiquito, 'Mi color favorito es el...', ['rojo', 'verde', 'azul'], cuando_responde_color_favorito)
84
85 """
86 self.dialogo.append((actor, texto, opciones, funcion_a_invocar))
87
90
92 """ Inicia el dialogo que se haya definido.
93
94 >>> d = pilas.actores.Dialogo()
95 >>> d.decir(mono, "¿Cual es tu color favorito?")
96 >>> d.iniciar()
97
98 """
99 self.avanzar_al_siguiente_dialogo()
100
104
106 if self.dialogo_actual:
107 self.dialogo_actual.eliminar()
108 self.dialogo_actual = None
109
111 if isinstance(siguiente, tuple):
112
113 if len(siguiente) == 2:
114 actor, texto = siguiente
115 self.dialogo_actual = pilas.actores.Globo(texto, dialogo=self, avance_con_clicks=self.modo_automatico)
116 else:
117
118 actor, texto, opciones, funcion_a_invocar = siguiente
119 self.dialogo_actual = pilas.actores.GloboElegir(texto, opciones, funcion_a_invocar, dialogo=self)
120
121 self.dialogo_actual.colocar_origen_del_globo(actor.x, actor.arriba)
122 else:
123 siguiente()
124 self.avanzar_al_siguiente_dialogo()
125
136