CAAD

Comunidad de Aventuras Conversacionales y Relatos Interactivos
Fecha actual 17 Oct 2019 07:14

Todos los horarios son UTC + 1 hora




Nuevo tema Responder al tema  [ 25 mensajes ]  Ir a página Anterior  1, 2
Autor Mensaje
 Asunto:
NotaPublicado: 23 Ene 2005 18:33 
Desconectado
Implementador
Implementador
Avatar de Usuario

Registrado: 07 Sep 2004 21:52
Mensajes: 1897
Pero KRAC, lo tí­pico de todas las gráficas es tener una opción de BUENO, HASTA LUEGO.

Chao.

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


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 23 Ene 2005 20:28 
Desconectado
Archivero
Archivero
Avatar de Usuario

Registrado: 10 Mar 2004 11:40
Mensajes: 190
Ubicación: Donde quepa
Citar:
Pero KRAC, lo tí­pico de todas las gráficas es tener una opción de BUENO, HASTA LUEGO.


Exacto, a eso me refiero; fí­jate en mi mensaje anterior:
Citar:
Quiero cambiar el sistema de conversación de manera que ésta no se interrumpa *a no ser* que el jugador seleccione la opción "Bueno, me aburro, no quiero seguir hablando contigo" (o que alguna opción tenga como consecuencia el fin de la conversación, por ejemplo, si amenazamos de muerte al PSI, y éste nos mate, o algo así­)
Pero si no, que siga hasta que se acaben las opciones.


Por cierto, tu código funciona bien, pero efectivamente tiene los problemas que nuestro misterioso anónimo señala. Es decir, que cuando quiero interrumpir la conversación tengo que desactivar a mano todos los quips. Y además, al entrar en el bucle while el contador que controla el número de la opción, éste va aumentándose sin pausa. Ejemplo:
¿Qué quieres decir?
[1] Hola
[2] Que tal
(seleccionamos 1)
>El psi dice: "hola a ti también"

¿Qué quieres decir?
[3] Que tal
[4] Me alegro de verte

Etcetera


Arriba
 Perfil  
 
NotaPublicado: 23 Ene 2005 23:52 
Aventurero_krac escribió:
Por cierto, tu código funciona bien, pero efectivamente tiene los problemas que nuestro misterioso anónimo señala. Es decir, que cuando quiero interrumpir la conversación tengo que desactivar a mano todos los quips. Y además, al entrar en el bucle while el contador que controla el número de la opción, éste va aumentándose sin pausa. Ejemplo:
¿Qué quieres decir?
[1] Hola
[2] Que tal
(seleccionamos 1)
>El psi dice: "hola a ti también"

¿Qué quieres decir?
[3] Que tal
[4] Me alegro de verte

Etcetera


Bueno, parece algo relativamente fácil de parchear:

Hagamos que la variable local z se ponga a cero antes de empezar a contar las posibles respuestas

Código:
! Listar las posibles opciones
z=0;
for (x=0: x <= self.MAXQUIP: x++) {


Con ese "z=0;" deberí­a bastar para que los números de las respuestas sean los apropiados. Y para dejar al jugador la posibilidad de salir de la conversación retoquemos un poco por las lineas que habí­a trasteado Urbatain y dejemoslas así­:

Código:
} until ((eleccion >= 0) && (eleccion <= z));
if (eleccion == 0)
"^Al final decides no decir nada.^";


Ahora permite una "opción 0" y si el jugador la elige el programa imprime la linea "Al final decides..." y ejecuta un return true que nos saca del bucle (y de toda la rutina "antes" del personaje)

Resueltos esos dos pequeños inconvenientes, seguimos sin poder salir del bucle como consecuencia de una respuesta. Por ejemplo, al probarlo con el ejemplo que viene con la librerí­a, el del tal Joe Schmoe, el bucle continua ejecutandose... ¡incluso después de que Joe te mate! Así­ que habrí­a que hacer algún otro pinzamiento. Busquemos el lugar adecuado..., ajás , serí­a donde se llama a "Respuesta", en la libre´ria original viene así­:

Código:
if (ok == eleccion) {
self.Respuesta(x);
} ! Acabamos si es la correcta


Y serí­a cuestión de meter enmedio un bloque de código que lo sacase del bucle si se cumple cualquier determinada condición que el programador, en este caso tú :-) , haya decidido de antemano, exactamente después de la llamada a Respuesta(x) :

Código:
if (ok == eleccion) {
self.Respuesta(x);

!!!! Aquí­ vendrí­a esa comprobación
!!!! que, de cumplirse, nos echarí­a del
!!!! bucle con un "rtrue", algo parecido a
!!!!
!!!! if (mi_condicion==true) rtrue;
!!!!
!!!! o lo que se nos ocurra

} ! Acabamos si es la correcta


Cual serí­a esa condición y cómo y cuando se activa/desactiva ya es una completa decisión personal del autor. El otro dí­a poní­a el ejemplo con una hipotética variable local llamada "mi_condicion", pero esa es tan sólo una de las infinitas maniobras posibles. En cualquier caso, siempre será más sencillo y directo manipular una sola variable que tener forzosamente que desactivar todos los quips manualmente (y luego tener que volverlos a poner si hay que volver a hablar con el personaje ^_^'')

De momento, probandolo con el ejemplo este de la libreria parece que funciona sin sustos mayores (aunque ya sabes... XDD)


Arriba
  
 
 Asunto:
NotaPublicado: 24 Ene 2005 00:20 
Desconectado
Semimomio
Semimomio
Avatar de Usuario

Registrado: 15 Dic 2004 21:28
Mensajes: 2302
Ahora lo interesante serí­a incluir todas esas modificaciones de una manera configurable y publicar una nueva versión de la librerí­a con esas mejoras de modo que no sólo se utilizaran en la aventura de krac sino que pudieran aprovecharse en cualquiera.


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 24 Ene 2005 01:18 
Desconectado
xyzzy

Registrado: 09 Mar 2004 22:50
Mensajes: 9150
presi escribió:
Ahora lo interesante serí­a incluir todas esas modificaciones de una manera configurable y publicar una nueva versión de la librerí­a con esas mejoras de modo que no sólo se utilizaran en la aventura de krac sino que pudieran aprovecharse en cualquiera.


Eso, eso y con licencia gpl :))
Sip, cierto esto de las patentes de software me está hipersensibilizando con el tema de las licencias, pero es que mola el código abierto y compartirlo mola aún más. ;)

Ah y me rindo, no sé quien es el invitado, ale.
Def sonrie siempre derecho, rml gasta muchas interjecciones, Zak no sonrí­e siempre torcido y balta no explica así­ las cosas... xDDD
Nah, que no caigo en quién puede ser, solo sé que nos conoce y que no es nuevo. ;PPP

Saludos
Jenesis


Arriba
 Perfil  
 
NotaPublicado: 24 Ene 2005 02:14 
Lo primero que decí­a Krac era cambiar (o eliminar totalmente el mensaje incial de la conversación) asi que se añadirí­a la propiedad mensaje a la clase Personaje con el mensaje por defecto:

Código:
mensaje "¿Qué quieres decir?^^",


se cambiarí­a la impresión del mensaje en la librerí­a original:

Código:
print "¿Qué quieres decir?^^";


por:

Código:
if (metaclass(self.mensaje)==Routine)
     self.mensaje();
else print (string) self.mensaje;


De este modo podemos declarar un texto o una rutina que puede hacer cualquier cosa.

Lo siguiente es controlar con la propiedad repetir si queremos que se repita una y otra vez el diálogo o que el comportamiento sea el normal:

Código:
repetir false,


Esta serí­a la propiedad, desactivada la repetición por defecto y a continución una nueva condición justo antes de terminar el bucle:

Código:
  if (self.repetir==false) rtrue;
}


Así­ añadimos estas nuevas caracterí­sticas manteniendo la compatibilidad hacia atrás con las aventuras que ya hacen uso de esta librerí­a.


Arriba
  
 
 Asunto:
NotaPublicado: 24 Ene 2005 10:01 
Desconectado
Betatester
Betatester
Avatar de Usuario

Registrado: 22 Sep 2004 09:33
Mensajes: 1100
jenesis escribió:

Ah y me rindo, no sé quien es el invitado, ale.
Def sonrie siempre derecho, rml gasta muchas interjecciones, Zak no sonrí­e siempre torcido y balta no explica así­ las cosas... xDDD
Nah, que no caigo en quién puede ser, solo sé que nos conoce y que no es nuevo. ;PPP


Creo que haces bien en rendirte :)

Si nuestro "profesor" quiere impartir estas lecciones magistrales de manera anónima, sus razones tendrá, y creo que si le acorralamos, tal vez opte por dejar de escribir :?

Así­ que agradecer a nuestro anónimo sus lecciones, y esperar que esté entre nosotros mucho tiempo :P

Saludetes
Mapache


Arriba
 Perfil  
 
NotaPublicado: 24 Ene 2005 12:26 
Desconectado
Semimomio
Semimomio
Avatar de Usuario

Registrado: 23 Abr 2004 08:49
Mensajes: 2918
Ubicación: España (Galicia)
jenesis escribió:
Ah y me rindo, no sé quien es el invitado, ale.
[...] y balta no explica así­ las cosas... xDDD


Además de que no acostumbra a esconderse detrás de pseudónimo ni tiene reparo en reconocer que no ha manejado nunca, ni conoce, la ahora tan manoseada librerí­a. :-D

Léase todo esto con buen humor. :-P

Salud !
Baltasar

_________________
-- Baltasar, el arquero


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 24 Ene 2005 15:05 
Desconectado
Implementador
Implementador
Avatar de Usuario

Registrado: 07 Sep 2004 21:52
Mensajes: 1897
Pero el return true que saca del bucle cuando lo decide el jugador o cuando al programador le conviene puede ser programado con la misma variable booleana. La activamos, lo comprobamos y salimos. Lo digo pa que sea más eficiente.

Por cierto, con los cambios correctos hechos... poned un mensaje con todo ese código definitivo y trataré de hacerlo configurable. Aunque al final... no hay nada que configurar!!! Lo que se ha hecho es mejorar notablemente la librerí­a.

Chao.

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


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 24 Ene 2005 15:20 
Desconectado
Semimomio
Semimomio
Avatar de Usuario

Registrado: 15 Dic 2004 21:28
Mensajes: 2302
Urbatain escribió:
Por cierto, con los cambios correctos hechos... poned un mensaje con todo ese código definitivo y trataré de hacerlo configurable. Aunque al final... no hay nada que configurar!!! Lo que se ha hecho es mejorar notablemente la librerí­a.


Si te fijas, en el último código que ha enviado el "maestro" define las propiedades "mensaje" y "repetir" que son precisamente las que configuran la librerí­a desde el juego.


Arriba
 Perfil  
 
Mostrar mensajes previos:  Ordenar por  
Nuevo tema Responder al tema  [ 25 mensajes ]  Ir a página Anterior  1, 2

Todos los horarios son UTC + 1 hora


¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 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