Nos llamaron desde una tierra muy dulce para solucionar los problemas con el manejo y distribucion de dulces.
En esta tierra todo esta hecho de dulces y realmente ya sobran, los pobladores están asqueados y ya no saben qué hacer con ellos.
En su desesperación descubrieron comportamientos extraños y beneficiosos para hacer desaparecer la sobre-población actual, al juntar tres dulces del mismo color estos explotan! Entonces idearon un juego tan adictivo como los dulces para hacer desaparecer sus golosinas y ahora todo el mundo quiere jugarlo! Por eso nos pidieron que desarrollemos versiones de este juego.
Existen 6 colores posibles de dulces:
Según el nivel de dificultad en el que estemos jugando es la cantidad de colores que aparecen.
Los niveles de dificultad son: Facil (4 colores), Medio (5 colores), Dificil (6 colores)
En todos los casos los dulces pueden intercambiarse con el dulce que se encuentre a sus costados (izquierda, derecha, arriba y abajo) exceptuando los bordes que tienen algunos movimientos restringidos.
Para que el intercambio sea válido tiene que haber una explosión como resultado, es decir que al momento de realizar la combinación se forma una línea de dulces del mismo color de al menos tres dulces, veámoslo con ejemplos:
En este caso el dulce naranja que tenemos en el casillero del medio sólo puede intercambiarse con el rojo, ya que al moverlo se completa una línea de 3 dulces naranjas.
El juego consta de un conjunto de niveles. Cada nivel tiene un tablero. No necesariamente todos los tableros son de las mismas dimensiones. Probablemente a medida que se avanza de nivel los tableros sean más grandes, pero una cosa es segura solamente vamos a manejar tableros rectangulares.
Eventualmente si completamos todos los niveles ganamos, y termina el juego.
A lo cual debería aparecer una notificación al usuario de “Felicitaciones”, y luego reiniciar.
Durante un nivel es donde realmente sucede todo el juego. Como ya dijimos tiene un un tablero, que iniciará con caramelos distribuidos en forma aleatoria.
Una forma en “pseudo-código” de hacer esto sería:
for i in celdas:
caramelo = unoRandom(nivel.caramelos)
nivel.insertar(i, caramelo)
“unoRandom” sería una función útil que dada una lista de objetos retorna uno cualquiera.
Todos los niveles tienen:
En principio no contamos con la idea de vidas. Si se pierde en un nivel, éste se reinicia (solo éste nivel, no todo el juego!).
Opcionalmente cada nivel puede tener una cantidad variable de “Objetivos”. De nuevo, al avanzar los niveles serán más complicados y tendrán más objetivos.
Un objetivo es algo que el usuario tienen que hacer durante la jugada en el nivel. Además de conseguir los puntos en a lo sumo la cantidad de movimientos dados.
En principio vamos a tener dos tipos de objetivos que se explican a continuación:
Cantidad de Explosiones por Color
En este objetivo se fuerza al usuario a realizar “X” cantidad de explosiones de un color dado.
Ejemplo:
Se definen entonces dos cosas en esta regla:
“Grandes Explosiones”
La idea acá es que el usuario tiene que realizar una “gran explosión”, es decir que en una unica explosión estallen una cantidad superior a 3 caramelos del mismo color.
Por ejemplo:
Se definen entonces dos cosas en este objetivo:
Para pasar un nivel entonces ahora se debe conseguir:
Objetivos y Puntos
Cuando se cumple con un objetivo éste agrega puntos extra al usuario. Esto también depende de cada objetivo. Es decir que es un parámetro más que se configura junto con los demás del objetivo.
Habrá que mostrar de alguna forma al usuario un mensaje cuando esto ocurra.
Una buena forma sería pensar la pantalla del nivel como que tiene una sección de “mensajes”, donde van apareciendo todas estas cositas.
.
Resultado del nivel
Al completar la cantidad máxima de movimientos, debe de informarse el resultado del nivel.
Si se cumplieron con los objetivos del nivel, se completará el nivel.
Por lo que se debe informar:
Algo así es en el juego original:
Solo para que se den una idea de la información que se presenta! Claro que hay que ver cómo mostrar esto sin esa capacidad de diseño gráfico!
Si no se cumplieron los objetivos se tiene que informar que el nivel no ha sido superado mostrando información sobre los objetivos que NO se superaron y el mapa con su avance.
Además de proveer la interfaz para jugar, se deberá construir una sección de administración que servirá para crear/modificar el juego.
Esta interfaz deberá permitir:
El foco de arena está centrado en los conceptos de programación y diseño (lógico) de UI’s con lo cual sus capacidades gráficas son “limitadas”.
Por esto es que tendrán que encontrar la forma de construir toda la funcionalidad que enumeramos, con los controles disponibles.
Para ayudar un poquito acá les mostramos a modo de ejemplo algunos mockups. Ojo ! no quiere decir que tengan que hacer las pantallas exáctamente iguales a estas ! Usen la imaginación !!! Agreguen mejoras ! Hagan su propia experiencia !
Agregar Objetivo
Es importante no perder el objetivo del tp y siempre viene bien releerlo: https://sites.google.com/site/programacionui/material/tps#TOC-Trabajo-Pr-ctico-2
Nos pidieron extender el universo del Candy Crush y publicar a todo el mundo la posibilidad de ingresar y configurar tus propios niveles!
Para esto hay que implementar en una tecnología web las siguientes pantallas:
(creación, modificación, eliminar, búsqueda)
(Creación, Edición)
Para explicar el funcionamiento de la aplicación nos presentaron el siguiente diagrama:
Esto es puramente subjetivo, y no lo tienen que tomar mas que como una guía, la idea es darles un orden de las pantallas mas sencillas a las mas dificiles.
Un esquema sugerido para organizar la construcción de la interfaz, dejando para el final lo que vemos después: