baltasarq escribió:
Hola,
Ya entiendo, realmente el objeto pájaro en tu equipo y el objeto pájaro en esa localidad son el mismo, ¿no? Inform te permite "multiplicar" objetos, com tú dices, pero siempre debes adjuntar el máximo.
Código:
Class Pajaro(20)
with
Salud 20,
Velocidad 30,
...
Así, como máximo sólo puede haber 20 pájaros en tu sistema. Para crear un pájaro nuevo, lo que puedes hacer es lo siguiente (te pongo además cómo adicionarlo a tu jugador, que creo que queda más ordenado que una variable global):
Código:
object Jugador [
private
equipo Nothing,
with
creaPajaro [;
if ( Pajaro.remaining() < 1 ) {
print "*** ERROR: max. de pajaros alcanzado.";
}
self.equipo = Pajaro.create();
],
];
Fíjate en que tienes, para este tipo de clases, el método
remaining(), que te devolverá el número de objetos que aún puedes crear.
Si lo deseas, puedes eliminar un
Pajaro creado llamando al método destroy:
Código:
self.equipo.destroy();
Todo esto está muy bien, aunque quizás no seas capaz de decir cuántos objetos Pajaro debes crear como máximo (en el caso de que sí puedas hacerlo, hazlo y no te comas más la cabeza).
http://inform-fiction.org/extensions/complete.htmlHay una extensión de I6 para crear objetos sin proponer un máximo:
http://mirror.ifarchive.org/if-archive/ ... s/dynobj.hTambién necesitarás esta librería:
http://ifarchive.flavorplex.com/if-arch ... debuglib.h¿Que cómo funciona? Solo debes incluir ambas en tu código, y definir tu clase Pajaro como:
Código:
class Pajaro(0)
with
! ...
;
Para crear un objeto de la clase Pajaro:
Código:
self.equipo = Pajaro.create();
Es decir, exactamente igual que antes. Para eliminarlo, llamas a destroy(). Eso sí, ten en cuenta que ahora el método remaining() siempre devolverá uno.
Espero que te ayude.
Genial baltasarq. Lo entiendo. Probaré de ambas formas: con máximo y sin límites.
Muy buena explicación, gracias.
EDITO: Me aparecieron problemas. En el método "sin límites", incluí las librerías dynobj y la debuglib, pero al compilar me aparece esto:
Código:
.\dynobj.h(1): Error: Expected directive, '[' or class name but found <
> Include "dynobj";<
.\dynobj.h(1): Error: Too much text for one pair of quotations '...' to hold
> <div id="wrapper"
El signo < que está después del ; no lo puse yo, pero me aparece al compilar.
En el método "con límite máximo", pude multiplicar la Clase, pero no a los objetos que pertenece a esa clase (porque tengo pájaros grandes, pequeños, agresivos, etc., y todos pertenecen a la clase Pajaro). Al intentar multiplicar la Clase no tengo problemas, pero al multiplicar el objeto que pertenece a esa clase, al jugar la aventura me aparece esto:
Código:
[** Programming error: pájaro pequeño (object 114681) has no property create to send message **]
¿Cómo puedo hacer para multiplicar el objeto que pertenece a X clase?
Gracias.