ambar-dev
[Top][All Lists]
Advanced

[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.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]