Contenidos

Aclaracion

Descripcion

Casos de uso

Diagramas UML

Pruebas

Dificultades

Tutorial

Descarga


Integrantes:

    Pilar Arancibia

    Felipe Pinto









Aclaración

  • Numen es un juego desarrollado por Sergio Olmos y Pilar Arancibia.
  • Esta página es un informe para el ramo ELO329 - Diseño y Programación orientada a objetos.
  • El videojuego mostrado en esta página, no corresponde a la implementación final que se le quiere dar a futuro.
  • Este proyecto contiene material que no fue creado por ninguno de nosotros, estos son:
    • Las ilustraciones.
    • La música.

  • Sin embargo, tanto el diseño de las cartas y tarjetas, íconos y código, es de nuestra autoría.
  • El código no cuenta con un sistema de inteligencia artificial, servidores o conectividad LAN, por lo que sólo tiene la opción de jugarse de manera local, en contra de otra persona.








  • Descripción

    En la vida contemporánea, se ha vuelto una necesidad latente la búsqueda de medios de entretenimiento y competencia, tal que nos brinde una experiencia tanto agradable como desafiante.

    Se plantea el desarrollo de un juego que combine distintos aspectos de experiencias ya conocidas. Un juego de estrategia que mediante el ambiente lúdico, ayude a desarrollar distintas capacidades, y brindar un entorno de entretenimiento y competencia, inspirado principalmente por el conocido juego del 'ajedrez', donde dos bandos se enfrentan con el objetivo de eliminar al 'Rey' enemigo.

    Numen es un juego de estratégia de tablero y cartas, cuyo objetivo es llevar los puntos de vida del Rey enemigo a cero. Para esto contarás con un equipo conformado por 5 piezas, con diferentes roles, y un mazo de 20 cartas, las cuales deberás administrar para hacerte con la victoria!.









    Casos de uso

    Caso 1

    ► Nombre: Conocer el juego.

    ► Propósito: Familiarizarse con las distintas mecánicas del juego y aprender cómo utilizarlas de la mejor manera.

    ► Actor: El jugador.

    ► Pre-Condiciones: -Interfaz inicializada.

               -Tener acceso a internet.

    ► Evento: Clickear el botón “Cómo jugar” en la interfaz inicial del juego.

    ► Post-Condiciones: El jugador tiene los conocimientos mínimos sobre este.

    ► Tipo: Manual.

    Curso normal de eventos:

    Curso aternativo de eventos:



    Caso 2

    ► Nombre: Usar una carta sobre un personaje (Arma - “Daga Oculta”).

    ► Propósito: El usuario desea equipar a un personaje con “Daga oculta”.

    ► Actor: El jugador.

    ► Pre-Condiciones: -Se ha iniciado el software.

               -El juego se encuentra en fase 1.

               -El usuario se encuentra en su turno.

               -Tiene la carta en su mano.

               -Tiene piedras suficientes para utilizar la carta.

               -El personaje no tiene otro “Item” equipado.

               -El personaje que desea equipar es de tipo “Rango”.

    ► Evento: El usuario selecciona la carta “Daga oculta” y luego selecciona el personaje que quiere equipar.

    ► Post-Condiciones: El personaje obtiene un “Item” y la habilidad para atacar a enemigos en su punto ciego (poder atacar en casillas adyacentes).

    ► Tipo: Manual.

    Curso normal de eventos:

    Curso aternativo de eventos:



    Caso 3

    ► Nombre: Usar habilidad de “Forjado” (Inmovilizar a un enemigo).

    ► Propósito: El usuario desea utilizar la habilidad de “Forjado”, para inmovilizar a un enemigo por un turno.

    ► Actor: El usuario.

    ► Pre-Condiciones: -Se ha iniciado el software.

               -El juego se encuentra en fase 1.

               -El usuario se encuentra en su turno.

               -Tiene a “Forjado” liberado en su equipo.

               -”Forjado” no tiene bloqueados sus ataques (no ha atacado en el turno).

               -La pieza enemiga se encuentra dentro del rango de ataque de “Forjado”.

               -La pieza enemiga tiene una vida superior a los puntos de ataque de “Forjado” (Sobrevivirá a un ataque).

               -La pieza enemiga no fue inmovilizada en el turno anterior.

    ► Evento: El usuario selecciona a “Forjado” y luego una casilla roja en donde se encuentre la pieza que desea atacar.

    ► Post-Condiciones: La pieza enemiga sufre un daño equivalente a los puntos de ataque de “Forjado”, y se bloquean sus movimientos para el próximo turno.

    ► Tipo: Manual.

    Curso normal de eventos:

    Curso aternativo de eventos:









    Diagramas UML

    Diagrama de clases


    Diagrama de clases


    Cabe mencionar que este diagrama de clases pudo haberse resumido y estructurado de mejor forma.



    Diagrama de secuencias


    Para la visualización de este diagrama de secuencias, se obviaron algunos eventos anteriores, para la simplificación de la imagen.









    Pruebas

    ►Caso de uso 1: Aprender más sobre cómo jugar.

    ►Caso de uso 2: Utilizar la carta "Daga oculta" en un personaje aliado.

    ►Caso de uso 3: Utilizar la habilidad de "Forjado", para inmobilizar a un enemigo durante un turno.









    Dificultades

    De principio a fin durante el proceso de trabajo, se encontraron muchas dificultades en el camino, principalmente por la inexperiencia, pues armabamos una estructura de clases o de comportamiento tal que funcionaba bien, pero al momento de agregar nuevas funcionalidades, comportamientos o clases, nos dabamos cuenta que podriamos haberlo hecho de otra forma más eficiente.

    La eficiencia y optimización tanto de la estructura como del comportamiento del código fue un gran desafío, actualmente y por tema del corto tiempo que teniamos para entregar, hicimos muchas cosas que son actualmente una muy mala práctica, como lo es declarar atributos públicos en un clase y modificarlos en otras clases sin la utilización de métodos "setters", pues se hacía mucho más rápido de esa forma probar si es que la idea que se tenía para una determinada acción funcionaría.

    Para programar muchas veces hay que ser muy creativo, y uno no es creativo todos los días, por lo que podíamos estar mucho tiempo pensando en cómo se podría implementar una u otra cosa dentro del código.

    Se estuvo mucho tiempo pensando en la forma de implementar las cartas dentro del juego, obviando la clase "Card", se discutía entre hacer una clase para cada carta. Por suerte se llegó a una buena solución, haciendo clases de los tipos de cartas, y cada carta siendo un método dentro de estas.

    Muchas veces cuando uno pensaba que el código estaba listo, al probarlo siempre aparecía uno que otro "bug", y a medida que se iban solucionando, aparecían muchos más, incluso hasta ahora el código aguarda varios de ellos, y muchos tal vez aún no los conocemos.

    Listado de "bugs" que se conocen actualmente y cosas que faltaron implementar

    ► "Aluhen" solo está activando su habilidad para daños directos, cuando debiera ser para cualquier tipo de daño. (No alcance!).

    ► Si se equipa a un peón con "Ballesta Ligera" y luego se libera, a una unidad del tipo "Rango", esta unidad quedará con el atributo del peón es decir, tendrá más alcance, en vez de más ataque.

    ► Si hay bestias muertas, y "Athus" utilizada su "Habilidad del rey" no se pueden ubicar unidades en las ultimas casillas. (Esto era muy fácil de implementar, pero no me alcanzó el tiempo).

    ► "Bug" se produce cuando "Seigh" utiliza cartas de movimiento y su habilidad en un mismo momento (Sin gastar la otra).

    ► "Bug" con "Curandero", desaparece la imagen al tener solo la habilidad activa.









    Tutoriales

    ¡Puedes ver aquí una lista de videos demostrativos, para que conozcas las reglas básicas del juego!:




    ¡Estos videos están sujetos a actualizaciones!.








    Descarga

    Puedes descargar el juego haciendo click aquí.

    ¡No te olvides de leer el README y extraer la carpeta contenida en el archivo .zip!.