Crea tu propio Wherigo (7) INPUTS… ¡Comienza la diversión con la Action If/Else!

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

……………………..

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.

………………………

¿Cuál es la diferencia principal entre ver una película o leer un libro y jugar a un videojuego? En mi opinión es, sin duda, la posibilidad de que el jugador interactúe con la obra. Mientras que en en las dos primeras actividades el espectador/lector actúa como sujeto pasivo de una historia, cuando se convierte en jugador debe tomar decisiones y actuar en consecuencia para que el juego avance en una dirección un otra. Un cartucho Wherigo puede plantearse de las dos maneras expuestas, pudiendo hacer que el jugador tome, o no, decisiones y que estas afecten al desarrollo de la aventura. Sin duda será mucho más inmersiva una historia en la que el personaje que la está viviendo  pueda elegir su propio destino, que si únicamente va de un lugar a otro siguiendo el recorrido propuesto por el programador.

Esta interactividad en los cartuchos Wherigo se consigue a través del ObjectInput“, que posibilita al jugador introducir manualmente un dato en su dispositivo. Para comprender y poder utilizar de forma útil los Inputs, resulta necesario introducir la Action If/Else, que sirve para establecer condicionales gracias a los cuales programar que si el jugador  introduce un determinado dato, ocurra una cosa en consecuencia, mientras que si introduce otro dato, ocurra una distinta. Vayamos paso a paso:

INPUTS

Como se ha explicado, un Input consiste en un Object que, al ser introducido en un evento, invita al jugador a introducir un dato de forma manual. Las posibles aplicaciones son muchas, desde responder una pregunta a tomar una decisión entre varias alternativas, pasando por multitud de “minijuegos” cuyo límite lo pondrá la imaginación del autor. En entregas posteriores se expondrá la programación de algunos de estos posibles minijuegos, en la entrega de hoy estudiaremos como crear los inputs más básicos.

Como puede verse claramente, los Inputs son el verdadero atractivo de un Wherigo, siendo bajo mi punto de vista lo que realmente puede dotar de personalidad y diversión al mismo si se utilizan bien. Sin embargo tienen un importante punto negativo a considerar y es que son los responsables de que un cartucho que los contenga no funcione correctamente en Iphone y GPS supuestamente compatibles con Wherigo y sólo se puedan completar en el WhereYouGo de Android. Mientras el software de los otros dispositivos no se actualice para una mayor compatibilidad es el precio que debemos pagar si queremos conseguir cartuchos Wherigo cada vez más complejos y originales.

Urwigo nos ofrece la posibilidad de crear cuatro tipos distintos de Inputs:

1) TEXT: Invitará al jugador a teclear una palabra o grupo de palabras. Por ejemplo serviría para, una vez llevado al jugador a un cartel, preguntarle: “¿Cuál es la tercera palabra que puedes leer?”; y sólo si se contesta correctamente poder seguir jugando.

2) NUMBER: Invitará al jugador a teclear un número. Por ejemplo podríamos utilizarlo para preguntarle al jugador: “¿Cuántas monedas quieres coger?”; y, en función de su respuesta, incrementar las monedas de su inventario en ese mismo número.

3) CHOICE: Invitará al jugador a seleccionar una de las respuestas alternativas que el programador le ofrece. Por ejemplo, al llegar en el juego a una puerta cerrada podríamos preguntarle: “¿Qué quieres hacer?” y ofrecerle dos botones para que presione uno con las respuestas “Abrir la puerta” y “Llamar a la puerta”.

4) TRUE/FALSE: Nunca lo he utilizado y no consigo entender que ventaja podría suponer respecto al resto de tipos de inputs. Si alguien tiene alguna idea será bienvenida en un comentario a esta entrada.

Para crear un Input seguiremos los siguientes pasos:

1) En la barra de menús de Urwigo, como viene siendo habitual, accederemos a la pestaña “Input” a través de “View“, “Input“. Como siempre, la pestaña consiste en una columna central donde se listarán todos los Inputs que hayamos creado y una columna derecha donde definiremos las propiedades de cada uno de ellos.

2) Presionaremos el botón “New Item” de la columna central y rellenaremos los siguientes campos de la columna de propiedades:

a) Name: Es el nombre del Input. El jugador no lo conocerá , pero debemos seleccionar uno lo suficientemente identificativo para trabajar con él comodamente sin confundirlo con otro.

b) Description: Una breve descripción de en que consiste el Input para mayor comodidad del programador. El jugador no verá esta descripción.

c) Identifier: No lo utilizaremos por el momento.

d) Display: Con la casilla activada el jugador podrá ver el Input cuando se lance. Al contrario de lo que ocurría, por ejemplo, en las zonas, soy partidario de dejar activada esta casilla en todos los Inputs que vayamos a crear para ahorrarnos trabajo posterior.

e) Image e Icon: Como siempre, pondremos la imagen que queramos que acompañe al Input. Sin embargo el Icon de estos Objects no aparece nunca durante el desarrollo de un Wherigo hasta donde yo se, por lo que podemos ahorrarnos el ponerle uno.

f) Type: Seleccionaremos el tipo de Input que vamos a crear (TEXT, NUMBER o CHOICE).

g) Question: Aquí escribiremos el texto que leerá el jugador cuando se le invite a introducir el dato. Es decir, aquí escribiríamos “¿Cuál es la tercera palabra del cartel?”, “¿Cuántas monedas quieres coger?” o “¿Qué vas a hacer?”, por poner los mismos tres ejemplos que se han comentado anteriormente.

h) Input Choice: Al crear un Input de tipo CHOICE en este cuadro de texto escribiremos las distintas respuestas alternativas que el jugador podrá seleccionar. Escribiremos cada una de estas respuestas en una fila distinta y, preferiblemente, en mayúsculas. De esta manera, para crear un Input de tipo CHOICE en el que se pregunte al jugador si va a abrir o llamar a la puerta deberíamos obtener una columna de propiedades como la siguiente:

CHOICEY así, el Input ya estaría creado. Pero por si sólo no sirve para nada, pues hay que establecer lo que ocurre en el momento de que el jugador responda a la pregunta planteada. Para hacer esto deberemos hacer click en Events, On get input unhandled y programar el evento que corresponda utilizando la Action If/Else y la expresion Compare, que introduciremos a continuación para posibilitar la creación de Inputs efectivos desde hoy.

IF / ELSE

Como se ha explicado anteriormente, gracias a la Action If/Else podremos establecer condiciones para que, en funcion de un determinado supuesto, se produzca una consecuencia u otra.

La fórmula que utiliza esta action es fácilmente comprensible, aunque difícil de explicar de palabra: “Si es A, entonces B”, “Si es C, entonces D”, “Si es cualquier otra cosa distinta a A o B, entonces E”; o lo que es lo mismo: “If A: B”, “If C: D”, “Else: E”. Aunque pueda parecer algo complejo en los siguientes ejemplos gráficos lo comprenderemos rápidamente.

IF / ELSE EN UN INPUT DE TIPO TEXT

En primer lugar vamos a crear un evento para el Input de tipo TEXT que se ha expuesto anteriormente, es decir, para preguntar al jugador por tercera palabra de un cartel que encontrará durante su recorrido. Supondremos que ya hemos creado el Input siguiendo las instrucciones que se han dado anteriormente y que nos encontramos en su “On get Input“, tal y como se ve en la siguiente imagen:

Imagen2

A continuación seguiremos los siguientes pasos:

1) Arrastraremos la Action If/Else al interior del cuadro “Drag actions here“.

if elseCon una estructura como la que en este momento tenemos podríamos crear las consecuencias para una sola condición, por ejemplo “Si el jugador escribe correctamente la respuesta, lanzar el Dialog “Muy bien, podemos seguir adelante”, o lo que sintéticamente se reduce a “Si es A, entonces B”. Sin embargo, para el caso que nos ocupa nosotros queremos crear una segunda condición para que, por ejemplo “Si el jugador escribe incorrectamente la respuesta, lanzar el Dialog “Te has equivocado, vuelve a intentarlo”, es decir “Si es C, entonces D”. Para conseguirlo, debemos hacer un click en el signo “+” que se encuentra junto a If/Else, consiguiendo la siguiente estructura:

dos condicionesPara el ejemplo que nos ocupa esto sería suficiente. Sin embargo, no debemos perder de vista que haciendo sucesivos clicks en el signo “+” podríamos añadir infinitos condicionales para considerar todas las posibles respuestas a la pregunta que el jugador pueda darnos. Puede ser divertido jugar con estas condicionales para, por ejemplo, introducir algún guiño ante determinada respuesta.

La estructura que hemos creado hasta ahora responde a la formula: “Si…”, “Si…”, por lo que aún debemos completarla.

2) Supongamos que la respuesta correcta a la pregunta planteada al jugador fuera “Geocacheando el mundo“. En este caso, lo que debemos programar en el “If” de la izquierda en la estructura que estamos creando responde a la fórmula: “Si la respuesta dada por el jugador es “Geocacheando el mundo”, entonces lanzar un Dialog que diga “Muy bien!! Esa es la respuesta correcta””.

Para conseguir esta estructura en nuestro evento utilizaremos las ExpressionsCompare” y “Answer“, que localizaremos utilizando la barra de desplazamiento vertical de la ventana de las Actions y Expressions.

a) Compare: Ya hemos visto esta Expression en anteriores entregas del tutorial. sirve para comparar 2 elementos de nuestro wherigo utilizando los operadores “Igual que“, “Diferente que“, “Menor que“, “Mayor que“, “Menor o igual que” o “Mayor o igual que“. En el caso que nos ocupa, compararemos si la respuesta dada por el jugador es igual a “Geocacheando el mundo”.

b) Answer: Esta expresión contiene el valor de la respuesta dada por el jugador al input propuesto. Sirve no sólo para compararla con el texto correcto de la respuesta, sino, por ejemplo en el caso de un Input numérico y a través de un SET, convertir una variable en el número dado para, por ejemplo coger un número determinado de monedas como se verá más adelante.

Así, lo que debemos hacer a continuación es arrastrar la ExpresiónCompare” a “Drag Actions here“:

comparePosteriormente, arrastraremos la Expression Answer al lado izquierdo de la igualdad planteada y, en el lado derecho escribiremos “Geocacheando el mundo” sin comillas:

compare answerPor último en el “Drag actions here” que se ha generado bajo la igualdad, colocaremos todas las consecuencias que se deben producir para el caso de que el jugador conteste a la pregunta de forma correcta. Podemos colocar Dialogs, activar Tasks, hacer visibles e invisibles zonas, etc… En este caso, únicamente colocaremos un Dialog que le informe que la respuesta es correcta:

Imagen2A continuación debemos programar lo que sucederá en el caso de que se escriba una respuesta distinta a “Geocacheando el mundo”. Si quisieramos establecer lo que ocurriría con otra respuesta concreta crearíamos la misma estructura. Por ejemplo si quisieramos crear una consecuencia para la respuesta “WordPress.com”, deberíamos hacerlo como muestra la siguiente imagen:

Imagen2Sin embargo, no es este efecto el que queremos obtener, pues si escribiéramos cualquier otra respuesta diferente de “Geocacheando el mundo” o “WordPress.com”, no obtendríamos ninguna consecuencia. Para que cualquier otra respuesta distinta a la correcta nos lance el Dialog “RESPUESTA INCORRECTA. VUELVE A INTENTARLO” y se vuelva a plantear el mismo Input, no debemos establecer ninguna comparación en el cuadro de la derecha, programando simplemente la consecuencia para cualquier otra situación distinta de la planteada en la izquierda, es decir, para el ELSE, tal y como se ve en la siguiente imagen:

Imagen2Como puede verse, al introducir cualquier erronea, el jugador vería el texto “ESA RESPUESTA ES INCORRECTA. VUEVE A INTENTARLO”, el jugador presionaría “OK” y el cartucho volvería a plantearle la misma pregunta, pues esa es la opción que hemos elegido para este caso.

INPUT DE TIPO NUMBER

A continuación vamos a ver un ejemplo distinto en el que, a través de un input de tipo NUMBER  en el que se preguntará al jugador cuantas monedas quiere coger, consigamos que dependiendo de su respuesta, la variable numérica que representa la cantidad de monedas que el jugador posee en su inventario sea igual a ese número.

En primer lugar debemos crear dicha variable siguiendo las instrucciones que vimos en la entrega anterior del tutorial, dándole un valor inicial de 0.

A continuación crearemos un Input de tipo NUMBER en el que en el cuadro “Question” escribiremos “CUANTAS MONEDAS QUIERES COGER?”. Por último en su “On get input“, “Unhandled” simplemente tendremos que establecer que la variable “MONEDAS” tenga el valor seleccionado por el jugador en su “ANSWER” a traves de un sencillo SET, tal y como se puede ver en la siguiente imagen:

Imagen2Así, el SET haría que la variable MONEDAS fuera igual al número que hubiera respondido el jugador y, a continuación, una sucesión de Dialogs informaría de cuantas monedas hubiera cogido.

INPUT DE TIPO CHOICE

Por último, vamos a programar un input de tipo CHOICE para el caso expuesto anteriormente en el que al llegar a una puerta cerrada, se plantee al jugador dos opciones: “ABRIR LA PUERTA” y “LLAMAR A LA PUERTA”. Para ello debemos volver al input que creamos al iniciar la entrada y que se corresponde con la siguiente imagen:

CHOICEA continuación, en su “On get input” debemos crear una estructura IF / ELSE en la que comparemos si la respuesta dada por el jugador se corresponde textualmente con cada una de las alternativas propuestas en el cuadro de texto “Input choice“, tal y como se puede observar en la siguiente imagen:

Imagen2

De esta manera ya hemos visto como programar cada uno de los tres tipos de Inputs (TEXT, NUMBER y CHOICE) y sólo nos restaría indicarle al cartucho Wherigo el momento en el que tiene que lanzar estas preguntas. Esto se consigue con la ActionInput“, que debemos colocar donde corresponda y, en su interior, el Input requerido. Para ejemplificarlo, vamos a imaginar que llegamos a una zona llamada “Castillo” y queremos lanzar en su “On proximity” el Input de tipo Choice que hemos creado y al que he llamado “PUERTA DEL CASTILLO”. Habría que programar el siguiente evento:

Imagen2

……………………………….

Y hasta aquí llega la entrega de hoy del tutorial. Para aquellos de vosotros que esteis siguiedo EL RETO tendreis que introducir en el cartucho que estais creando un Input del tipo que querais, estableciendo las consecuencias para el mismo que mejor veais y explicarme en vuestro correo que es lo que habeis pretendido hacer.

Compilad un cartucho con extensión GWC utilizando las técnicas que hemos visto hasta ahora y enviádmelas a manupor3@gmail.com

Todas las dudas que pudieran surgir de la explicación, agradecería que no se me plantearan por privado, sino como comentario a esta entrada, para que todo el mundo pueda consultarla, así como la respuesta que, si tengo, daré a la misma.

FELIZ GEOCACHING Y FELICES WHERIGOS A TODOS!!!

2 pensamientos en “Crea tu propio Wherigo (7) INPUTS… ¡Comienza la diversión con la Action If/Else!

  1. “4) TRUE/FALSE: […] no consigo entender que ventaja podría suponer respecto al resto de tipos de inputs. Si alguien tiene alguna idea será bienvenida en un comentario a esta entrada.”
    Supongo que, al igual que con otros lenguajes/sistemas de programación, dejar cerradas las posibilidades a TRUE/FALSE, 1 ó 0, Sí o No hace que la memoria requerida en el dispositivo (GPS, Android o iPhone) sea menor. Si debemos esperar potencialmente un texto o una cifra una respuesta cerrada de entre varias la reserva y tipo de datros a tratar es más compleja.
    En cualquier caso no lo toméis como ley lo que digo.
    Saludos,
    Dr. Entropía.

    Le gusta a 1 persona

  2. Pingback: Crea tu propio Wherigo (9) FUNCTIONS y ACTIONS | Geocacheando el mundo

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s