Hola, estoy dandole vueltas a la posibilidad de implentar un comando ayuda que, al lanzarlo sobre un objeto, imprima una lista de acciones recomendadas que pueden ejecutarse sobre él (o un comando USAR que sea más útil y no se limite únicamente a pedir al usuario que sea más específico):
Código:
>AYUDA ROPA
Puedes examinar, coger o vestir la ropa.
> USA ROPA
Piensas en diferentes usos pero no te decides por una acción concreta. Podrías examinar, coger o vestir la ropa.
Me gustaría que las acciones que se impriman en ese listado fuesen contextuales; todos los objetos deberían poderse examinar, pero que se imprima únicamente "coger" con objetos no estáticos y que no estén ya en el inventario del jugador (en caso contrario se imprimiría "dejar" en vez de "coger"), "vestir" sólo para objetos "vestibles" que no lleve puesto el jugador (en caso contrario se imprimiría "desvestir"), "comer" sólo para comestibles, "abrir"/"cerrar" sólo para abribles...
Además, hay objetos para los que se deberían imprimir otras acciones contempladas por el autor, pero que no se podrían inferir automáticamente; por ejemplo, si fuese interesante prender fuego a la ropa como parte de algún puzzle:
Código:
> AYUDA ROPA
Puedes examinar, coger, vestir o quemar la ropa.
En este caso, tal vez lo más cómodo fuese definir una propiedad nueva en el objeto "ropa", y dentro de esta propiedad añadir un array con las acciones recomendadas:
Código:
Object -> ropa "ropa"
with acciones_recomendadas ##Examine ##Take ##Wear ##Burn,
[...]
has female clothing;
En este caso, la rutina que controla la acción "ayuda" comprobaría si el objeto (noun) tiene definida un "acciones_recomendadas"; si no es así imprimiría un listado automático de acciones básicas, en el otro caso usaría el array de acciones recomendadas para imprimir el listado...
Mmm... ¿alguno habéis intentado hacer algo parecido alguna vez o sabéis si hay alguien que ya lo haya hecho? ¿Hay mejores formas de hacer esto? ¿Cómo se podría traducir el array "acciones_recomendadas" a un listado?