CAAD

Comunidad de Aventuras Conversacionales y Relatos Interactivos
Fecha actual 29 Jun 2017 12:01

Todos los horarios son UTC + 1 hora




Nuevo tema Responder al tema  [ 3 mensajes ] 
Autor Mensaje
NotaPublicado: 16 Nov 2016 18:48 
Desconectado
Aventurero
Aventurero

Registrado: 13 Nov 2016 01:39
Mensajes: 4
Hola ;)

Espero la estén pasando super! :3

Escribo aquí otra entradita ;). Me encontraba checando un código para hacer converzaciones por menús y entré en un gran dilema, del cual surgen varias preguntas, aquí van! ;):

¿Cuantas constantes puedo definir como límite de ngPaws?

Entiendo que los flags son variables, pero me entra la duda al decirme que las constantes también son variables... 'A caso son 2 tipos distintas de variables?

Tengo entendido los atrivutos son definidos como constantes. ¿son distintos los constantes de los atrivutos a los de los KEYS?

Expongo mi duda surgida con el código que miraba con respecto al menú:

Texto que me encontraba yo mirando ;):
Vamos a ver como podemos hacer una conversación con un NPC en ngPAWS al estilo de las aventuras gráficas (de LucasArts por ejemplo), es decir, por menús. Empezamos por un pequeño glosario:

Glosario
lista de 4 elementos
• Menú: Un menú es cada uno de los puntos donde la conversación nos muestra una serie de opciones y debemos elegir una.
• Opción: Cada una de las frases alternativas que podemos decir en un determinado menú.
• Por facilidad del ejemplo, vamos a asumir que solamente se pueden poner tres opciones por menú.
• Usaremos las siguientes constantes,que son los códigos de las teclas 1, 2 y 3 (49,50 y 51 respectivamente)
fin de lista

#define const KEY_1 49
#define const KEY_2 50
#define const KEY_3 51



Aquí surge mi primer duda, habla de usar teclas 1, 2 y 3... en codigo asci yo se que su ID de estos 3 caracteres son el (49, 50 y 51)
Al decir que usará constantes... estoy diciendo que usaré 3 variables las cuales van a tener esos 3 valores? 49, 50 y 51?

osea: KEY_1 va a tener el valor 49?
O a caso, ¿este 49, dice que será la constante 49 y que esta constante puede tener cualquier valor?

¿Que pasará si yo tengo definido algo así: aBig = 49? ¿se conflictará ese atrivuto aBig, con el KEY_1 49?

Disculpen por no tener bien definida esta lógica, pero realmente me pierdo... :(


Bueno, sin mas por el momento me despido, deseando se encuentren de lo mejor! :)
Saludos y buen día/tarde/noche/madrugada! :3


Arriba
 Perfil  
 
NotaPublicado: 18 Nov 2016 09:52 
Desconectado
Semimomio
Semimomio
Avatar de Usuario

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

txtPAWS define las constantes en un ámbito separado, de manera que da igual que la constante KEY_1 tenga el mismo valor que, digamos, el flag aCarried.

Además, como las constantes no "pasan" al código final (solo lo hacen los valores de los identificadores para gráficos y sonidos), no puede colisionar con nada.

Lo que no se puede hacer es darle el mismo nombre a una constante y a un flag, pues txtPAWS no podrá saber a cuál te refieres.

-- Baltasar

_________________
-- Baltasar, el arquero


Arriba
 Perfil  
 
NotaPublicado: 18 Nov 2016 12:00 
Desconectado
Momio
Momio
Avatar de Usuario

Registrado: 09 Mar 2004 16:14
Mensajes: 4606
Por otro lado ninguna constante definida con #define ocupa ningún flag, simplemente tras hacer esto podrás escribir XXXXX o 12 indistintamente.

Código:
#define const  XXXXX  12



Tampoco hay ningún problema en que haya varias constantes que valgan lo mismo:

Código:
#define flg fTemperaturaAgua 78
#define const max_temperatura 78
#define obj oLlave 78
#define loc lManatial 78


Tras hacer eso en cualquier sitio que pongas fTemperaturaAgua,max_temperatura , oLlave o lManatial será como si hubieras escrito 78, aunque logicamente usaras cada cosa en el sitio que corresponda:

Código:
TOMAR LLAVE
 AT lManantial
 PRESENT oLlave
 LT fTemperaturaAgua max_temperatura
 GET oLLave
 DONE
 EQ


aunque por poder podrías hacer esto, a costa de hacer incompresible el código, pero funcionaría igual:

Código:
TOMAR LLAVE
 AT lManantial
 PRESENT lManantial
 LT lManantial lManantial
 GET lManantial
 DONE
 EQ


Esto es así porque todas esas constantes serán convertidas en "78" antes de pasar al compilador, tanto en un caso como en el otro:

Código:
TOMAR LLAVE
 AT 78
 PRESENT 78
 LT 78 78
 GET 78
 DONE
 EQ


Aunque el compilador ya sabe que el 78 de PRESENT y GET se refiere a al objeto 78, el 78 de AT a la localidad 78, y los 78 de LT al flag 78 y el valor 78 en sí.

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


Arriba
 Perfil  
 
Mostrar mensajes previos:  Ordenar por  
Nuevo tema Responder al tema  [ 3 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 1 invitado


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