Ultimamente se pusieron de moda los juegos de escapismo y cada vez hay mas lugares donde las personas van con un grupo de amigos, se encierran en una habitación y tienen que encontrar la forma de ir pasando de habitaciones hasta lograr "liberarse", ni lerdos ni perezosos nos pidieron que realicemos un sistema que tiene que llamarse: "Acá hay gato encerrado...". La idea atrás de todo esto es armar distintos "laberintos" para que la gente juegue con la misma modalidad que en la vida real!
Configuraron el siguiente laberinto que se compone de 10 habitaciones:
(El dibujo que sigue es solo a modo de ejemplo para que se entienda el laberinto, no implica que las habitaciones sean cuadradas, linden con esa cantidad de habitaciones necesariamente o tengan exactamente esa cantidad de acciones)
Para que un jugador supere este laberinto bien podría:
Para que sea mas simple de entender algunos computines nos regalaron algunas horas de su tiempo y nos ayudaron a masticar un poco el problema, el resultado de lo que estuvieron haciendo es un bosquejo con un poco de inspiración en historias de usuario que dejamos a continuación:
NOTAS: Es importante darnos cuenta que no es lo mismo un laberinto configurado (listo para que alguien lo juegue) que un laberinto que está siendo recorrido. Los laberintos se recorren por jugador pero el juego de uno no influye en el juego del otro.
Nuestro objetivo es tener una aplicación de escritorio que permita al administrador configurar laberintos
NOTA: Las pantallas son sugerencias, pueden modificarlas, pero para este primer trabajo práctico tienen que consultar las modificaciones con alguno de los docentes de la materia.
Sugerencia para realizar el Trabajo Práctico: Realizar todas las pantallas de Agregar acciones y por último realizar la Pantalla Inicial.
Pantalla inicial
Para eso crearemos una pantalla inicial que mostrará el nombre del Administrador (en este caso Juan). Es opcional crear una pantalla previa que permita un loggeo de Usuario.
La pantalla tendrá los laberintos creados en el sistema (en el caso de la primera vez, la lista estará vacía).
Edición: Si el usuario selecciona un laberinto, automáticamente, en el lado derecho aparecerá su nombre y las habitaciones que tiene (si no tiene ninguna habitación, la lista aparecerá vacía). El nombre puede editarse y se reflejará ese cambio inmediatamente en el listado de Laberintos.
Borrado: Si, teniendo un laberinto seleccionado, se clickea el botón "Quitar laberinto", se eliminará el mismo de la lista y todos los campos de la derecha aparecerán vacíos.
Agregado: Cuando el usuario clickea el botón "Agregar laberinto", aparecerá un nuevo elemento en el listado laberintos y su nombre podrá modificarse igual que en la edición.
Las habitaciones funcionarán igual que los laberintos:
Edición: Al seleccionar una habitación, del lado derecho aparecerán todos campos (Nombre, si es habitación inicial, si es habitación final y las acciones) completos permitiendo modificaciones.
Borrado: Si, teniendo una habitación seleccionada, se clickea el botón "Quitar habitación", se eliminará la misma de la lista y todos los campos de la derecha aparecerán vacíos.
Agregado: Cuando el usuario clickea el botón "Agregar habitación", aparecerá un nuevo elemento en el listado "Habitaciones de:" y su nombre podrá modificarse igual que en la edición.
Realizar todos los controles que crean necesarios (por ejemplo: no permitir varias habitaciones finales)
Pantalla de agregar acción
Cuando en la pantalla anterior se clickea el botón "Agregar acción", se abrirá la siguiente pantalla:
La misma cuenta con 3 botones que nos llevarán cada uno a una configuración de cada acción.
Pantalla de agregar acción: Ir a otra habitación
Esta pantalla contará con un desplegable que listará todas las habitaciones actualmente creadas. Una vez que el usuario seleccione la que desea, deberá clickear el botón "Agregar" para efectivamente agregar la acción de ir a la habitación elegida dentro de la habitación seleccionada.
Pantalla de agregar acción: Agarrar un elemento
Esta pantalla contará con un campo que permitirá escribir el elemento que aparecerá. Una vez que el usuario clickee el botón "Agregar", se agregará la acción de agarrar el elemento escrito dentro de la habitación seleccionada.
Pantalla de agregar acción: Usar un elemento
Esta pantalla contará con un desplegable que listará todos los elementos creados en el laberinto hasta ahora (Atención! No deben aparecer elementos de otros laberintos).
El usuario deberá obligatoriamente crear una acción para que se corresponda con lo que habilitará el elemento seleccionado. Para esto tendrá que clickear en el botón "Agregar acción" que abrirá la pantalla de "Agregar acción" (la que permite clickear en los tres botones).
Una vez que el usuario termine de crear la acción se mostrará en este lugar la acción creada.
Cuando el usuario clickee el botón "Agregar", se agregará la acción de Usar el elemento seleccionado habilitando la acción creada dentro de la habitación seleccionada.
Nuestro objetivo es tener una página web que permita resolver laberintos
La tecnología que usaremos para exponer los servicios es XTRest.
Deben de implementarse los servicios que se mencionan a continuación (siendo opcional el de login) y debemos estar en control de los datos que se envían desde nuestra API, es decir que no enviamos datos de más.
NOTA: Consideramos que un dato está de más cuando no se muestra en la pantalla ni es usado como input de otro servicio
Laberintos:
Iniciar Laberinto:
Realizar Acción Habitación:
Modificaciones posibles:
El Frontend lo vamos a programar en Angular.
Los mockups de pantalla pueden ser modificados a gusto del grupo, lo único que deben respetar es mostrar imágenes junto con el nombre los laberintos y las habitaciones.
Se debe elegir realizar alguna de las dos alternativas propuestas:
Alternativa SPA
Como su nombre lo indica, SPA (Single Page Application), es un sitio web que cuenta con una sola página.
La idea es ir cambiando el contenido de la misma sin cambiar la página en su totalidad.
Selección de Laberinto (lobby)
Desde esta sección podemos ver los laberintos disponibles para jugar y también una descripción de los mismos.
Cambios posibles:
Jugar en habitación
Desde esta sección tenemos que poder realizar las acciones disponibles en una habitación, como así también usar los items que tenemos en el inventario.
Abandonar Laberinto
Cuando se quiere abandonar un laberinto, se muestra una ventana de confirmación.
Ganar Laberinto
Cuando se gana el laberinto debe aparecer una ventana modal que nos informa que ganamos el laberinto y como única acción podemos volver al home.
Cambios posibles:
Alternativa MPA
La alternativa a SPA es Multi Page Application. La idea es que cambia el contenido entero de la página y no solo una parte.
Selección de Laberinto (lobby)
Desde esta página podemos ver los laberintos disponibles para jugar y también una descripción de los mismos. Tener presente que pueden ser más o menos de tres laberintos.
Jugar en habitación
Desde esta página tenemos que poder realizar las acciones disponibles en una habitación, como así también usar los items que tenemos en el inventario.
Cambios Posibles:
Abandonar Laberinto
Cuando un jugador decide abandonar el laberinto, se muestra esta ventana de confirmación. Si acepta vuelve a la pantalla de seleccionar laberinto. Si cancela no tiene efecto.
Ganar el Laberinto
En vez de mostrar una ventana modal, se abre una nueva pantalla dando las opciones de volver a jugar o ir a la selección de laberinto.
Nuestro objetivo es tener una aplicación mobile que permita visualizar los laberintos y posible y gestionar nuestro inventario.
Para ello debe:
Aclaraciones:
OJO: Que no haya código repetido en la vista