[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Ambar-dev] los objetos en Minë
From: |
Andres Moya |
Subject: |
Re: [Ambar-dev] los objetos en Minë |
Date: |
Mon, 18 Mar 2002 10:21:01 +0100 |
Ya entiendo lo que pasa, este mensaje te lo intenté mandar el viernes, creo,
pero había errores en el mail y no llegó. Aquí lo tienes (**espero que por
fin llegue**).
He visto el código que has hecho, que está ciertamente más claro que antes.
Sin embargo, veo otro problema: no se respeta claramente la separación de
papeles entre la clase sala y dialogonormal. Al hacer una clase siempre hay
que tener muy clara la abstracción que representa, y en su código no poner
detalles que pertenezcan a otras clases. En este caso, una sala no sabe nada
de personajes, excepto que entran y salen. Entonces no es lógico que dentro
de un método de sala se hagan tiradas de percepción, por ejemplo. Los métodos
de coger y dejar deberían estar hechos de tal manera que quien coja un objeto
pueda ser un personaje, un animal, un camión que pase por allí, etc.
Aquí te mando otra propuesta, a ver que te parece...
El Martes 12 Marzo 2002 18:46, escribiste:
> A ver, estoy reescribiendo la parte de los objetos con ayuda de papel
> y lápiz para un buen diseño. Prometo hacerlo bien ya de una vez. He
> ingeniado un sistema para matar varios pájaros de un tiro.
Muy bien, tengo alguna sugerencia yo también (espero no haberme retrasado
demasiado). <- PUES AL FINAL SI QUE ME HE RETRASADO... :"-(
- El resumen de objetos creo que debería hacerse directamente en la propia
sala, y no recounstruirlo dinámicamente cada vez. Es decir, si la descripción
de sala menciona un objeto con cantidad 3, se crea un único elemento de la
lista de objetos, que contiene una lista de instancias. Si luego alguien
viene y suelta otro objeto con el mismo id y probabilidad, simplemente se
añade otra instancia a la lista.
- Al recoger objetos, se extrae una instancia de la lista. Si se queda vacía,
lo que ocurra depende de la probabilidad: si es 0, entonces el elemento de la
lista se borra porque ya no va a volver a reaparecer más el objeto. Si es
mayor que 0, se deja.
- Al dejar un objeto, si no existía antes ningún elemento de lista, se crea
uno con probabilidad y máximo igual a 0, y la descripción se toma la de la
instancia de objeto.
Para que el diseño esté bien hecho, conviene hacerlo y revisarlo antes de
hacer el código. Te propongo una cosa, por lo menos al principio: podrías
escribir primero la documentación de los atributos que vas a tocar en las
clases y los algoritmos en seudocódigo, y me los envías para que les eche un
vistazo. Cuando estemos de acuerdo, entonces ya los pásas a código de verdad.
Te pongo un ejemplo, de lo que podría ir en la clase Sala
clase Sala:
Atributos:
- objetos ({String:any}[]): lista de objetos de la sala, siendo cada objeto
un diccionario:
- "id" (string): el id del objeto
- "probabilidad" (int): probabilidad de que reaparezca cada vez que
alguien entra en la sala (0-100)
- "maximo" (int): maximos objetos que pueden aparecer (si es 0, no hay
máximo)
- "dificultad" (int): dificultad para percibirlo (0-100)
- "descripcion" (string): que aspecto tiene el objeto
- "instancias" (Objeto[]): lista con una o más instancias del objeto real
(puede estar vacía si probabilidad > 0, porque
es posible que reaparezcan objetos más tarde)
Métodos:
coger_objeto(id):
Buscar el id en la lista de objetos y extraer una instancia.
Si la lista de instancias está vacía y probabilidad == 0,
eliminar el elemento de la lista
dejar_objeto(objeto):
Si existe el objeto en la lista, añadir la instancia. Si no, crear
un elemento nuevo.
> Otra cosa, me encantaría que escribiéramos un documento juntos
> explicando qué es Minë, parecido al pdf de la web pero mejor y con tu ayuda
> e ideas. Una especie de presentación oficial del proyecto.
Bueno, aunque a mí el de la web me parece bastante bien. ¿Qué idea tienes al
respecto? Pásame la estructura que tengas pensada y ya iré yo rellenando
cosas.