CAAD

Comunidad de Aventuras Conversacionales y Relatos Interactivos
Fecha actual 27 Sep 2020 02:12

Todos los horarios son UTC + 1 hora




Nuevo tema Responder al tema  [ 36 mensajes ]  Ir a página Anterior  1, 2, 3  Siguiente
Autor Mensaje
 Asunto: Re: Hola
NotaPublicado: 07 Dic 2011 23:29 
Desconectado
xyzzy

Registrado: 09 Mar 2004 22:50
Mensajes: 9150
KRIVUS escribió:
Ya explique que soy nuevo asi que, ¿que diferencia hay entre programación orientada a objetos o programación basada en reglas mediante lenguaje natural?



Código inform por objetos:
Código:
Object -> ataud "ataud"
with name 'ataud' 'feretro',
adjectives 'pino',
description
"Una sencilla caja de pino.",
before [;
Open: if (Elementos_poseidos < 4)
"Necesito cuatro cosas antes de poner fin a la ~vida~ del vampiro.
A saber: un crucifijo, una ristra de ajos, una
estaca afilada y un martillo.";
deadflag=2; ! Ha ganado!
print "Abres el ataud. Dentro contemplas la horrible cara del
vampiro. Protegido por los ajos y el crucifijo empiezas tu
horrible tarea. Le clavas la estaca en el pecho y de un
terrible golpe de martillo la hundes en lo más profundo de
su ser. Con un grito de agonía se deshace en polvo y tú
acabas tu misión aquí.^^Por ahora...^^";
Print__Spaces(10);
"Finis.";
],
has scenery;


Código inform por reglas:

Código:
The ataud is here. The description is "Una sencilla caja de pino."
It is scenery.
Instead of opening the ataud:
if elementos poseidos is less than 4 begin;
say "Necesito cuatro cosas antes de poner fin a la 'vida' del
vampiro. A saber: un crucifijo, una ristra de ajos, una
estaca afilada y un martillo." instead;
otherwise;
say "Abres el ataud. Dentro contemplas la horrible cara del
vampiro. Protegido por los ajos y el crucifijo empiezas tu
horrible tarea. Le clavas la estaca en el pecho y de un
terrible golpe de martillo la hundes en lo más profundo de
su ser. Con un grito de agonía se deshace en polvo y tú
aThe ataud is here. The description is "Una sencilla caja de pino."
It is scenery.
Instead of opening the ataud:
if elementos poseidos is less than 4 begin;
say "Necesito cuatro cosas antes de poner fin a la 'vida' del
vampiro. A saber: un crucifijo, una ristra de ajos, una
estaca afilada y un martillo." instead;
otherwise;
say "Abres el ataud. Dentro contemplas la horrible cara del
vampiro. Protegido por los ajos y el crucifijo empiezas tu
horrible tarea. Le clavas la estaca en el pecho y de un
terrible golpe de martillo la hundes en lo más profundo de
su ser. Con un grito de agonía se deshace en polvo y tú
acabas tu misión aquí.[paragraph break]Por ahora...[paragraph break]";
end the game in victory; [* FIN DEL JUEGO]
end if;cabas tu misión aquí.[paragraph break]Por ahora...[paragraph break]";
end the game in victory; [* FIN DEL JUEGO]
end if;



Espero que te sirva de ejemplo.

Saludos y bienvenido al club. :)
Jenesis

_________________
Si la mentira tuviera color, todos seríamos daltónicos...


Arriba
 Perfil  
 
 Asunto: Re: Hola
NotaPublicado: 08 Dic 2011 00:57 
Desconectado
Yiepp
Yiepp

Registrado: 17 May 2011 16:16
Mensajes: 64
jenesis escribió:
Código inform por reglas:

Código:
The ataud is here. The description is "Una sencilla caja de pino."
It is scenery.
Instead of opening the ataud:
if elementos poseidos is less than 4 begin;
say "Necesito cuatro cosas antes de poner fin a la 'vida' del
vampiro. A saber: un crucifijo, una ristra de ajos, una
estaca afilada y un martillo." instead;
otherwise;
say "Abres el ataud. Dentro contemplas la horrible cara del
vampiro. Protegido por los ajos y el crucifijo empiezas tu
horrible tarea. Le clavas la estaca en el pecho y de un
terrible golpe de martillo la hundes en lo más profundo de
su ser. Con un grito de agonía se deshace en polvo y tú
aThe ataud is here. The description is "Una sencilla caja de pino."
It is scenery.
Instead of opening the ataud:
if elementos poseidos is less than 4 begin;
say "Necesito cuatro cosas antes de poner fin a la 'vida' del
vampiro. A saber: un crucifijo, una ristra de ajos, una
estaca afilada y un martillo." instead;
otherwise;
say "Abres el ataud. Dentro contemplas la horrible cara del
vampiro. Protegido por los ajos y el crucifijo empiezas tu
horrible tarea. Le clavas la estaca en el pecho y de un
terrible golpe de martillo la hundes en lo más profundo de
su ser. Con un grito de agonía se deshace en polvo y tú
acabas tu misión aquí.[paragraph break]Por ahora...[paragraph break]";
end the game in victory; [* FIN DEL JUEGO]
end if;cabas tu misión aquí.[paragraph break]Por ahora...[paragraph break]";
end the game in victory; [* FIN DEL JUEGO]
end if;


Como que copiaste dos veces el mismo código. Si te fijas se repiten dos veces la línea "The ataud is here. The description is [...]".

Este código lo probé y funciona:

Código:
The ataud is a scenery with description "Una sencilla caja de pino.".
The ataud is here.

Instead of opening the ataud:
   if the number of things carried by the player is less than 4:
      say "Necesito cuatro cosas antes de poner fin a la 'vida' del
      vampiro. A saber: un crucifijo, una ristra de ajos, una estaca
      afilada y un martillo." instead;
   otherwise:
      say "Abres el ataud. Dentro contemplas la horrible cara
      del vampiro. Protegido por los ajos y el crucifijo empiezas
      tu horrible tarea. Le clavas la estaca en el pecho y de un
      terrible golpe de martillo la hundes en lo más profundo de
      su ser. Con un grito de agonía se deshace en polvo y tú
      acabas tu misión aquí.
      [paragraph break]Por ahora...[paragraph break]";
      end the story finally.


Arriba
 Perfil  
 
 Asunto: Re: Hola
NotaPublicado: 08 Dic 2011 07:22 
Desconectado
xyzzy

Registrado: 09 Mar 2004 22:50
Mensajes: 9150
Matias Biato escribió:

Como que copiaste dos veces el mismo código. Si te fijas se repiten dos veces la línea "The ataud is here. The description is [...]".



Pues ni idea de cómo ocurrió, lo copié directamente del apartado "autores" del portal del CAAD, ni me fijé en su contenido.
Gracias por la observación.

_________________
Si la mentira tuviera color, todos seríamos daltónicos...


Arriba
 Perfil  
 
 Asunto: Re: Hola
NotaPublicado: 15 Dic 2011 10:12 
Desconectado
Dragón
Dragón
Avatar de Usuario

Registrado: 25 Mar 2004 00:53
Mensajes: 122
Disculpad por mi atrevimiento en entrar por este tema, pero por lo que he leído, lejos de recomendar uno u otro, si realmente el autor del hilo es un novato, no sólo de la creación de aventuras sino de la programación, Inform creo que se le va a hacer un poco cuesta arriba, porque a la dificultad "estándar" de aprender cualquier lenguaje, tiene el aprender la lógica de la programación que, todos sabemos, es como un interruptor que se dispara en tu cabeza.

Eso no quiere decir que no vaya a ser capaz, simplemente que no es lo mismo aprender un lenguaje que aprender a programar. No obstante, con esfuerzo todo sale ;)

Mi consejo definitivo y resumido ("¿porqué me pondrían siempre en las redacciones un "No sabe sintetizar" :oops: "); Sigue con Quest que no parece que tengas que pelearte con código fuente. A no ser que sepas programar, en cuyo caso, te animo a que pruebes las opciones disponibles.

Un saludo.

_________________
Un saludo de Metis Connetis :wink:


Arriba
 Perfil  
 
 Asunto: Re: Hola
NotaPublicado: 15 Dic 2011 10:45 
Desconectado
xyzzy

Registrado: 09 Mar 2004 22:50
Mensajes: 9150
Metis Connetis escribió:
Disculpad por mi atrevimiento en entrar por este tema, pero por lo que he leído, lejos de recomendar uno u otro...


Tranquilo, gracias a quienes tienen el atrevimiento de hablar, esto funciona. :)
Verás, yo no estoy recomendando nada, yo he trabajado con cinco herramientas de programación de aventuras y he terminado aventuras con tres de ellas, pero no suelo aconsejar el uso de ninguna a no ser que tenga muy claro qué es lo que el novato quiere hacer, lo que es capaz de hacer y se me pregunte directamente.

Cuando alguien elige una herramienta suele ser "para no cambiar", porque luego da mucha pereza ponerse a aprender otra y si la herramienta no alcanza las expectativas que esperamos, es todo un problema.

Pero en este hilo no se preguntaba qué herramienta usar, sino la diferencia entre dos ramas de una de ellas. Así que yo le he puesto un ejemplo del código de ambas para que lo tuviera claro. :)

_________________
Si la mentira tuviera color, todos seríamos daltónicos...


Arriba
 Perfil  
 
 Asunto: Re: Hola
NotaPublicado: 15 Dic 2011 11:51 
Desconectado
Dragón
Dragón
Avatar de Usuario

Registrado: 25 Mar 2004 00:53
Mensajes: 122
Vale, ahora la pregunta obligada;

¿cuál prefieres tú?

Si me permites hacer de pitoniso, intuyo que el Inform 7, si le has dado a Inform 6, te habrá resultado harto complejo y extraño.

Un saludo.

_________________
Un saludo de Metis Connetis :wink:


Arriba
 Perfil  
 
 Asunto: Re: Hola
NotaPublicado: 15 Dic 2011 13:14 
Desconectado
xyzzy

Registrado: 09 Mar 2004 22:50
Mensajes: 9150
Metis Connetis escribió:
Vale, ahora la pregunta obligada;

¿cuál prefieres tú?

Si me permites hacer de pitoniso, intuyo que el Inform 7, si le has dado a Inform 6, te habrá resultado harto complejo y extraño.

Un saludo.


Mi dos primeras aventuras la hice con InformATE, de la tercera saqué dos versiones, una en Visual Sintac y otra en InformATE. Mi cuarta aventura la hice con PUCK el entorno de desarrollo de AGE, y esa es la herramienta con la que estoy a punto de terminar el remake de mi segunda aventura. Y mientras no encuentre nada que se adapte más a mis gustos, esa es la herramienta que seguiré usando.

No sé nada de Inform 7 y no creo que me resultara más complejo que haber aprendido cualquiera de los otros "parsers" que he usado. Mi falta de interés por él es debida a que cuando salió, mi decisión de no usar más Inform era ya firme.

Lo que tienes que tener en cuenta es que "pros" y "contras" tienen todos, o solo quedaría uno. Yo ahora uso AGE, pero sigo recomendando Inform o Superglús a gente que me ha pedido consejo, porque he visto que eran herramientas que les eran más afines. Es cuestión de gustos y no hay más.

_________________
Si la mentira tuviera color, todos seríamos daltónicos...


Arriba
 Perfil  
 
 Asunto: Re: Hola
NotaPublicado: 15 Dic 2011 13:31 
Desconectado
Betatester
Betatester
Avatar de Usuario

Registrado: 24 Dic 2010 14:37
Mensajes: 938
KRIVUS escribió:
Ya explique que soy nuevo asi que, ¿que diferencia hay entre programación orientada a objetos o programación basada en reglas mediante lenguaje natural?


Aunque hay ejemplos de código, desde mi punto de vista la diferencia de verdad no se aprecian hasta ver un ejemplo de trabajo en marcha...

Empecemos creando un objeto con ambas aproximaciones (I6 e I7).

En OO (con I6) se trata de definir el objeto en sí con su campos:

Código:
Object -> cetro "cetro dorado"
    with
      name 'cetro',
      adjectives 'dorado',
      description  "Un cetro dorado.";


No es muy diferente de rellenar un wizard con un Quest o la tabla correspondiente de un PAWS-like.

Con reglas se trata de 'explicar' el objeto:

Código:
The cetro dorado is a thing. The description of cetro dorado is "Un cetro dorado".


I7 se ha encargado con esas dos frases de rellenar tanto el printed_name "cetro dorado" como de ponerle de 'name' "cetro" y "dorado" como palabras que el parser entenderá.

Vale ahora vamos a incorporarle una funcionalidad cetro dorado: cuando lo cogemos actualizamos una puntuación de la aventura (ni siquiera me voy a meter en cómo se actualiza la puntación).

En OO (con I6) tienes que coger el objeto en sí y dentro del mismo añadirle algo más de código:

Código:
Object -> cetro "cetro dorado"
    with
      name 'cetro',
      adjectives 'dorado',
      description  "Un cetro dorado.",
      after [;
      Take:
            IncreaseScore(self);
      ];


(Estoy suponiendo que hay alguna función de manejo de puntuación a la que se le pasa un objeto para que lo tenga en cuenta).

En orientación a reglas (con I7) el nuevo código no tienes porqué ponerlo junto al antiguo, sino donde te resulte más adecuado y sería este:

Código:
After taking cetro dorado:
     increase the score because of cetro dorado.


Donde 'increase the scrore because of (t - a thing)' es simplemente una forma de poner IncreaseScore(), pero más en la tónica de I7.

Hasta ahora no hay mucha diferencia... pero imaginemos que esto de incrementar la puntación la queremos hacer con muchos objetos, hacerlo uno a uno sería un rollazo, así que tenemos que hacer alguna clase de generalización, ¿cómo? En ambos casos crearíamos una clase 'tesoro'.

Con I6:

Código:
Class treasure;


Con I7:

Código:
Treasure is a kind o thing.


Ahora ya podemos hacer 'cetro dorado' un tesoro:

Con I6:
Código:
Treasure -> cetro "cetro dorado"
    with
      name 'cetro',
      adjectives 'dorado',
      description  "Un cetro dorado.";


Con I7:
Código:
The cetro dorado is a treasure.


¿Dónde ponemos el código de aumentar la puntación? Dado que es para todos los tesoros...

Con I6 justo en la clase tesoro:
Código:
Class treasure
with
     after [;
     Take:
            IncreaseScore(self);
     ];


Con I7 donde mejor te venga porque la sintaxis tiene que ver con la acción:
Código:
After taking a treasure:
       increase the score because of the noun.


(the noun es el equivalente al self, o sea el objeto que ha encajado en la regla)

Es decir, con OO tienes que tener algo más claro dónde va cada código, mientras que con orientación a reglas escribes lo que pasa cuando se está ejecutando determinada acción con determinados condicionantes.

Imaginemos ahora que los tesoros sólo puntuan cuando cierta maldición ha sido retirada y si no tenemos que decir que la maldición lo impide, ¿cómo se vería cambiado el código?

Con I6:
Código:
Class treasure
with
     after [;
     Take:
            if (curse_active)
                 "La maldición impide que los tesoros sean de provecho.";
            else
                 IncreaseScore(self);
     ];


Con I7 nada te impide hacer el código igual, osea:
Código:
After taking a treasure:
       if curse is active:
           say "La maldición impide que los tesoros sean de provecho.";
       otherwise:
           increase the score because of the noun.


Pero la forma 'lógica' de hacerlo con orientación a reglas es:
Código:
After taking a treasure:
       increase the score because of the noun.

After taking a treasure when the curse is active:
      say "La maldición impide que los tesoros sean de provecho.".


Como ves el 'resultado' de las dos acciones según las circunstancias están 'separadas'. Supongamos ahora que además, la forma de puntuar depende de si la princesa ha sido rescatada o no, tanto que incluso preferimos usar una función diferente.

Con I6 sería:
Código:
Class treasure
with
     after [;
     Take:
            if (curse_active)
                 "La maldición impide que los tesoros sean de provecho.";
            else if (princess_saved):
                 IncreaseScoreAfterPrincess(self);
            else
                 IncreaseScore(self);
     ];


Con I7 añadiríamos una regla:
Código:
After taking a treasure when the princess is saved:
     increase score after princess because of the noun.


Ahora supongamos que hay un tesoro especial, al que no le afecta la maldición, pero sí el haber salvado la princesa, ¿cómo codificamos esto?

Con I6:
Código:
Treasure-> caliz "cáliz"
    with
      name 'caliz',
      description  "El cáliz sagrado.",
      after [;
      Take:
             if (princess_saved):
                 IncreaseScoreAfterPrincess(self);
            else
                 IncreaseScore(self);
      ];


Con I7:
Código:
The caliz is a treasure.

After taking caliz when the curse is active:
     increase the score because of the noun.


Es decir, en este punto la diferencia es total. Con la OO de I6 para un comportamiento particular de objeto o subclase tenemos que replicar todo el código completo de la acción, cambiando lo necesario, con la orientación a reglas de I7 lo que codificamos es el caso diferente en sí.

(y no estoy explicando la definición de 'adjetivos' que permiten en la orientación a reglas sustituir en el matching de reglas una secuencia compleja de condicionales de la aproximación OO de I6, con cosas como:

After taking a light golden treasure when the curse is active...

O modificadores más complejos como:

After taking a treasure which have been carried by the ogre...

O incluso cuantificadores como estos...

After taking a treasure when there is three enemies which can see the treasure...
)

Desde mi punto de vista cuanto más complejo es el comportamiento y sobre todo cuántas más excepciones tienes que considerar mejor resulta la orientación a reglas (y dado que soy de los que cree que esto va de excepciones y no de comportamientos generales, es evidente que prefiero la orientación a reglas).


Arriba
 Perfil  
 
 Asunto: Re: Hola
NotaPublicado: 15 Dic 2011 13:49 
Desconectado
Dragón
Dragón
Avatar de Usuario

Registrado: 25 Mar 2004 00:53
Mensajes: 122
El AGE tiene buena pinta en verdad, pero es como programar en un nuevo sistema.

Visualmente es una gozada, y el poder añadir objetos a simples clicks suena maravilloso.

Ojalá alguien hiciera una herramienta así de visual para Inform.

Una pregunta más personal; ¿porqué abandonaste Inform?

_________________
Un saludo de Metis Connetis :wink:


Arriba
 Perfil  
 
 Asunto: Re: Hola
NotaPublicado: 15 Dic 2011 14:01 
Desconectado
xyzzy

Registrado: 09 Mar 2004 22:50
Mensajes: 9150
Metis Connetis escribió:
El AGE tiene buena pinta en verdad, pero es como programar en un nuevo sistema.

Visualmente es una gozada, y el poder añadir objetos a simples clicks suena maravilloso.

Ojalá alguien hiciera una herramienta así de visual para Inform.

Una pregunta más personal; ¿porqué abandonaste Inform?


Bueno, quiero avisarte que hay que ver todos los capítulos del tutorial.
Age no es tan simple como parece en un principio parece y el tutorial termina justo cuando empieza la dificultad. De hecho considero a AGE la herramienta más difícil de todas los que he manejado, pero también es la única con la que he conseguido hacer todo lo que me he propuesto. Y esa es la razón de que abandonara Inform.

Con esto no quiere decir que con Inform o con cualquier otro lenguaje no se pueda hacer lo que yo quiero, es simplemente que yo no encontraba el modo y eso era muy frustrante para mí. Con AGE también tengo mis "pataletas" y si no que le pregunten a su desarrollador, pero por ahora con más o menos esfuerzo he conseguido resolver todos los problemas que se me han planteado y aquí sigo. :)

_________________
Si la mentira tuviera color, todos seríamos daltónicos...


Arriba
 Perfil  
 
 Asunto: Re: Hola
NotaPublicado: 15 Dic 2011 14:56 
Desconectado
Implementador
Implementador

Registrado: 13 Feb 2005 18:57
Mensajes: 1957
Johan Paz escribió:
Código:
Treasure is a kind o thing.


Una pequeña errata que he notado, siendo inexperto en i7 (espero que no sea un dialecto de Alabama admitido por i7 :P)*

is a kind of thing

0.02
*Perdón por el chiste malo.


Arriba
 Perfil  
 
 Asunto: Re: Hola
NotaPublicado: 15 Dic 2011 15:26 
Desconectado
Grafista
Grafista
Avatar de Usuario

Registrado: 18 Dic 2007 20:36
Mensajes: 744
Metis Connetis escribió:
El AGE tiene buena pinta en verdad, pero es como programar en un nuevo sistema.

Visualmente es una gozada, y el poder añadir objetos a simples clicks suena maravilloso.

Ojalá alguien hiciera una herramienta así de visual para Inform.

Una pregunta más personal; ¿porqué abandonaste Inform?


Se hizo.

Se llamaba Jhinform7.

Pero debido al nulo interés en ella, abandoné el proyecto...

Solamente con que una o dos personas se hubiesen interesado.
Estoy seguro de que hoy todo el mundo haría aventuras en ese sistema, porque integraba la potencia de Inform7, ya que se generaba código para este parser, y también incluía la facilidad de uso de Quest, sistema en el que se basaba su IDE.

Pero... a nadie interesó... :roll: :roll: :roll:
De modo que quedó en un semi-vaporware, porque SALOON, se desarrolló casi integramente con Jhinform7.


Arriba
 Perfil  
 
 Asunto: Re: Hola
NotaPublicado: 15 Dic 2011 16:18 
Desconectado
Dragón
Dragón
Avatar de Usuario

Registrado: 25 Mar 2004 00:53
Mensajes: 122
No tenía ni idea, es normal abandonar un proyecto de una magnitud tan grande si no se tiene apoyo total de la comunidad.

Yo no haría algo tan bestia, yo con tal de realizar atajos de código para crear objetos y habitaciones con sus correspondientes propiedades y dedicarte principalmente a poner descripciones y a generar la matraca ya sería feliz.

El AGE requiere programación en java, ¿no?.

_________________
Un saludo de Metis Connetis :wink:


Arriba
 Perfil  
 
 Asunto: Re: Hola
NotaPublicado: 15 Dic 2011 16:28 
Desconectado
Betatester
Betatester
Avatar de Usuario

Registrado: 23 Mar 2010 20:11
Mensajes: 1141
Ubicación: Valencia
Metis Connetis escribió:
El AGE requiere programación en java, ¿no?.


BeanShell, que es parecido.

Metis Connetis escribió:
Yo no haría algo tan bestia, yo con tal de realizar atajos de código para crear objetos y habitaciones con sus correspondientes propiedades y dedicarte principalmente a poner descripciones y a generar la matraca ya sería feliz.


Inferno te podría servir para las definiciones básicas. Los comportamientos complejos los deberías programar.

_________________
El humor existe para recordarnos que por muy alto que sea el trono en el que uno se siente, todo el mundo usa su culo para sentarse.


Arriba
 Perfil  
 
 Asunto: Re: Hola
NotaPublicado: 15 Dic 2011 16:34 
Desconectado
Dragón
Dragón
Avatar de Usuario

Registrado: 18 May 2011 15:56
Mensajes: 124
Ubicación: Zaragoza
Metis Connetis escribió:
(..)

El AGE requiere programación en java, ¿no?.


En realidad se programa en BeanShell, un lenguaje interpretado muy parecido a java. Es más flexible a la hora de definir variables y tiene sus idiosincrasias. También puedes utilizar código java y por ello tener toda la potencia de java y sus librerías. En la documentación de AGE hay un capítulo sobre BeanShell por si quieres echarle un ojo.

Pero como dice jenesis: más potencia suele implicar más dificultad... Lo importante es encontrar la herramienta con la que te encuentres cómodo.

Un saludo.

_________________
Código:
    ___
  |/___\|   "Arto a la Guardia Siví!!!"
   qºLºp
    (-)


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

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