CAAD

Comunidad de Aventuras Conversacionales y Relatos Interactivos
Fecha actual 14 Oct 2019 12:09

Todos los horarios son UTC + 1 hora




Nuevo tema Responder al tema  [ 8 mensajes ] 
Autor Mensaje
 Asunto: atributos
NotaPublicado: 01 Nov 2004 14:02 
Hola. Pregunta de principiante. ¿Alguien me puede decir en qué parte del manual se explica eso de los atributos de los objetos? No lo veo muy claro.Gracias.


Arriba
  
 
NotaPublicado: 01 Nov 2004 15:03 
Desconectado
Grafista
Grafista
Avatar de Usuario

Registrado: 13 Sep 2004 21:16
Mensajes: 646
Ubicación: Alginet - València
Yo tampoco lo tení­a muy claro, pero más o menos te puedo explicar como los uso yo, igual no utilizo todo el potencial que pueden llegar a tener los atributos, pero a mi me sirve:

supongamos que tengo un objeto "Paraguas" y quiero que tenga un atributo: cerrado/abierto.

He hecho la definición de objeto tal que así­:
/6 2 1 PARAGUAS _ 00010000000000000000000000000000 00000000000000000000000000000000

o sea, en el paraguas, objeto 6, el 4º atributo lo utilizaré para implementar esta propiedad.

Supongamos que considero que cuando el paraguas esta cerrado este atributo es 0 y cuando el paraguas está abierto este atributo es 1.

Para chequear si el paraguas está cerrado (o sea, el atributo es igual a cero) utilizamos la instrucción: OZERO 6 4, es decir OZERO [Nº OBJETO] [Nº ATRIBUTO]. Esta instrucción será verdadera (y por lo tanto tirará "p'alante") cuando dicho atributo sea 0.

Si queremos cambiar el estado de un atributo utilizamos: OSET [Nº OBJETO] [Nº ATRIBUTO], para ponerlo a "1", o sea, "marcarlo". Después de hacer un OSET 6 4, la instrucción OZERO 6 4 dara como resultado falso.

Para volver a poner a 0 un atributo utilizamos OCLEAR [Nº DE OBJETO] [Nº ATRIBUTO], por ejemplo OCLEAR 6 4.

Quizá lo veas más claro con el ejemplo completo para programas cerrar y abrir un paraguas.

ABRIR PARAGUAS NOTCARR 6
WRITE "Necesitas tenerlo en tu poder."
newline
done

CERRAR PARAGUAS NOTCARR 6
WRITE "Necesitas tenerlo en tu poder."
newline
done

ABRIR PARAGUAS CARRIED 6 --> chequea si lo tenemos
OZERO 6 4 --> comp. está cerrado
WRITE "Abres el paraguas."
OSET 6 4 --> lo marca como abierto
newline
done

ABRIR PARAGUAS CARRIED 6
ONOTZERO 6 4 --> comp. está abierto
WRITE "El paraguas ya está abierto."
newline
done

CERRAR PARAGUAS carried 6
ONOTZERO 6 4
WRITE "Con un ligero PLOFF cierras el paraguas."
oclear 6 4 --> lo marca como cerrado
newline
done

CERRAR PARAGUAS carried 6
OZERO 6 4
WRITE "El paraguas ya está cerrado."
newline
done

No se si me he explicado bien... incluso no se si utilizo los atributos con todo su potencial, pero puede ser un comienzo. :wink:


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 02 Nov 2004 22:11 
Desconectado
Semimomio
Semimomio
Avatar de Usuario

Registrado: 23 Abr 2004 08:49
Mensajes: 2918
Ubicación: España (Galicia)
O, mejor todaví­a:

[code]
/OBJ
...; más cosas
/4 = objParaguas
Un paraguas
; más cosas

#define flg atrParaguasAbierto = 4

ABRIR PARAGUAS NOTCARR objParaguas
WRITE "Necesitas tenerlo en tu poder."
newline
done

CERRAR PARAGUAS NOTCARR objParaguas
WRITE "Necesitas tenerlo en tu poder."
newline
done

ABRIR PARAGUAS CARRIED objParaguas ;--> chequea si lo tenemos
OZERO objParaguas atrParaguasAbierto ;--> comp. está cerrado
WRITE "Abres el paraguas."
OSET objParaguas atrParaguasAbierto ;--> lo marca como abierto
newline
done

ABRIR PARAGUAS CARRIED objParaguas
ONOTZERO objParaguas atrParaguasAbierto --> comp. está abierto
WRITE "El paraguas ya está abierto."
newline
done
; ... etc.
done[/code]

Más fácil, ¿o no?

Salud !

_________________
-- Baltasar, el arquero


Arriba
 Perfil  
 
NotaPublicado: 03 Nov 2004 00:08 
Desconectado
Grafista
Grafista
Avatar de Usuario

Registrado: 13 Sep 2004 21:16
Mensajes: 646
Ubicación: Alginet - València
Definitivamente me tendré que decidir a utilizar el txtPaws y las definiciones... sobretodo si pierdo la hoja donde tengo apuntado para que utilizo cada bandera!!! :D

_________________
Dwalin


Arriba
 Perfil  
 
NotaPublicado: 03 Nov 2004 09:50 
Desconectado
Semimomio
Semimomio
Avatar de Usuario

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

[quote]
Definitivamente me tendré que decidir a utilizar el txtPaws y las definiciones... sobretodo si pierdo la hoja donde tengo apuntado para que utilizo cada bandera!!!
[/quote]

Ese es el objetivo, precisamente, de txtPAWS: preprocesar un fichero en PAWS, para convertir tus nombres, tus identificadores de objetos, localidades, atributos ... etc. a los números que tienes apuntados en tu hoja.

¿Qué tengo que hacer para instalar txtPAWS?
=====================================

Absolutamente nada, si estás utilizando Superglús. Tu aventura ya está pasando por txtPAWS sin que lo sepas, lo que sucede es que no estás empleando su capacidad de sustituir identificadores, claro.

¿No es demasiado complicado?
=========================

Lo cierto es que es difí­cil de encontrar complicado. Para saber lo que tienes que saber de txtPAWS, sólo tendrás que leer la primera página del manual, titulada: "Para empezar rápidamente ..."

¿Y mi hoja de numeros?
====================

Sí­mplemente, ya no es necesaria. Y piensa que un "6" no te dirá nada si la pierdes, mientras que "objParaguas", está bastante claro. :-D

"No utilizar txtPAWS es como ver la tele sin mando a distancia, levantándote cada vez que quieres cambiar de canal o subir o bajar el volumen ... ¡y txtPAWS no gasta pilas!" ;-)

Ni qué decir tiene que txtPAWS es completamente gratuí­to, sin derechos reservados de ningún tipo.

Salud !

_________________
-- Baltasar, el arquero


Arriba
 Perfil  
 
NotaPublicado: 05 Nov 2004 14:04 
Desconectado
Momio
Momio
Avatar de Usuario

Registrado: 09 Mar 2004 16:14
Mensajes: 4645
Dwalin escribió:
Yo tampoco lo tení­a muy claro, pero más o menos te puedo explicar como los uso yo, igual no utilizo todo el potencial que pueden llegar a tener los atributos, pero a mi me sirve:

......

No se si me he explicado bien... incluso no se si utilizo los atributos con todo su potencial, pero puede ser un comienzo. :wink:



El ejemplo es perfecto Dwalin, solo mejorable por el uso de txtpaws que ha puesto Baltasar en el siguiente mensaje, creo que tienes bastante claro para que sirven los atributos :)

No obstante una recomendacion: Si puedes usa atributos a partir del 32 para tus cosas personales. Creo que en la documentacion pone algo pero en el proyecto es posible que se amplien los atributos de sistema un dia, o que la libreria de inicio use algunos otros, por lo que se 'reservaron' los atributos 0 a 15 para el sistema y 16 a 31 para la libreria.

En principio no pasa nada por usarlos, solo que quizá algun dí­a tu codigo no se pueda compilar con el ultimo superglus, solo con la version 1.0 beta 3 ;). De todas formas si te cuesta mucho no lo cambies, la verdad es que las posibilidades de que eso ocurra son remotas ahora mismo :)

En cuanto a usar en su maximo potencial, pues quiza nadie los use nunca, quiza yo mismo ni haya pensado en cuales son los posibles potenciales de dicha opcion, siempre hay alguien que te sorprende utilizando una horquilla para abrir una puerta, aunque ese no sea su uso habitual :D

Quiza lo que mas veo como posibilidad es realizar acciones 'genericas' sobre objetos basandose en atributos. Por ejemplo poner ordenes ABRIR _ y CERRAR _ que dependiendo de si el objeto es abrible o no (ese seria un atirbuto "abrirble") cambie el estado de abierto o no (ese seria otro atributo "abierto"). Lo mismo con cosas 'doblables', 'rompibles', etc. Incluso podria añadirse un "(roto)" en el listado de objetos con algun otro truquillo que se me ocurre que no voy a contar aqui para no extenderme (a no ser que preguntéis)

Otra cosa es que determinadas acciones o sucesos se puedan realizar u ocurrir con objetos de un determinado tipo, en lugar de con un objeto concreto. Esto son cosas como que se hunda un ascensor si llevas algun objeto con el atributo (definido por ti) de 'pesado', que no puedas pasar por una grieta estrecha si llevas algun objeto 'grande', que necesites algun objeto 'cortante' para cortar una cuerda, etc.

_________________
Sígueme en twitter: @uto_dev
http://www.ngpaws.com


Arriba
 Perfil  
 
NotaPublicado: 07 Nov 2004 16:21 
Desconectado
Grafista
Grafista
Avatar de Usuario

Registrado: 13 Sep 2004 21:16
Mensajes: 646
Ubicación: Alginet - València
Uto escribió:
Quiza lo que mas veo como posibilidad es realizar acciones 'genericas' sobre objetos basandose en atributos. Por ejemplo poner ordenes ABRIR _ y CERRAR _ que dependiendo de si el objeto es abrible o no (ese seria un atirbuto "abrirble") cambie el estado de abierto o no (ese seria otro atributo "abierto"). Lo mismo con cosas 'doblables', 'rompibles', etc. Incluso podria añadirse un "(roto)" en el listado de objetos con algun otro truquillo que se me ocurre que no voy a contar aqui para no extenderme (a no ser que preguntéis)

Otra cosa es que determinadas acciones o sucesos se puedan realizar u ocurrir con objetos de un determinado tipo, en lugar de con un objeto concreto. Esto son cosas como que se hunda un ascensor si llevas algun objeto con el atributo (definido por ti) de 'pesado', que no puedas pasar por una grieta estrecha si llevas algun objeto 'grande', que necesites algun objeto 'cortante' para cortar una cuerda, etc.


Cuando he leí­do esto me parecia que ya me sonaba y me he puesto a buscar por mi desastre-cajón hasta encontrar las instrucciones originales de Chichen Itza), donde podemos leer:
Continúa el mismo sistema de tratamiento de objetos, donde el programador elige un objeto y le define todas sus caracterí­sticas, es decir, si es sólido lí­quido, si es duro o blando, si venenoso o no, su tamaño relativo, y mil más y automáticamente, el programa ya lo trata como tal. Esto es un gran avance en programación de aventuras, pues basta con definir UNA SOLA VEZ el objeto y ya se comporta exactamente como ha sido diseñado, permitiendo toda clase de manipulaciones, siempre que se haya diseñado para ellas.

Esto es si no me equivoco COPYRIGHT 1992 DINAMIC... o sea, que llevamos 12 años dándole vueltas a lo mismo :D

No, en serio... creo sinceramente que en general no aprovechamos todas las capacidades que los parsers nos ofrecen, bueno, hablo por mi, yo seguro que no!!

Gracias por lo del los atributos... si consigo superar la tremenda pereza de modificar código le hecharé un ojo! :wink:

_________________
Dwalin


Arriba
 Perfil  
 
NotaPublicado: 07 Nov 2004 16:45 
Desconectado
Momio
Momio
Avatar de Usuario

Registrado: 09 Mar 2004 16:14
Mensajes: 4645
Dwalin escribió:
Esto es si no me equivoco COPYRIGHT 1992 DINAMIC... o sea, que llevamos 12 años dándole vueltas a lo mismo :D

No, en serio... creo sinceramente que en general no aprovechamos todas las capacidades que los parsers nos ofrecen, bueno, hablo por mi, yo seguro que no!!

Gracias por lo del los atributos... si consigo superar la tremenda pereza de modificar código le hecharé un ojo! :wink:


Bueno, en realidad puede ser (C) Gilsoft, que si no me equivoco lo incorporó en su DAAD. Despues de eso los han llevado de serie SINTAC, NMP, y ahora Superglus.

Y en cuanto a usarlos en todas su potencia, pues quiza para tu proxima aventura te lo plantees ;)

_________________
Sígueme en twitter: @uto_dev
http://www.ngpaws.com


Arriba
 Perfil  
 
Mostrar mensajes previos:  Ordenar por  
Nuevo tema Responder al tema  [ 8 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 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:  
Desarrollado por phpBB® Forum Software © phpBB Group
Traducción al español por Huan Manwë para phpBB-Es.COM