Por... Melitón Rodríguez, el de la 117
Passa tronkos, ya estamos otro mes más en la sección esta. Vayamos con lo nuestro, en el último fanzine hicimos una pequeña aventurilla; en este vamos añadirle unas cuantas cosas más. Pero antes me gustaría comentar un poco algunas de las novedades que trae la última versión 2.0.
Bueno, ahora vamos a añadirle unas cuantas cosas a nuestra mini aventura del anterior fanzine. Lo que haremos será incluir, un HAZ que llamará a las acciones adecuadas. También decidiremos cuales son los verbos de movimiento. Pondremos un item, un objeto. De momento nos vale con saber que los items (objetos) se incluyen de la misma forma que las localidades excepto que no tienen salidas y el primer campo cardinal es la localidad donde están. En total quedaría:
#define MaxVerbMov 8;
\VOC
NORTE 4 Verbo; N 4 Verbo;
SUR 5 Verbo; S 5 Verbo;
ESTE 6 Verbo; E 6 Verbo;
OESTE 7 Verbo; O 7 Verbo;
FIN 8 Verbo;
COGER 9 Verbo;
COGE 9 Verbo;
DEJAR 9 Verbo;
DEJA 9 Verbo;
I 10 Verbo;
INVEN 10 Verbo;
EXAMINa 11 Verbo;
EX 11 Verbo;
CAAD 4 nombre;
FANZINe 4 nombre; /: Sólo importan las 6 primeras letras :/
\MEN 0 /: Mensajes del sistema, siempre deben esta :/
\0 "", ""
\1 "" y ""
\2 "".\n""
\3 ""\ix""
\4 ""No sé a qué te refieres con el pronombre.\n""
\5 ""\lx""
\6 ""el ""
\7 ""la ""
\8 ""un ""
\9 ""una ""
\10 ""Ya tengo \ix.\n""
\11 ""No hay se eso por aquí.\n""
\12 ""\ix me pesa demasiado.\n""
\13 ""No puedo coger \ix; llevo demasiadas cosas.\n""
\14 ""He cogido \ix.\n""
\15 ""No veo nada y sin ver no puedo hacerlo.\n""
\16 ""Teclea el nombre del fichero:\n>> ""
\17 ""\zbvPulse una tecla...\zbg""
\18 ""No cabe \ix en ""
\19 ""No tengo eso.\n""
\20 ""He dejado \ix.\n""
\21 ""Ya me puse \ix.\n""
\22 ""Me he puesto \ix.\n""
\23 ""No llevo puesto de eso.\n""
\24 ""Me he quitado \ix.\n""
\25 ""No se puede meter nada en \ix.\n""
\26 ""He colocado \ix en ""
\27 ""No puede haber nada en \ix.\n""
\28 ""No hay de eso en \ix.\n""
\29 ""He sacado \ix ""
\30 ""No se puede dar nada \a.\n""
\31 ""Le he dado \ix ""
\32 ""No se puede pedir nada \a.\n""
\33 ""\ix no lleva de eso.\n""
\34 ""\ix me ha dado ""
\35 ""\ix ha cogido ""
\36 ""\ix se ha puesto ""
\37 ""\ix ha dejado ""
\38 ""\ix se ha quitado ""
\39 ""\ix ha colocado ""
\40 ""\ix en ""
\41 ""\ix ha sacado ""
\42 ""\d""
\43 ""\ix le ha dado ""
\44 ""\a""
\45 ""No se puede poner ni quitar \ix.\n""
\46 ""a ""
\47 ""de ""
\48 ""al ""
\49 ""del ""
\50 "" "" /: Espacio necesario para imprimir los mensajes 3 y 44 ó 42 :/
\51 ""los ""
\52 ""las ""
\53 ""unos ""
\54 ""unas ""
\MEN 1
\0 ""salida posible: ""
\1 ""salidas posibles: ""
\2 ""no hay salida.\n""
\3 ""norte""
\4 ""sur""
\5 ""este""
\6 ""oeste""
\7 "" >>""
\8 ""No puedo hacer éso.""
\9 ""No puedes moverte en esa dirección.""
\10 ""Aquí está \ix.""
\11 ""Llevas \ix."
\12 ""No llevas nada.""
\LOC
/: Las localidades 0 y 1 están reservadas :/
\2 _ _ """" ""Primera localidad."" < < $ Norte 0 3; Este 0 4;
\3 _ _ """" ""Segunda localidad."" < < $ Sur 0 2;
\4 _ _ """" ""Tercera localidad."" < < $ Oeste 0 2;
\ITE /: Una sección de ITEM, con un item :/
\0 Caad _ ""CAAD"" ""Un fanzine sobre aventuras conversacionales.""
< 2,<
\BLO
BLOQUE [0] PrimeraAventura()
{
COPI 1 47; /: Tabla donde está el Prompt :/
COPI 7 48; /: Mensaje del Prompt :/
COPI 2 34; /: Localidad inicial la 2 :/
LIMPANT;
DESC [34];
NL;
SALIDAS [34] 1 0;
(PRESENTE 0) {ACTUAL 0; MENSAJE 1 10;}
MIENTRAS (IGQ 0 [0]) /: Un bucle infinito :/
{
PREG 0;
ANALIZA 0 1;
(MNQ 10 MaxVerbMov) /: Comprueba si es de movimiento :/
{
(CAMINAR 34) /: Intenta caminar en la dirección adecuada :/
{
/: Si lo consigue repetir descripción :/
LIMPANT;
DESC [34];
NL;
SALIDAS [34] 1 0;
(PRESENTE 0) {ACTUAL 0; MENSAJE 1 10;}
}
SINO /: Si no lo consigue poner 'No puedes ir en esa dirección.' :/
{
MENSAJE 1 9;
}
}
SINO
{ /: No es de movimiento :/
CUAL 1;
HAZ [10]
{
Fin:{FIN;}
Coge:{(COGER [0]);}
Deja:{(DEJAR [0]);}
I:{HazInventario;}
Examina:{EXAM [0]; NL;}
SINO {MENSAJE 1 8;} /: 'No puedes hacer éso' :/
}
}
} /: Final del bucle infinito :/
}
BLOQUE [1] HazInventario()
{
(PRESENTE 0) { ACTUAL 0; MENSAJE 1 11;} SINO {MENSAJE 1 12;}
}
Vamos a ver algunas cosillas que han salido. Primero, por primera vez se hace uso de un bloque diferente del [0]. Como se ve se define y para usarlo basta con poner su nombre como si se tratase de un condacto normal y corriente. Esta es una de las ventajas del CAECHO?, los nuevos bloques pueden usarse como si fuesen un nuevo condacto más potente o adecuado.
'CUAL 1' es equivalente al WHATO del PAWS, convierte el nombre-adverbio en un número de objeto al que le corresponde que pone en la bandera cardinal 0. Así que [0], el contenido de la bandera 0, es, tras un CUAL 1, el objeto referido por el jugador. Por lo tanto el 'COGER [0]' coge el objeto referido por el jugador.
'EXAM n' pone en pantalla la descripción del objeto (el segundo mensaje de la definición del objeto), así que EXAM [0] pone la descripción del objeto referido por el jugador.
La condición 'PRESENTE n' es VERDADERA cuando el objeto 'n' está visible por el jugador; o sea en la misma localidad del jugador, llevado, o puesto.
Tan sólo reseñar una cosa más, fijaos que COGER y DEJAR están entre paréntesis como si fuesen una condición. ¿Por qué? Porque lo son. Es decir, además de hacer lo necesario para mover el objeto a 'llevado' si es posible, o decir que no está... resulta VERDADERO si consigue coger el objeto, y FALSO si no se consigue. De esta forma, pueden hacerse diferentes cosas si se hacen o si no. Tendría que ser de la forma:
(COGER n)
{
Cosas hechas si se consigue...
}
SINO
{
Cosas hechas si no se consige...
}
Pero la mayor parte de las veces no es necesario hacer nada más allá de lo que ya hace COGER, así que lo demás sobra. Para no hacer nada, se pone en vez de lo anterior:
(COGER n);
Y ya está. Esto es lo que se ve en el listado de arriba.
Nada más, os aconsejo que cojáis el INICIAL.FUE y miréis como está hecho. En el próximo fanzine nos meteremos en como llamar a otros bloques con sus propios parámetros...