TP - Candy Crush

El Juego

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.

Los dulces

Existen 6 colores posibles de dulces:

    1. Amarillo
    2. Celeste
    3. Verde
    4. Rojo
    5. Naranja
    6. Violeta

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

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.

.

Nivel

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.

Tablero

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.

Puntaje y Movimientos

Todos los niveles tienen:

    • Un puntaje mínimo a alcanzar para pasar el nivel.
    • Una cantidad de movimientos máximo a realizar. Si un usuario alcanza ese máximo, sin pasar los puntos mínimos del nivel, pierde.

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!).

Objetivos del Nivel

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
    • Grandes Explosiones

Cantidad de Explosiones por Color

En este objetivo se fuerza al usuario a realizar “X” cantidad de explosiones de un color dado.

Ejemplo:

    • “Realizar 3 explosiones de caramelos Rojos”
    • “Realizar 1 explosión de caramelos Verdes”

Se definen entonces dos cosas en esta regla:

    • Cantidad de explosiones
    • Color

“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:

    • “Explotar 4 Rojos”
    • “Explotar 5 Verdes”

Se definen entonces dos cosas en este objetivo:

    • Color
    • Cantidad de caramelos a explotar

Objetivos y Niveles

Para pasar un nivel entonces ahora se debe conseguir:

    • la cantidad mínima de puntos
    • cumplir con todos los objetivos
    • cumpliendo con el máximo de movimientos disponibles del nivel.

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:

    • Nivel completado:
      • El nombre del nivel completado
      • Los puntos que obtuvo el usuario
      • Su puntaje total (se le suman los que obtuvo).
    • Próximo Nivel:
      • El nombre del siguiente nivel
      • Los datos del nivel (puntos mínimos, movimientos y objetivos, por ejemplo).
    • Mapa:
      • De alguna forma que se pueda visualizar cómo está avanzando el usuario en el juego, es decir en el “caminito de niveles”.

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.

Administración del Juego

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:

    • Agregar un Nivel
    • Remover un Nivel
    • Editar un Nivel
    • Al crear o editar un nivel:
      • Especificar:
        • un nombre
        • máximo de movimientos
        • puntaje mínimo
        • dimensiones (filas x columnas)
      • Elegir los caramelos que intervendrán.
      • Configurar los objetivos:
        • Agregar
        • Remover
        • Editar

Ejemplo de Pantallas adaptadas a Arena

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 !

Nivel superado

Nivel no superado

Configurar Juego

Agregar Objetivo

Editar Objetivo

TP2- Web!

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:

Pantalla para ingresar

  • Debe ser posible ingresar a la aplicación
  • Una persona que no ingresa su nombre (o solo ingresa espacios) NO puede ingresar
    • Debe informarse que no ingreso un nombre valido
  • Una posible pantalla para el Ingreso a la aplicación es:

Pantalla de Niveles

(creación, modificación, eliminar, búsqueda)

  • Todo lo mencionado debe verse en la misma pantalla
  • Debe ser posible definir un nuevo nivel
  • Debe ser posible editar un nivel ya creado
  • Debe ser posible filtrar los niveles por nombre
  • Debe ser posible crear, editar, eliminar objetivos de grandes explosiones o explosiones por color (no es necesario que se haga en la misma pantalla pero las acciones deben de estar disponibles desde esta pantalla)
  • Debe validarse que se hayan ingresado todos los datos y al menos un objetivo
  • Debe conservarse el estado del nivel en creación luego de eliminar un nivel o crear/editar/eliminar objetivos
  • Una posible pantalla es:

Pantallas de Objetivos

(Creación, Edición)

  • Debe de ser posible crear y editar objetivos de Explosiones por color y grandes explosiones
  • Es obligatorio seleccionar el color y la cantidad para todos los objetivos
  • Posibles pantallas para la creación y edición de los objetivos:

Navegación

Para explicar el funcionamiento de la aplicación nos presentaron el siguiente diagrama:

Cómo ordenar el trabajo

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:

  • Pantalla de ingreso
  • Pantalla de Objetivos (creación / edicion)
  • Pantalla de niveles