CAAD
http://foro.caad.es/

[i7] Duda: código en objeto
http://foro.caad.es/viewtopic.php?f=12&t=5917
Página 1 de 1

Autor:  Phil Spectrum [ 10 Oct 2015 03:57 ]
Asunto:  [i7] Duda: código en objeto

Estoy tratando de hacer que el parser pida un código (alfanumérico) cuando utilizo un objeto y en función del mismo haga una acción en el juego. Tras una charla con n-n en la que me mostró un poco del código de BYOD he deducido que la mejor forma de tratar esto en i7 es utilizando tablas y he probado algunas cosas que me han funcionado parcialmente, pero sin llegar a conseguir del todo lo que me propongo.

No quiero hacer spoilers de mi propia aventura, así que para poder explicar lo que pretendo voy a suponer la aplicación de esto en... por ejemplo una caja fuerte:

Código:
>abrir caja fuerte

Escribe el código:
>87B391

*Click*


Pongamos que detrás de esto habría un código con una tabla tal que así:

Código:
Table of caja fuerte
 Topic   Action
"87B391"   open


Y en un instead cogería el texto introducido, lo compararía con la tabla y aplicaría la acción, pero esta es la parte que (por el momento) se me escapa.

También puede que haya una forma más sencilla que no haya tenido en cuenta, pero vistas las opciones hasta ahora creo que es la que mejor se adapta a lo que trato de hacer (no se si me estaré metiendo en camisa de once varas...)

Muchas gracias!

Autor:  n-n [ 10 Oct 2015 09:03 ]
Asunto:  Re: [i7] Duda: código en objeto

Si el código tiene ese formato (un solo topic de longitud <=9 y sin espacios) yo no pondría un prompt específico para introducirlo, porque supone crear un caso especial en el parser y rechazar el comando.

Puedes crear una acción typing con formato "teclear [text] en [thing]" o similar.

En la regla carry out pondrías el caso en el que fallas, dirías "no pasa nada" y podrías incrementar un contador de intentos, por ejemplo.

Y luego, en una regla "Instead of typing a topic listed in the Table of caja fuerte", pones los casos relevantes. Si la tabla tiene una sola fila la abrirías directamente (reiniciando el contador de errores), pero si tuvieras el típico " código de coacción", que abre la caja avisando en secreto a la policía, tendrías que validar el "action entry" de la fila dentro del bloque, si es open, say "*Click*", y en el else, el resto de la lógica.

Autor:  Phil Spectrum [ 10 Oct 2015 13:09 ]
Asunto:  Re: [i7] Duda: código en objeto

Gracias de nuevo n-n.

Hasta ahora, lo más semejante que encuentro a lo que busco lo he visto en este post de infiction: http://www.intfiction.org/forum/viewtopic.php?f=7&t=2578&p=17786#p17786

Voy a intentar hacerlo de las dos maneras, a ver cual de ellas me parece finalmente más correcta para lo que busco. De entrada por el momento lo que te decía en #caad, las tablas en i7 me parecen un recurso tremendamente malo cuya utilización prefiero desechar siempre que me sea posible, pero bueno, todo es ponerse y verle las posibilidades, a lo mejor al tiempo de familiarizarse con ello ya no resulta tan odioso.

Autor:  n-n [ 11 Oct 2015 12:55 ]
Asunto:  Re: [i7] Duda: código en objeto

Mira, una pequeña prueba que he hecho, sin tablas:

Código:
"La caja" (in Spanish)

When play begins:
   say "Trepas el muro exterior del chalet y... no pasa nada. Tu contacto dentro de la casa ha desactivado la alarma. Las luces están apagadas y el silencio es total. Cruzas rápidamente el jardín y entras por la ventana del despacho, donde te espera la caja fuerte.".
   
El Despacho is a room. The description is "El despacho del testaferro ocupa la esquina noroeste del chalet.".

La linterna is a thing. It is carried.

La caja fuerte is a thing. "Puedes ver la caja fuerte que te ha traído hasta aquí.". The description is "Está incrustada en la pared. La puerta es una superficie de metal con acabado mate y un teclado en el centro.". Understand "caja" or "puerta" or "teclado" as la caja fuerte. It is in el Despacho.

Typing on is an action applying to one visible thing and one topic. Understand "teclear en [thing] [text]" or "teclea en [thing] [text]" as typing on. Understand "teclear [text] en [thing]" or "teclea [text] en [thing]" as typing on (with nouns reversed).


Carry out typing on something that is not la caja fuerte:
   say "Tamborileas con los dedos sobre [the noun] durante unos segundos.".


Carry out typing on la caja fuerte:
   if the topic understood matches "C44DR00LZ":
      say "*Click*[paragraph break]";
   else:
      say "No pasa nada.".

   
Test me with "teclear 123 en linterna/ teclear en caja 123/ teclear C44DR00LZ en caja"


Resultado:
Citar:
>test me
(Testing.)

>[1] teclear 123 en linterna
Tamborileas con los dedos sobre la linterna durante unos segundos.

>[2] teclear en caja 123
No pasa nada.

>[3] teclear c44dr00lz en caja
*Click*


Página 1 de 1 Todos los horarios son UTC + 1 hora
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/