CAAD

Comunidad de Aventuras Conversacionales y Relatos Interactivos
Fecha actual 27 Jun 2019 03:35

Todos los horarios son UTC + 1 hora




Nuevo tema Responder al tema  [ 6 mensajes ] 
Autor Mensaje
NotaPublicado: 28 Feb 2009 01:04 
Desconectado
Grafista
Grafista
Avatar de Usuario

Registrado: 04 Sep 2008 17:23
Mensajes: 734
Hola a todos.

Una vez más tengo una duda básica sobre programación con
Inform6 y tal vez sea algo que ya se haya comentado muchas veces
en los foros del caad, o en algún otro lugar. Pero no he encontrado
nada --quizá porque no sepa cómo buscarlo--, así que me temo que
no me queda más remedio que pediros ayuda otra vez. Espero no
estar siendo muy pesado.

Me preguntaba cómo se pueden listar los nombres de los objetos
contenidos, o bien, colocados sobre, otro objeto en su
descripción.
Quiero decir, cuando se imprime la descripción de una localidad, si
hay un objeto 'supporter' con otros objetos colocados sobre él, se
imprime el mensaje "sobre la mesa ves un plato, una cuchara y un
trozo de pan". ¿Cómo se puede hacer para que, al examinar la
mesa, se imprima este mismo listado?

He intentado comprender la implementación de IFSp.Spanish.h
pero no he logrado hacer que funcione en mi propio código.

Código:
Object   escritorio "escritorio" nombre_localizacion
 with   name 'escritorio' 'mesa',
   adjectives 'madera' 'oscura' 'oscuro',
   description [;
       print "Un gran escritorio de madera oscura y aspecto antiguo sobre
      el que puedes ver ";
         WriteListFrom(self,
                    ENGLISH_BIT + WORKFLAG_BIT + RECURSE_BIT
                    + PARTINV_BIT + TERSE_BIT + CONCEAL_BIT);
       ".";
   ],
 has   scenery enterable supporter;


También me preguntaba cómo se puede saber si hay objetos sobre
el objeto en cuestión o si no hay nada, para imprimir el mensaje
"sobre el que no hay ninguna cosa" oportuno.

Muchas gracias por escucharme.


Última edición por Makinaimo el 13 Abr 2009 17:18, editado 1 vez en total

Arriba
 Perfil  
 
 Asunto: Lo encontré
NotaPublicado: 28 Feb 2009 19:56 
Desconectado
Grafista
Grafista
Avatar de Usuario

Registrado: 04 Sep 2008 17:23
Mensajes: 734
Hola. Ya he econtrado las intrucciones del uso de "WriteListFrom( )"
en http://www.inform-fiction.org/manual/html/s27.html .
Tengo que aprender a juntar el valor para pelear con el inglés, antes
de pedir ayuda en los foros.

En cualquier caso, gracias por estar ahí. Un saludo.


Arriba
 Perfil  
 
NotaPublicado: 01 Mar 2009 14:07 
Desconectado
Semimomio
Semimomio
Avatar de Usuario

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

Makinaimo escribió:
Una vez más tengo una duda básica sobre programación con
Inform6 y tal vez sea algo que ya se haya comentado muchas veces
en los foros del caad, o en algún otro lugar. Pero no he encontrado
nada --quizá porque no sepa cómo buscarlo--, así que me temo que
no me queda más remedio que pediros ayuda otra vez. Espero no
estar siendo muy pesado.
Me preguntaba cómo se pueden listar los nombres de los objetos
contenidos, o bien, colocados sobre, otro objeto en su
descripción.


Pues a mi me parece que este es el lugar más adecuado.
Es más, me parece fantástico que hayaalguien programando aenturas, y a ver si con las preguntas a la gente se le abre el gusanillo.

Pero te has ido como un poseso a por la librería de Inform, aunque se puede hacer perfectamente sin ella. Afortunadamente, WriteListFrom() es estándar, pero supongamos que no lo fuera para aprender un poco más (relacionado con lo que preguntabas más tarde).

Código:
Object   escritorio "escritorio" nombre_localizacion
 with   name 'escritorio' 'mesa',
   adjectives 'madera' 'oscura' 'oscuro',
   description [obj;
       print "Un gran escritorio de madera oscura y aspecto antiguo";
                    obj=child(self);
                    if ( obj == Nothing ) {
                          print ".^";
                          rtrue;
                    } else {
                          while( obj ~= Nothing ) {
                              print ", sobre el que puedes ver:^";
                              print "  - ", (_the) obj, "^";
         
                              obj = sibling( obj );
                          }
                   }
   ],
 has   scenery enterable supporter;


Es una posibilidad. child() devuelve el primer objeto contenido en otro objeto. sibling() devuelve a su "hermano". Ambos devuelven Nothing si no existen tales objetos.

Y también tienes la posibilidad de utilizar objectloop, pero eso seguro que ya lo conoces.

Salud !

Baltasar

_________________
-- Baltasar, el arquero


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 01 Mar 2009 19:37 
Desconectado
Semimomio
Semimomio
Avatar de Usuario

Registrado: 24 Ago 2007 00:41
Mensajes: 2023
Ubicación: Chile
Esto ultimo ha sido muy didáctico e interesante objeto de estudio. Gracias Baltarsar. :)

_________________
Eliuk Blau
eliukblau (AT) gmail.com
http://www.caad.es/eliukblau/


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 06 Mar 2009 17:56 
Desconectado
Grafista
Grafista
Avatar de Usuario

Registrado: 04 Sep 2008 17:23
Mensajes: 734
¡Muchas gracias por la ayuda!

Antes de leer vuestra respuesta, había colocado una lámpara que no
se podía coger ni mover encima del escritorio, para que siempre
hubiese algo que listar en su descripción.

Seguro que al protagonista de mi aventura le alegrará saber que a
partir de ahora va a poder redecorar el piso como quiera.

En serio, me va ser muy útil para programar futuras rutinas.
¡Gracias! Un saludo.


Arriba
 Perfil  
 
 Asunto: Listar cosas.
NotaPublicado: 06 Mar 2009 22:45 
Desconectado
Semimomio
Semimomio
Avatar de Usuario

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

Makinaimo escribió:
¡Muchas gracias por la ayuda!
En serio, me va ser muy útil para programar futuras rutinas.
¡Gracias! Un saludo.


Me alegro. Aunque ten en cuenta que el código sólo está ahí con propósitos educativos, en realidad se puede hacer de una manera más sencilla todavía:

Código:
Object   escritorio "escritorio" nombre_localizacion
 with   name 'escritorio' 'mesa',
   adjectives 'madera' 'oscura' 'oscuro',
   description [;
       print "Un gran escritorio de madera oscura y aspecto antiguo. ";
      <<search self>>;
   ],
 has   scenery enterable supporter;


Primero describes lo concreto del escritorio, y después lanzas la acción search, con lo cuál el parser imprimirá después de " antiguo. " algo como "Sobre el escritorio puedes ver ...", y la lista de objetos por defecto.

Salud !

Baltasar

_________________
-- Baltasar, el arquero


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 6 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:  
Desarrollado por phpBB® Forum Software © phpBB Group
Traducción al español por Huan Manwë para phpBB-Es.COM