En la clase anterior, habíamos aprendido como crear finales (es muy fácil, solo deja una escena sin anclas, y eso es todo), como trabajar con variables, activarlas con palancas -también llamados conmutadores- ([ancla](#soy-una-palanca)) y evaluarlas con condicionales ([ancla](?soy-una-condicional)).

Habíamos también dejado un ejercicio pendiente, que era este:

Crear un juego donde el jugador sea un boxeador que se enfrenta a su enemigo y deba descubrir su punto débil. Si el jugador falla y es golpeado por el enemigo, muere.

Vamos primero a planear como abordaremos la creación de esta ficción interactiva. Pensemos cuál es el objetivo? Fácil, golpear al enemigo y encontrar su punto débil. Vamos primero a definir las acciones que hará el lector y las escenas.

Una acción en ficdown es un bloque de texto que puede ser invocado mediante conmutar una variable. El bloque de texto aparecerá al principio de la escena cuando sea invocado. Para declarar una acción se usan las tres signos de número (###) para el título y luego los párrafos que queramos. Esto nos permitirá ahorrar muchísimas escenas y texto. Veamos cómo.

Primero definamos la historia, una escena donde contendrá las palancas para las acciones y luego vamos a desglosar cada una de las acciones. Como es un boxeador, vamos a colocar algunos golpes y movimientos:

# [Boxeo Máximo](/ring-de-boxeo)

Una ficción interactiva creada por Billy Fernández para Textalab.

Golpea, esquiva y gana. Tu enemigo no tendrá compasión.

## Ring de boxeo

¿Qué movimiento deseas hacer?

[Izquierdazo](#var-izquierdazo)

[Derechazo](#var-derechazo)

[Golpe en el abdomen](#var-abdomen)

[Agacharse](#var-agacharse)

### var-izquierdazo

Golpeas por la izquierda.

### var-derechazo

Golpeas por la derecha.

### var-abdomen

golpeas en el abdomen.

### var-agacharse

te agachas.

Probamos como siempre en el playground y así confirmamos cómo funcionan las acciones. Cada una de las variables asociadas a las acciones (izquierdazo, derechazo, etc) son activadas cuando el texto es llamado. Las acciones como tal normalmente se utilizan para “explorar” el texto o “alterarlo”. Podemos usar anclas condicionales combinadas con palancas, de esta forma:

[Izquierdazo](?!var-izquierdazo#var-izquierdazo)

Expliquemos lo que pasará con este enlace. Cuando en una condicional el nombre de la variable va precedida de un “!” esta evaluando si la variable no ha sido activada, es decir, el enlace “izquierdazo” será mostrado siempre y cuando la variable “var-izquierdazo” no haya sido activada. Cuando el enlace izquierdazo sea presionado, la variable será activada y el enlace desaparecerá. Esto nos servirá para descartar algunas de las opciones que damos al lector.

NOTAS ACLARATORIAS: Cuando creas un ancla compleja que contenga objetivos, condicionales y palancas, recuerda que deben colocarse en ese mismo orden: primero los objetivos, luego las condicionales y por último las palancas. Ejemplo:

[ancla](/objetivo?condicional#palanca)

Si no hay un objetivo, en primer lugar irá la condicional.

Un ancla solo puede contener un solo objetivo, pero tantas condicionales y palancas como se deseen.

Se pueden hacer muchas más cosas con las condicionales. Si se quiere concatenar varias condiciones se puede hacer usando el símbolo “&” que actuará de la misma forma que la conjunción en la tabla de verdad (en programación corresponde al operador AND), es decir, “la condición solo será cierta si todos los elementos son ciertos”. Por ejemplo, un ancla como esta:

[Izquierdazo](?!var-izquierdazo&!var-derechazo#var-izquierdazo)

Veremos que el enlace desaparecerá no importa cual de las dos variables activemos, si var-izquierdazo o var-derechazo, ¿por qué? porque tan sólo con que una de los elementos ya no cumpla con la condición, el ancla desaparecerá.

También podemos añadir múltiples variables a las anclas, tantas como necesitemos, usando el símbolo “+”. Por ejemplo:

[Izquierdazo](?!var-izquierdazo&!var-derechazo#var-izquierdazo+var-cualquier-cosa+var-otra-cosa-mas)

Con esto ya tenemos las herramientas necesarias para darle un poco de inteligencia al contrincante del boxeador, y hacerlo incluso que pierda. Solo una advertencia: las anclas puedes hacerse muuuyyy complejas. Siempre busca la forma más simple y clara de hacer las cosas. Se pueden crear auténticos monstruos difíciles de descifrar.

Te dejo a continuación un pequeño ejemplo de cómo abordé el ejercicio, eliminé el prefijo “var-“ que suelo usar para que me entiendan, pero la verdad es que no son necesarios. Luego analizaremos algunas cositas de este ejemplo.

# [Boxeo Máximo](/ring-de-boxeo)

Una ficción interactiva creada por Billy Fernández para Textalab.

Golpea, esquiva y gana. Tu enemigo no tendrá compasión.

## Ring de boxeo

[¿Qué movimiento deseas hacer?](?!derechazo&!abdomen)

[Izquierdazo](?!izquierdazo&!derechazo&!abdomen#izquierdazo)

[Derechazo](?!derechazo&!abdomen#derechazo)

[Golpe en el abdomen](?!derechazo&!abdomen#abdomen)

[Agacharse](?!derechazo&!agacharse&!abdomen#agacharse)[Agacharse](?agacharse&!agacharse2&!abdomen&!derechazo#agacharse+agacharse2)

### izquierdazo

Golpeas por la izquierda, pero haz cometido un grave error, tu contrincante también usa su gancho izquierdo, y es su especialidad. Te ha destrozado por completo la mano. No podrás utilizarla de nuevo.

### derechazo

Golpeas por la derecha, Tu contrincante usa su gancho izquierdo [nuevamente](?izquierdazo). Tus manos nos son los suficientemente largas para llegar a su rostro. Tu contrincante te destroza la cara y caes desmayado. Has perdido el combate.

### abdomen

golpeas en el abdomen. tu contrincante se cubre su estómago del dolor y cae rendido. Has ganado el combate.

### agacharse

te agachas, [y con ello logras esquivar el izquierdazo de tu enemigo|pero tu enemigo predice el movimiento y te golpea en el abdomen. Te será imposible volver a agacharte](?!agacharse).

Ponlo en el playground, y trata de entender lo que he hecho.

Primero establecemos las acciones con las cuales nuestro lector puede ganar o perder: si golpea en el abdomen gana, si da un derechazo pierde. Por eso, para que cuando pierda o gane ya no se muestre ninguna acción ni la pregunta sobre lo que queremos hacer, evaluamos en todas las anclas si algunas de estas dos variables accionales (derechazo y abdomen) ha sido activada.

Para la demás cosas, como el contrincante es zurdo he puesto que si le atacas con un izquierdazo te destroce la mano, por ello, luego de esta acción, ya no te saldrá la opción de atacar por la izquierda.

Quizás la construcción más compleja sea “agacharse”. Vamos a analizarlo, y verás que cosas más chulas. En una acción, la variable asociada solo será activada dentro de la acción cuando sea llamada por segunda vez, es decir, que cuando yo hago click en:

[Agacharse](?!derechazo&!agacharse&!abdomen#agacharse)

El ancla que evalúa dentro de la acción si agacharse ha sido activada no detectará que “agacharse” ha sido activada hasta una segunda vez que se llame.

### agacharse

te agachas, [y con ello logras esquivar el izquierdazo de tu enemigo|pero tu enemigo predice el movimiento y te golpea en el abdomen. Te será imposible volver a agacharte](?!agacharse).

Es decir que la primera vez se mostrará:

te agachas, y con ello logras esquivar el izquierdazo de tu enemigo.

A pesar que la variable agacharse ya esté “encendida”. Sólo en un segundo llamado detectará la variable. Esto tiene muchísimas utilidades que iremos destripando en clases próximas.

Te preguntarás por qué repito dos veces el mismo enlace, así:

[Agacharse](?agacharse&!agacharse2&!abdomen&!derechazo#agacharse+agacharse2)

Este segundo enlace aparece cuando el primer “agacharse” desaparece. Sirve para mostrar la acción “agacharse” por segunda vez, pero esta vez con la variable encendida, y como se ha agachado por segunda vez, el enemigo ya prevea el movimiento y lo golpee en el abdomen, de esta forma activa la variable agacharse2, y hace que el enlace desaparezca.

Las anclas como dije pueden hacerse muy complejas, si no has entendido casi nada de esto último, no te preocupes, más adelante iremos aclarando más las cosas.

Si tienes anclas muy complejas, lo que puedes hacer es crear un comentario arriba o al lado del ancla que explique que es lo que hace. Eso te ayudará para recordar para que sirve todo lo que has hecho. Lo útil de los comentarios es que no saldrán en el juego, solo podrás verlos tú.

Para crear un comentario encierra el texto, empezando con <!--, y terminandolo con -->. Ejemplo:

<!-- Esto es un comentario -->

Podrías usarlos no solamente para comentar, sino también para anular piezas de texto que te gustaría que no se ejecutaran en el juego para localizar algún error.

Ejercicios propuestos

Para el ejercicio del boxeador crea un texto introductorio que haga justa la pelea.


<<CLASE ANTERIOR
CLASE SIGUIENTE>>


¿Quieres saber más? ¡Déjate atrapar por las redes!

Comparte este artículo: