Crea tu propio Wherigo (10) EXPRESSIONS

Esta entrada forma parte del curso “Crea tu propio Wherigo”: Pincha en los siguientes enlaces para ver las entregas anteriores del mismo:

1: EL RETO

2: COMENZANDO NUESTRO CARTUCHO

3: GRÁFICOS Y AUDIO: LOS MEDIA

4: DE ZONA EN ZONA y tiro porque me toca

5: PERSONAJES Y OBJETOS… dialogando con unos y cogiendo a los otros

6: TASK Y VARIABLES… Vamos avanzando

7: INPUTS… ¡Comienza la diversión con la Action If/Else!

8: TIMERS… Carreras contrarreloj!!!

9: FUNCTIONS Y ACTIONS

……………………..

Wherigo es una marca registrada.

Antes de nada recomiendo encarecidamente leer las guidelines oficiales, así como la sección de preguntas frecuentes para tener claro que podemos y que no podemos hacer a la hora de crear y publicar un caché Wherigo.

………………………

EXPRESSIONS

Como sabrá de sobra cualquiera que haya seguido el tutorial hasta aquí, las distintas Expressions que podemos utilizar en Urwigo son elementos que nos sirven para poner en relación las Actions que vimos en la anterior entrega y las propiedades de los distintos Objects que hayamos creado (Zones, Items, Characters…). Aunque muchos de ellos ya los hemos utilizado y explicado a la hora de plantear ejemplos a los largo del tutorial, vamos a hacer una enumeración de todos ellos junto a nuevos ejemplos a fin de tener un listado lo más completo posible.

La Expressions se encuentran en la columna izquierda de la ventana de Urwigo, bajo las Actions, y son las siguientes:

1: COMPARE: Utilizamos COMPARE para, obviamente,  comparar dos valores. Generalmente va asociado a la Action If/Else, a fin de establecer una condición para el caso de que un elemento sea igual, diferente, mayor que, menor que, mayor o igual que y menor o igual que.

Para utilizala, la arrastraremos al lugar donde queramos que se realice la comparación (siempre antes de establecer las consecuencias para cuando se de el caso establecido en la comparación) y colocaremos en el lado izquierdo el elemento que queremos comparar (por ejemplo, una variable). A continuación, si no vamos a utilizar “igual que“, haremos click sobre el signo “=” para seleccionar otro en el recuadro que aparecerá en la parte superior derecha de la pantalla. Por último escribiremos en el lado derecho de COMPARE el valor de texto o numérico que corresponda según lo que queramos realizar. 3825744_640pxAplicado a variables numéricas, la Expression COMPARE podría utilizarse, por ejemplo, para que durante una partida de parchís, al sacar 3 seises consecutivos hubiera que volver a casa:

3825744_640pxEn primer lugar le decimos al programa cuando debe ejecutar este evento, es decir: si el número sacado por el dado es un 6. A continuación incrementamos en 1 la variable “número de seises consecutivos” y establecemos que si esta variable a llegado al número 3, se vuelva a poner a 0 y mueva la ficha roja a su casa.

AND

La expresión AND representa la conjunción “Y“, que sirve para establecer una condición en la que se de más de un condicionante. Por ejemplo, si la aventura debe acabar cuando el jugador encuentre una llave y consiga 100 monedas de oro, podríamos establecer la condición: Si el jugador tiene la llave en su inventario Y la variable monedas es igual a 100, hacer que el cartucho haya sido completado”.

Para utilizarla la arrastraremos al lugar donde nos interese y a continuación arrastraremos dentro tantas Expressions como condicionantes queramos establecer. El ejemplo dado anteriormente estaría representado por la siguiente imagen:

3825744_640pxOR

La expresión OR representa la conjunción “O“, que sirve para establecer una consecuencia para el caso en el que se den situaciones alternativas. Por ejemplo, si la aventura debe acabar cuando el jugador encuentre una llave, o bien cuando consiga 100 monedas de oro, podríamos establecer la condición: Si el jugador tiene la llave en su inventario O la variable monedas es igual a 100, hacer que el cartucho haya sido completado”. Así el cartucho finalizaría cuando se diera cualquiera de esas dos circunstancias.

Para utilizarla la arrastraremos al lugar donde nos interese y a continuación arrastraremos dentro tantas Expressions como alternativas queramos establecer. El ejemplo dado anteriormente estaría representado por la siguiente imagen:3825744_640px

NUMERIC OPERATION

A través de la Expression NUMERIC OPERATION podemos hacer que el cartucho realice una operación matemática con unos valores determinados. Las operaciones que permite realizar son suma, resta, multiplicación, división, porcentaje y potenciación. Además, permite establecer si se permite o no redondeo (y en su caso hacia arriba o hacia abajo) y el número de decimales que tendrá el resultado final de la operación. Todo ello se seleccionará en el cuadro que aparecerá en la parte superior derecha de la pantalla al seleccionar la Expression.

Operar con esta Expression es algo más complicado que con las que hemos visto hasta ahora. ¿Cuándo podríamos necesitar que el cartucho realice una operación matemática? Pues, por ejemplo se me ocurre que para que, independientemente de cuantas monedas tenga en su poder el jugador, al llegar a una determinada zona se dupliquen, por poner un ejemplo. Lo que debemos hacer es emplear la Action SET para hacer que la variable monedas sea igual a la variable monedas multiplicada por 2. Para ello arrastraremos la Expression NUMERIC OPERATION al lado derecho del SET (en el izquierdo colocaremos la variable monedas), seleccionaremos la operación “multiplicar” en el cuadro que aparece en la parte superior derecha de la pantalla y a continuación colocaremos una Expression VALUE (más adelante veremos para que sirve) a la que le daremos el valor 2. Así, el evento debería quedar como en la siguiente imagen:

3825744_640pxCONCATENATE

La Expression CONCATENATE sirve para concatenar dos o más cadenas de texto y mostrarlas al jugador como si de una sola se tratara. Cada una de estas cadenas de texto puede tener un origen distinto, pudiendo ser variables, VALUES de tipo string (que veremos más adelante) o cualquier otro texto del cartucho como por ejemplo el nombre del jugador o la respuesta dada por este a un INPUT, por ejemplo.

Se debe de emplear dentro de Dialogs o Messages, por lo que para utilizarla, en primer lugar arrastraremos un Dialog al lugar donde queramos mostrar la concatenación, a continuación arrastrar dentro de ese dialog la Expression CONCATENATE y, finalmente, ordenar dentro de esta Expresion todas las cadenas de texto que queramos enlazar.

Por ejemplo se podrían concatenar las siguientes 3 cadenas de texto obteniendo un resultado muy llamativo:

  1. VALUE de tipo STRING con el texto: “TIENES “
  2. VARIABLE MONEDAS
  3. VALUE de tipo STRING con el texto: ” MONEDAS “
  4. Player.Name

De esta forma, el texto resultante se adaptaría a cada jugador. Por ejemplo en mi caso diría “Tienes 3 monedas manupor3”, por ejemplo. El evento debería quedar como en la siguiente imagen:

3825744_640px

CONTAINS

La Expression CONTAINS sirve para establecer consecuencias en el caso de que uno de los Objects del cartucho contenga en su interior a otro. Por ejemplo, “Si la Zona 1 contiene el Item 1, entonces…” o “Si el inventario del jugador contiene el Item 2, entonces…”.

Su utilización es sencilla y va ligada a un evento del tipo If/Else. Tras arrastrarla al lugar que corresponda debemos colocar a la izquierda el Object contenedor (Zona 1 o Player en los ejemplos anteriores) y a la derecha el Object contenido (Item 1 e Item 2 en los ejemplos anteriores). El primero de los ejemplos debería quedar como en la siguiente imagen, estableciendo a continuación la consecuencia que queramos:

3825744_640px

VALUE

La Expression VALUE nos permite definir un valor de tipo texto, numérico o verdadero/falso para que lo podamos utilizar como necesitemos. Su utilización, como hemos visto al ver las Expressions CONCATENATE y NUMERIC OPERATION consiste en arrastrarla al lugar donde necesitemos definir un valor manualmente y establecer el tipo de valor y su contenido en sus propiedades, en la parte superior derecha de la pantalla:

3825744_640px

ANSWER

Como vimos en su momento al analizar los INPUTS, la Expression ANSWER representa la respuesta dada por el jugador a un INPUT. Así, podremos crear eventos del tipo If/Else para establecer una consecuencia distinta dependiendo de cada posible respuesta o establecer que el valor de una variable sea igual a dicha respuesta, por poner sólo dos ejemplos.

De esta manera, para activar la zona 1 en el caso de que la respuesta del jugador a un INPUT llamado “SI o NO” sea SI, el evento debería quedar como en la siguiente imagen:

3825744_640pxOtro ejemplo. Para hacer que la variable numérica MONEDAS adquiera el valor de la respuesta del jugador a un INPUT de tipo numérico llamado “¿Cuantas monedas quieres coger?, el evento debería quedar como en la siguiente imagen:

3825744_640pxMESSAGE BUTTON

Como vimos al explicar la Action Message, MESSAGE BUTTON sirve para establecer las consecuencias de pulsar cada uno de los botones que ofrece dicho Message. Su utilización es muy sencilla, debiendo incluirse dentro del On clicked de un Message a través de un evento If/Else, seleccionar el botón al que va a hacer referencia en el cuadro que aparecerá en la parte superior derecha de la pantalla y establecer a continuación su consecuencia. El evento tipo debería quedar como la siguiente imagen:

3825744_640pxDISTANCE TO A ZONE

A través de esta Expression estableceremos unas consecuencias para el caso de que el jugador se encuentre dentro de una zona (Inside) o en el valor que hayamos establecido como In proximity, In distance. También se puede utilizar para el caso de que dicha zona no esté In range. Podemos recordar estos conceptos en la entrega dedicada a las Zones.

Su utilización es sencilla. Basta con crear un evento If/else y arrastrar DISTANCE TO A ZONE a su interior, seleccionando en el cuadro que aparece en la parte superior derecha de la pantalla el concepto que queramos utilizar, la unidad métrica que queramos utilizar y establecer a continuación la consecuencia si se da la circunstancia programada. Por ejemplo, para el caso en que queramos activar una zona si el jugador se encuentra In proximity de la Zona 1, deberíamos crear un evento como el de la imagen siguiente:

3825744_640pxRANDOM NUMBER

La Expression random number sirve para que el cartucho elija un número aleatorio entre dos valores que debemos establecer (elige un número entre el 1 y el 10, por ejemplo).

La forma de utilizarlo es simple. Debemos arrastrar la Expression al lugar donde nos convenga y establecer la horquilla de números dentro de la cual se debe realizar la elección en los cuadros que aparecerán en la parte superior derecha de la pantalla.

Esto nos puede servir para crear un elemento de incertidumbre y hacer que cada partida sea distinta, haciendo empezar al jugador con un número de monedas diferente cada vez, por ejemplo. Para elló deberíamos utilizar un SET para hacer que la variable MONEDAS tenga un valor aleatorio entre 1 y 90, por ejemplo, debiendo quedar el evento como en la siguiente imagen:

3825744_640pxIN EMULATOR

La Expression IN EMULATOR sirve para establecer una determinada consecuencia diferenciando si el jugador está jugando el cartucho a través de un emulador o no. Existen algunos cartuchos como “¿Y AHORA?” en que el jugador no tiene porque desplazarse a ninguna ubicación concreta para resolverlo. De esta forma, no habría ningún inconveniente en permitirle ejecutar el cartucho de forma tradicional en su dispositivo móvil o bien en el propio emulador de cartuchos de Urwigo. Si queremos que se produzca alguna diferencia en función de si se ejecuta de una forma u otra, debemos utilizar la Expression IN EMULATOR en un evento If/Else:

3825744_640pxDATE/TIME

La Expression Date/Time nos permite emplear como un valor más del cartucho Wherigo cualquier elemento de la fecha y hora proporcionada por el dispositivo en el que se está ejecutando. Así, podremos utilizar el día, día de la semana, día del año, mes, año, hora, hora de la semana, hora del mes, hora del año, minuto, minuto del día, minuto de la semana, minuto del mes, minuto del año, segundo, segundo de la hora, segundo del día, segundo de la semana, segundo del mes y segundo del año… casi nada…

Las posibilidades son muchas. Desde hacer que un cartucho solo se pueda jugar en un rango determinado de horas (wherigo nocturno), a provocar una mayor inmersión al jugador haciendo que un personaje le de la hora y le pida que vuelva a otra concreta, un Wherigo que sólo se pueda realizar durante un perido del año (navidad?) y todo lo que la imaginación permita.

Su utilización es simple, debiendo arrastrarla al lugar que corresponda, elegir el periodo temporal que vamos a manejar, hacer click en el signo “=” para cambiarlo de la manera habitual y establecer el valor que queramos. Así por ejemplo para hacer que un wherigo sólo se pueda realizar entre las 00:00 y las 6:00, deberíamos crear un evento If/Else en el que, utilizando la Expression AND, establezcamos que “Si la hora es mayor de las 00:00 Y menor que las 06:00, comience el cartucho”. Debería quedar como en la siguiente imagen:

3825744_640pxY con esto finaliza enta entrega del tutorial. En la próxima, que será la última, haremos unos últimos ajustes a nuestro cartucho antes de compilarlo para probarlo en nuestro móvil y, finalmente, subirlo a Wherigo.com para poder publicar por fin nuestro caché. Hasta entonces feliz geocaching a todos!!!