/[ambar]/ambar/dialogo.py
ViewVC logotype

Diff of /ambar/dialogo.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2.3 by amoyav, Thu Aug 29 12:18:21 2002 UTC revision 2.4 by pabloruiz, Tue Nov 5 22:58:22 2002 UTC
# Line 1  Line 1 
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: dialogo.py  #Fichero: dialogo.py
24    
25  """Clase Dialogo."""  """Clase Dialogo."""
26    
27    
28  class Dialogo:  class Dialogo:
29      """Clase base que representa un dialogo mantenido con el jugador      """Clase base que representa un dialogo mantenido con el jugador
30      a través de una conexión de socket.      a través de una conexión de socket.
31            
32      Responde a los eventos de socket, y también a los del controlador      Responde a los eventos de socket, y también a los del controlador
33      de un personaje. Tiene implementaciones por defecto de las respuestas      de un personaje. Tiene implementaciones por defecto de las respuestas
34      a todos los eventos, que generan un error. Hay que redefinir todas      a todos los eventos, que generan un error. Hay que redefinir todas
35      las respuestas a eventos que se espera que ocurran.      las respuestas a eventos que se espera que ocurran.
36    
37      Los eventos de controlador tienen una respuesta única, pero los de      Los eventos de controlador tienen una respuesta única, pero los de
38      socket tienen una respuesta distinta para cada estado. Las subclases      socket tienen una respuesta distinta para cada estado. Las subclases
39      deberán definir un método por cada estado, llamado comando_<estado>      deberán definir un método por cada estado, llamado comando_<estado>
40      (por ejemplo, comando_0, comando_1, etc.).      (por ejemplo, comando_0, comando_1, etc.).
41    
42      Contiene los siguientes atributos:      Contiene los siguientes atributos:
43       - __padre(InterfazPJ): el interfaz al cual pertenece este diálogo       - __padre(InterfazPJ): el interfaz al cual pertenece este diálogo
44       - __conn(Connection): la conexión por la cual se comunica       - __conn(Connection): la conexión por la cual se comunica
45       - __estado(int): el estado en el que se encuentra este diálogo       - __estado(int): el estado en el que se encuentra este diálogo
46    
47      Invariantes:      Invariantes:
48         __padre != None         __padre != None
49         __conn != None         __conn != None
50         __estado >= 0         __estado >= 0
51      """      """
52    
53      def __init__(self, padre, conn):      def __init__(self, padre, conn):
54          """Inicializa la base y empieza en estado 0.          """Inicializa la base y empieza en estado 0.
55    
56          Requiere:          Requiere:
57            padre != None            padre != None
58            conn != None            conn != None
59          """          """
60          self.__padre = padre          self.__padre = padre
61          self.__conn = conn          self.__conn = conn
62          self.__estado = 0          self.__estado = 0
63    
64    
65      def padre(self):      def padre(self):
66          return self.__padre          return self.__padre
67    
68    
69      def conn(self):      def conn(self):
70          return self.__conn          return self.__conn
71    
72    
73      def estado(self):      def estado(self):
74          return self.__estado          return self.__estado
75    
76    
77      def poner_estado(self, estado):      def poner_estado(self, estado):
78          """Requiere: estado >= 0"""          """Requiere: estado >= 0"""
79          self.__estado = estado          self.__estado = estado
80    
81    
82      def comando_0(self, cmd_list):      def comando_0(self, cmd_list):
83          """Responde a un comando que viene del socket.          """Responde a un comando que viene del socket.
84    
85          El comando ya viene partido en una lista de palabras.          El comando ya viene partido en una lista de palabras.
86    
87          Requiere:          Requiere:
88            cmd_list != None            cmd_list != None
89          """          """
90          raise ValueError("Recibido comando en un diálogo que no lo espera")          raise ValueError("Recibido comando en un diálogo que no lo espera")
91                            
92    
93      def entra_personaje(self, personaje):      def entra_personaje(self, personaje):
94          raise ValueError("Recibido evento entra_personaje en un diálogo que no lo espera")          raise ValueError("Recibido evento entra_personaje en un diálogo que no lo espera")
95                                                    
96                                                    
97      def sale_personaje(self, personaje, nombre_sala_destino):      def sale_personaje(self, personaje, nombre_sala_destino):
98          raise ValueError("Recibido evento sale_personaje en un diálogo que no lo espera")          raise ValueError("Recibido evento sale_personaje en un diálogo que no lo espera")
99                                                    
100                                                    
101      def habla_personaje(self, personaje, mensaje):      def habla_personaje(self, personaje, mensaje):
102          raise ValueError("Recibido evento habla_personaje en un diálogo que no lo espera")          raise ValueError("Recibido evento habla_personaje en un diálogo que no lo espera")
103    
104                    
105      def susurra_personaje(self, personaje, mensaje):      def susurra_personaje(self, personaje, mensaje):
106          raise ValueError("Recibido evento susurra_personaje en un diálogo que no lo espera")          raise ValueError("Recibido evento susurra_personaje en un diálogo que no lo espera")
107    
108                    
109      def grita_personaje(self, personaje, mensaje):      def grita_personaje(self, personaje, mensaje):
110          raise ValueError("Recibido evento grita_personaje en un diálogo que no lo espera")          raise ValueError("Recibido evento grita_personaje en un diálogo que no lo espera")
111    
112    
113      def actua_personaje(self, personaje, accion):      def actua_personaje(self, personaje, accion):
114          raise ValueError("Recibido evento actua_personaje en un diálogo que no lo espera")          raise ValueError("Recibido evento actua_personaje en un diálogo que no lo espera")
115    
116    
117      def actua_individual_personaje(self, personaje, accion):      def actua_individual_personaje(self, personaje, accion):
118          raise ValueError("Recibido evento actua_individual_personaje en un diálogo que no lo espera")          raise ValueError("Recibido evento actua_individual_personaje en un diálogo que no lo espera")
119    
120    
121      def actua_uno_mismo(self, accion):      def actua_uno_mismo(self, accion):
122          raise ValueError("Recibido evento actua_uno_mismo en un diálogo que no lo espera")          raise ValueError("Recibido evento actua_uno_mismo en un diálogo que no lo espera")
123                                                
124                                                    
125      def actua_global_personaje(self, personaje, accion):      def actua_global_personaje(self, personaje, accion):
126          raise ValueError("Recibido evento actua_global_personaje en un diálogo que no lo espera")          raise ValueError("Recibido evento actua_global_personaje en un diálogo que no lo espera")
127    
128    
129      def suceso_entorno(self, mensaje):      def suceso_entorno(self, mensaje):
130          raise ValueError("Recibido evento suceso_entorno en un diálogo que no lo espera")          raise ValueError("Recibido evento suceso_entorno en un diálogo que no lo espera")
131                    
132            
133      def ataca_personaje(self, personaje, result):      def ataca_personaje(self, personaje, result):
134          raise ValueError("Recibido evento ataca_personaje en un diálogo que no lo espera")          raise ValueError("Recibido evento ataca_personaje en un diálogo que no lo espera")
135                    
136            
137      def movimiento_automatico(self):      def movimiento_automatico(self):
138          raise ValueError("Recibido evento movimiento_automatico en un diálogo que no lo espera")          raise ValueError("Recibido evento movimiento_automatico en un diálogo que no lo espera")
139            
140    
141  # Código para pruebas unitarias del módulo.  # Código para pruebas unitarias del módulo.
142    
143  if (__name__ == '__main__'):  if (__name__ == '__main__'):
144      print "No hay código para pruebas unitarias del módulo."      print "No hay código para pruebas unitarias del módulo."
145      print "Para probar, ejecutar mine.py y conectarse via telnet."      print "Para probar, ejecutar mine.py y conectarse via telnet."
146    

Legend:
Removed from v.2.3  
changed lines
  Added in v.2.4

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26