1 |
#!/usr/bin/env python |
#!/usr/bin/env python |
2 |
# |
# |
3 |
#Minë. Mundo Interactivo-Narrativo en Español [Tierra-Media] |
#Minë. Mundo Interactivo-Narrativo en Español [Tierra-Media] |
4 |
#Copyright (C) 2002 Pablo Ruiz Múzquiz |
#Copyright (C) 2002 Pablo Ruiz Múzquiz |
5 |
# |
# |
6 |
# |
# |
7 |
#This program is free software; you can redistribute it and/or modify |
#This program is free software; you can redistribute it and/or modify |
8 |
#it under the terms of the GNU General Public License as published by |
#it under the terms of the GNU General Public License as published by |
9 |
#the Free Software Foundation; either version 2 of the License, or |
#the Free Software Foundation; either version 2 of the License, or |
10 |
#(at your option) any later version. |
#(at your option) any later version. |
11 |
# |
# |
12 |
#This program is distributed in the hope that it will be useful, |
#This program is distributed in the hope that it will be useful, |
13 |
#but WITHOUT ANY WARRANTY; without even the implied warranty of |
#but WITHOUT ANY WARRANTY; without even the implied warranty of |
14 |
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
15 |
#GNU General Public License for more details. |
#GNU General Public License for more details. |
16 |
# |
# |
17 |
#You should have received a copy of the GNU General Public License |
#You should have received a copy of the GNU General Public License |
18 |
#along with this program; if not, write to the Free Software |
#along with this program; if not, write to the Free Software |
19 |
#Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
#Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
20 |
# |
# |
21 |
|
|
22 |
# |
# |
23 |
#Fichero: controlador.py |
#Fichero: controlador.py |
24 |
|
|
25 |
"""Interfaz Controlador.""" |
"""Interfaz Controlador.""" |
26 |
|
|
27 |
|
|
28 |
class Controlador: |
class Controlador: |
29 |
"""Interfaz que debe implementar cualquier entidad que controla a un personaje. |
"""Interfaz que debe implementar cualquier entidad que controla a un personaje. |
30 |
|
|
31 |
Contiene los mensajes de respuesta a los eventos que producen los personajes. |
Contiene los mensajes de respuesta a los eventos que producen los personajes. |
32 |
|
|
33 |
En la mayoría de los lenguajes orientados a objetos hay que crear una clase o |
En la mayoría de los lenguajes orientados a objetos hay que crear una clase o |
34 |
un interfaz para esto. En Python, debido a ser dinámicamente tipado, esta |
un interfaz para esto. En Python, debido a ser dinámicamente tipado, esta |
35 |
clase en realidad es totalmente innecesaria. La pongo sólo como documentación. |
clase en realidad es totalmente innecesaria. La pongo sólo como documentación. |
36 |
|
|
37 |
Todos los métodos tienen que estar redefinidos en subclases. |
Todos los métodos tienen que estar redefinidos en subclases. |
38 |
""" |
""" |
39 |
|
|
40 |
|
|
41 |
def entra_personaje(self, personaje): |
def entra_personaje(self, personaje): |
42 |
"""Metodo llamado cuando otro personaje entra en la misma sala. |
"""Metodo llamado cuando otro personaje entra en la misma sala. |
43 |
|
|
44 |
personaje -- el personaje que entra. |
personaje -- el personaje que entra. |
45 |
""" |
""" |
46 |
pass |
pass |
47 |
|
|
48 |
|
|
49 |
def sale_personaje(self, personaje, nombre_sala_destino): |
def sale_personaje(self, personaje, nombre_sala_destino): |
50 |
"""Metodo llamado cuando otro personaje sale de la misma sala. |
"""Metodo llamado cuando otro personaje sale de la misma sala. |
51 |
|
|
52 |
personaje -- el personaje que sale. |
personaje -- el personaje que sale. |
53 |
nombre_sala_destino -- el nombre de la sala a donde va |
nombre_sala_destino -- el nombre de la sala a donde va |
54 |
""" |
""" |
55 |
pass |
pass |
56 |
|
|
57 |
|
|
58 |
def habla_personaje(self, personaje, mensaje): |
def habla_personaje(self, personaje, mensaje): |
59 |
"""Metodo llamado cuando otro personaje dice algo en la sala. |
"""Metodo llamado cuando otro personaje dice algo en la sala. |
60 |
|
|
61 |
personaje -- el personaje que habla. |
personaje -- el personaje que habla. |
62 |
mensaje -- lo que dice. |
mensaje -- lo que dice. |
63 |
""" |
""" |
64 |
pass |
pass |
65 |
|
|
66 |
|
|
67 |
def susurra_personaje(self, personaje, mensaje): |
def susurra_personaje(self, personaje, mensaje): |
68 |
"""Metodo llamado cuando otro personaje dice algo sólo para éste. |
"""Metodo llamado cuando otro personaje dice algo sólo para éste. |
69 |
|
|
70 |
personaje -- el personaje que susurra. |
personaje -- el personaje que susurra. |
71 |
mensaje -- lo que dice. |
mensaje -- lo que dice. |
72 |
""" |
""" |
73 |
pass |
pass |
74 |
|
|
75 |
|
|
76 |
def grita_personaje(self, personaje, mensaje): |
def grita_personaje(self, personaje, mensaje): |
77 |
"""Metodo llamado cuando otro personaje dice algo que oyen *todos* |
"""Metodo llamado cuando otro personaje dice algo que oyen *todos* |
78 |
los personajes de Minë (esto habría que cambiarlo porque es OOC). |
los personajes de Minë (esto habría que cambiarlo porque es OOC). |
79 |
|
|
80 |
personaje -- el personaje que grita. |
personaje -- el personaje que grita. |
81 |
mensaje -- lo que dice. |
mensaje -- lo que dice. |
82 |
""" |
""" |
83 |
pass |
pass |
84 |
|
|
85 |
|
|
86 |
def actua_personaje(self, personaje, accion): |
def actua_personaje(self, personaje, accion): |
87 |
"""Metodo llamado cuando otro personaje en la sala describe lo |
"""Metodo llamado cuando otro personaje en la sala describe lo |
88 |
que hace de forma novelada. |
que hace de forma novelada. |
89 |
|
|
90 |
personaje -- el personaje que actua. |
personaje -- el personaje que actua. |
91 |
accion -- lo que hace (el texto está expresado para colocarle |
accion -- lo que hace (el texto está expresado para colocarle |
92 |
el nombre del personaje al principio, por ejemplo |
el nombre del personaje al principio, por ejemplo |
93 |
"coge una lampara" -> "Hirunatan coge una lampara"). |
"coge una lampara" -> "Hirunatan coge una lampara"). |
94 |
""" |
""" |
95 |
pass |
pass |
96 |
|
|
97 |
|
|
98 |
def actua_individual_personaje(self, personaje, accion): |
def actua_individual_personaje(self, personaje, accion): |
99 |
"""Metodo llamado cuando otro personaje describe lo que hace |
"""Metodo llamado cuando otro personaje describe lo que hace |
100 |
de forma que sólo lo percibe éste. |
de forma que sólo lo percibe éste. |
101 |
|
|
102 |
personaje -- el personaje que actúa. |
personaje -- el personaje que actúa. |
103 |
accion -- lo que hace (el texto está expresado para colocarle |
accion -- lo que hace (el texto está expresado para colocarle |
104 |
el personaje al principio, y está en segunda persona, |
el personaje al principio, y está en segunda persona, |
105 |
por ejemplo "te da una espada" -> "Aranarth te da una |
por ejemplo "te da una espada" -> "Aranarth te da una |
106 |
espada"). |
espada"). |
107 |
""" |
""" |
108 |
pass |
pass |
109 |
|
|
110 |
|
|
111 |
def actua_uno_mismo(self, accion): |
def actua_uno_mismo(self, accion): |
112 |
"""Metodo llamado cuando el personaje se informa a si mismo (a su |
"""Metodo llamado cuando el personaje se informa a si mismo (a su |
113 |
controlador, en realidad) de algo que hace. |
controlador, en realidad) de algo que hace. |
114 |
|
|
115 |
Normalmente esto sucede de forma asíncrona, es decir, no como |
Normalmente esto sucede de forma asíncrona, es decir, no como |
116 |
respuesta directa a una acción del jugador, sino indirectamente. |
respuesta directa a una acción del jugador, sino indirectamente. |
117 |
|
|
118 |
accion -- lo que hace (el texto va en segunda persona, y se |
accion -- lo que hace (el texto va en segunda persona, y se |
119 |
mostrará tal cual en pantalla, por ejemplo "No puedes |
mostrará tal cual en pantalla, por ejemplo "No puedes |
120 |
seguir a Hirunatan porque la sala está llena"). |
seguir a Hirunatan porque la sala está llena"). |
121 |
""" |
""" |
122 |
pass |
pass |
123 |
|
|
124 |
|
|
125 |
def actua_global_personaje(self, personaje, accion): |
def actua_global_personaje(self, personaje, accion): |
126 |
"""Metodo llamado cuando otro personaje describe de forma novelada |
"""Metodo llamado cuando otro personaje describe de forma novelada |
127 |
algo que hace y que ven *todos* los personajes de Minë. |
algo que hace y que ven *todos* los personajes de Minë. |
128 |
|
|
129 |
personaje -- el personaje que actua. |
personaje -- el personaje que actua. |
130 |
accion -- lo que hace (el texto está expresado para colocarle |
accion -- lo que hace (el texto está expresado para colocarle |
131 |
el nombre del personaje al principio, por ejemplo |
el nombre del personaje al principio, por ejemplo |
132 |
"ha entrado en Minë" -> "Hirunatan ha entrado en Minë"). |
"ha entrado en Minë" -> "Hirunatan ha entrado en Minë"). |
133 |
""" |
""" |
134 |
pass |
pass |
135 |
|
|
136 |
|
|
137 |
def suceso_entorno(self, suceso): |
def suceso_entorno(self, suceso): |
138 |
"""Método llamado cuando ocurre un fenómeno ambiental, independiente |
"""Método llamado cuando ocurre un fenómeno ambiental, independiente |
139 |
de ningún personaje concreto. |
de ningún personaje concreto. |
140 |
|
|
141 |
personaje -- el personaje que actúa. |
personaje -- el personaje que actúa. |
142 |
suceso -- lo que ocurre (el texto está expresado de forma impersonal, |
suceso -- lo que ocurre (el texto está expresado de forma impersonal, |
143 |
y se mostrará tal cual en pantalla, por ejemplo "De pronto |
y se mostrará tal cual en pantalla, por ejemplo "De pronto |
144 |
se hace un silencio sepulcral en la sala"). |
se hace un silencio sepulcral en la sala"). |
145 |
""" |
""" |
146 |
pass |
pass |
147 |
|
|
148 |
|
|
149 |
def ataca_personaje(self, personaje, result): |
def ataca_personaje(self, personaje, result): |
150 |
"""Metodo llamado cuando otro personaje inicia un ataque a este. |
"""Metodo llamado cuando otro personaje inicia un ataque a este. |
151 |
|
|
152 |
personaje -- el personaje que ha atacado. |
personaje -- el personaje que ha atacado. |
153 |
result -- el resultado del combate (Personaje.ATAQUE_EXITO, etc.) |
result -- el resultado del combate (Personaje.ATAQUE_EXITO, etc.) |
154 |
""" |
""" |
155 |
pass |
pass |
156 |
|
|
157 |
|
|
158 |
def movimiento_automatico(self): |
def movimiento_automatico(self): |
159 |
"""Metodo llamado cuando el personaje se ha movido automaticamente |
"""Metodo llamado cuando el personaje se ha movido automaticamente |
160 |
a otra sala, por estar siguiendo a otro personaje. |
a otra sala, por estar siguiendo a otro personaje. |
161 |
""" |
""" |
162 |
pass |
pass |
163 |
|
|
164 |
|
|
165 |
|
|
166 |
# Código para pruebas unitarias del módulo. |
# Código para pruebas unitarias del módulo. |
167 |
|
|
168 |
if (__name__ == '__main__'): |
if (__name__ == '__main__'): |
169 |
print "No hay código para pruebas unitarias del módulo, ya que es un interfaz" |
print "No hay código para pruebas unitarias del módulo, ya que es un interfaz" |
170 |
print "y no tiene código." |
print "y no tiene código." |