CAAD

Comunidad de Aventuras Conversacionales y Relatos Interactivos
Fecha actual 08 Ago 2020 04:46

Todos los horarios son UTC + 1 hora




Nuevo tema Responder al tema  [ 6 mensajes ] 
Autor Mensaje
NotaPublicado: 31 Dic 2006 18:55 
Desconectado
Implementador
Implementador
Avatar de Usuario

Registrado: 10 Mar 2004 11:58
Mensajes: 1817
Ubicación: Madrid
Trasteando con la librería PNJ movil, como tengo muchas puertas iguales, en lugar de repetir código idéntico en el pnj_abrir de cada puerta, pretendo direccionarlo todo a la función pasopuertas. De tal forma:

Código:
Object una_de_tantas_puertas "" loc_3
!(...)
pnj_abrir [quien;
       pasoporpuertas (quien, self);
      ],
!(...)
has femenino  estatica ~abierta abrible puerta;

le paso los argumentos de "quien" y "self", a la función:

Código:
[pasoporpuertas quePNJ quepuerta;
if (quepuerta has abierta) {
      !Si la puerta está abierta,
      !cualquiera puede pasar a su través.
      if (PruebaDeAlcance(quePNJ))
        "",(_El) quePNJ, " se marcha por ", (el) quepuerta,".";
      if (PruebaDeAlcance(self))
        "", (_El) quePNJ, " llega a través ", (del) quepuerta,".";
      return 2;
      !Esto indica que se puede pasar libremente.
       }
       else {
      if (PruebaDeAlcance(quepuerta)) !Si es visible la puerta
      {
          if (PruebaDeAlcance(quePNJ)) ! Y es visible el PNJ
             print (_El) quePNJ, " abre ",(el) quepuerta,", marchándose por ella y cerrándola tras de sí.";
          else ! El PNJ está al otro lado de la puerta
         print (_El) quepuerta," se abre de pronto y ", (el) quePNJ, " llega desde ella,
             cerrándola de nuevo.^";
      }
      rtrue;
          }
      ];


El problema es que la función pnj_abrir debe devolver el valor 2 (return 2) cuando una puerta está abierta, pero como el código lo he llevado a la "sub"función pasoporpuertas, la que devuelve el valor 2 es mismamente pasoporpuertas.

¿Cómo podría hacer para que pnj_abrir recogiera el valor "2" que devuelve la función pasoporpuertas para que a su vez devolviera ese valor, que sería lo correcto para que funcionara la librería PNJmovil?

Tal como está ahora, los PNJ móviles no pasan por puertas abiertas (ni cerradas), sale el mensaje de "el PNJ se marcha por la puerta sur" o "el PNJ abre la puerta sur y se marcha por ella", pero realmente el PNJ no se mueve de la localidad al no haber devuelto pnj_abrir el valor adecuado.

gracias

_________________
_/ /\ R e \_


Arriba
 Perfil  
 
NotaPublicado: 31 Dic 2006 23:25 
Desconectado
Grafista
Grafista
Avatar de Usuario

Registrado: 15 Ene 2005 22:26
Mensajes: 780
que tal esto?


Código:
Object una_de_tantas_puertas "" loc_3
!(...)
pnj_abrir [quien;
       return pasoporpuertas (quien, self);
      ],
!(...)
has femenino  estatica ~abierta abrible puerta;

_________________
INFSP7 - Canal de Noticias INFSP

Porque donde está tu tesoro, allí también estará tu corazón.


Arriba
 Perfil  
 
 Asunto: return
NotaPublicado: 01 Ene 2007 16:04 
Desconectado
Semimomio
Semimomio
Avatar de Usuario

Registrado: 23 Abr 2004 08:49
Mensajes: 2966
Ubicación: España (Galicia)
Hola !

Yo dudo entre si es tan simple como parece o no, pero creo que la respuesta de Sarganar es sin duda la correcta, si he entendido bien lo que preguntas.

De todas formas, en lugar de crear una función individual, yo la metería en la clase Puerta, y haría que cada puerta derivara de ella.

Código:
Puerta una_de_tantas_puertas
with
! más cosas ...
;


Ya puestos, la renombraría como pnj_abrir, y entonces ya no tendrías que añadir ningún código en ninguna puerta, sólo crearlas. símplemente, a no ser que alguna de ellas vaya a tener un comportamiento especial.

Salud !

Baltasar

_________________
-- Baltasar, el arquero


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 01 Ene 2007 23:01 
Desconectado
Implementador
Implementador
Avatar de Usuario

Registrado: 10 Mar 2004 11:58
Mensajes: 1817
Ubicación: Madrid
Estupendo, ¡mucha gracias!

_________________
_/ /\ R e \_


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 10 Ene 2007 13:53 
Desconectado
Implementador
Implementador
Avatar de Usuario

Registrado: 07 Sep 2004 21:52
Mensajes: 1897
Yo no he entendido nada, pero...

¿No puedes crear una clase puerta nueva que tenga ese código en la propiedad pnj_abrir, sin necesidad de duplicar esa propiedad para cada puerta?

_________________
Ruber "Urbatain" Eaglenest.
------------------------
http://www.indieorama.com/author/rubereaglenest/


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 12 Ene 2007 17:34 
Desconectado
Implementador
Implementador
Avatar de Usuario

Registrado: 10 Mar 2004 11:58
Mensajes: 1817
Ubicación: Madrid
También. Es que hacía mucho tiempo que no programaba y estaba totalmente espeso cuando lancé la pregunta.
Pero estos días he estado programando y repasando códigos y creo que ya he recuperado los conocimientos :). Gracias.

Urbatain escribió:
Yo no he entendido nada, pero...

¿No puedes crear una clase puerta nueva que tenga ese código en la propiedad pnj_abrir, sin necesidad de duplicar esa propiedad para cada puerta?

_________________
_/ /\ R e \_


Arriba
 Perfil  
 
Mostrar mensajes previos:  Ordenar por  
Nuevo tema Responder al tema  [ 6 mensajes ] 

Todos los horarios son UTC + 1 hora


¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 5 invitados


No puede abrir nuevos temas en este Foro
No puede responder a temas en este Foro
No puede editar sus mensajes en este Foro
No puede borrar sus mensajes en este Foro

Buscar:
Saltar a:  
cron
Desarrollado por phpBB® Forum Software © phpBB Group
Traducción al español por Huan Manwë para phpBB-Es.COM