Bitácora - AdrianTEC/Proyecto-No1-Datos1 GitHub Wiki
CREACIÓN DEL PROYECTO Y PRIMERAS CLASE (2-7 de mayo)
-Se creó el repositorio a utilizar para el proyecto. Se enviaron las invitaciones a los demás integrantes para que estos se pudiesen unir.
-Se crearon las primeras clases del proyecto. Estas consisten en :
Lista circular: Clase que permite la creación de una lista circular. Se tuvo que implementar en el proyecto ya que las especificaciones de este no permitían la utilización de librerías externas para usar listas o cualquier otra estructura de datos.
Casilla:Es la clase que definen a los nodos de la lita a utilizar. Se le crearon los atributos de posición, tipo y siguiente.
Camino: En esta clase se creó una nueva lista circular, la cuál va a ser utilizada como el camino en los que los jugadores se van a mover en el juego. Además, se colocaron las coordenadas en forma de matriz a utilizar para el camino que será colocado en el tablero del juego.
Jugador: Esta clase es la que define a los jugadores que se van a utilizar en el juego. Estos tienen de atributos nombre, posición, estrellas, monedas, imagen y ubicación en el mapa. Y de método se agregó uno que permite el movimiento del jugador en las casillas.
Partida: Es la utilizada para la pantalla principal o menú del juego. Se le creó una interfaz adecuada para el estilo del juego, se agregaron botones para la selección de jugadores y para iniciar el juego (lo que abrirá una nueva ventana en donde se manejará todo lo demás). Además, se colocó otro botón para la selección de la cantidad de rondas, la cuál definirá la cantidad de estas que tendrá el juego.
Tablero: Aquí es donde se desarrollará las partes principales del juego, ya que va a ser la clase principal en donde se unirán las demás para crear el juego. Se creó una interfaz en la cual se observan un fondo con un camino cuadrado, con desviaciones que servirán como las diferentes fases de este. Además, tiene un botón que permite mover al jugador y otro que permite cambiar de jugador. Aquí, se crea una nueva lista circular para el camino, se llaman a los jugadores necesarios y se colocan todas la imágenes para esta fase del juego.
Para las imágenes e interfaz del juego, se decidió seguir con un estilo definido como "Pixel Art", que como el nombre menciona, se enfoca en pixelear lo que se va a utilizar. Esto facilita la creación de imágenes para la utilización del juego, ya que es una forma de arte relativamente sencilla que permite la creación rápida y sencilla de ideas propias para utilizar en el proyecto.
COMMITS DE PRUEBA Y CONFIGURACIÓN DE GIT/GITHUB (13 de mayo)
-Se realizó una reunión para organizar y poner en funcionamiento de manera eficiente la conexión entre el repositorio local de git y github. Hubieron varios errores que no permitieron utilizar esta función de manera correcta, pero después de un par de horas todos los miembros fueron capaces de hacer commits, subir o descargar datos desde github a su repositorio local.
CORRECCIONES EN TABLERO Y PARTIDA/ TURNOS Y JUGADORES (14 - 15 de mayo)
Se arregló la función que permitía saber cual era el turno del jugador. Esta permitía hacer el cambio entre los jugadores, ya que dependiendo del turno, ese va a ser el jugador que va a realizar la acción.Además, se agregaron las imágenes de todos los jugadores, la cuales se mostrarán en el tablero dependiendo de la cantidad de jugadores que se hayan seleccionado en la primera pantalla. Se añadió la función que dependiendo la cantidad de jugadores se haya seleccionado al principio, va a colocar los jugadores con sus respectivas imágenes en el tablero. Se necesitaron varios commits para solucionar problemas que hubieron con los turnos de los jugadores, como con la selección de estos durante la pantalla principal (Partida) y sus cambios de turno en el Tablero.
En la clase de casilla, se agregó un nuevo método que permite saber el índice de la casilla seleccionada.
NUEVAS CLASES PARA ESTRUCTURAS DE DATOS(15 de mayo)
Debido a los requerimientos del proyecto, se tuvieron que agregar nuevas clases para la utilización de otras estructuras de datos, además de modificar las ya establecidas para que se adaptaran de la mejor manera con las nuevas. Se agregaron las clases Casilla Simple, Casilla Doble, y lista doblemente enlazada con sus respectivos métodos. Aún no tienen métodos. Se agregaron para diferenciar entre las estructuras ya hechas. La clase Casilla se agregó para tener la lista normal y para no utilizar la ya disponible (lista circular) cuando no se necesitaba. Por lo que, se tuvo que modificar la clase Lista Circular para que esta heredará de Lista y así simplificar su código.
NUEVA CLASE DADO (16 de mayo)
Se añadió una nueva clase para crear el dado a utilizar en el juego. Se genera un número random del 1 al 6 el cual determinará la cantidad de casillas que se va a mover el jugador. Todavía no se conecta con la función de movimiento. Se agregó la imagen a utilizar para el dado.
ARREGLO A CLASE DADOS Y NUEVOS DETALLES DE INTERFAZ (17-22 mayo)
Se agregaron nuevas funciones para poder unir la cantidad que dé el dado con el movimiento del jugador. Ahora, segúnl la cantidad que haya dado el dado, será la cantidad de casillas que se moverá el jugador. Función que enseña la cara del dado correspondiente con el número que haya salido. Se añadieron labels nuevo en la interfaz para saber la cantidad de rondas que hay en el juego, en cual se está y el turno actual del jugador. Se modificó la función de turnos ya que no funcionaba bien, ahora va de la manera en la que se esperaba. Los jugadores ya no se pueden mover después de que se acabaron las rondas.
CAMBIOS Y NUEVAS FUNCIONALIDADES (27-31 de mayo)
Se le agregó un sonido a los botones que se activa cuando estos se presionan. Se cambio la forma en la que se encapsulaban los atributos y se agregaron nuevos métodos a las clases para poder obtener y cambiar esos atributos. Nueva función en lista que permite aplicar las propiedades para poder identificar el tipo de casilla. Sirve, especialmente, para cuando un jugador cae en una casilla se identifique que tipo es y que hacer dependiendo del tipo.
FASES, CAMBIOS EN CASILLAS Y NUEVAS CLASES (31 de mayo - 2 de junio)
Modificaciones en la función de movimiento de jugador para que identifique y cambie de manera correcta las casillas en las que se mueve. Se agregaron las fases extras que va a tener el camino en el tablero. Estas son listas más pequeñas que conectan con el camino principal. Debido a las propiedades de las casillas es posible que el jugador se pueda pasar del camino principal a otra fase. Se creó una clase Pila que permite hacer una pila la cual será necesario para manejar los elementos más adelante. Dos nuevas clases fueron añadidas, Carta y Baraja, que se necesitaran más adelante para identificar el evento que aparecerá cuando el jugador caiga en una casilla de eventos.
ESTRELLAS Y PRIMER MINIJUEGO (3 de junio)
Se agregó una nueva clase Estrella, la cuál permitirá la creación de estrellas. Estas se generarán en el tablero de manera aleatoria después de la segunda ronda. Los jugadores que pases por su posición podrán comprarla si tiene la cantidad suficiente de monedas. Todavía el jugador no tiene la opción de comprarla, se comprará de manera automática. Se empezó el primer minijuego, StopMisil. Para esto se añadieron 3 clases, EventManager, Misil y StopMisil. Event Manager es el que maneja a los eventos y genera a los que no son videojuegos. Misil la clase que genera a ese objeto para poder ser utilizado en el minijuego. StopMisil es donde se construirá todo el minijuego. Se creó toda la interfaz, se añadieron las imágenes y se terminó de probar. El minijuego es completamente funcional.
CAMBIOS EN ESTRELLA Y CARTA/ SEGUNDO MINIJUEGO (4-5 de junio)
Se realizaron cambios en la clase Carta, que permiten que ahora al caer un jugador en una casilla se enseña la carta correspondiente al tipo de casilla. Además, se hicieron otro tipo de cambios que mejoraron la eficiencia del código y dejarlo en la menor cantidad posible. También se hicieron cambios en la clase Estrella, ya que ahora esta se genera de manera correcta en el tablero, ya que antes daba problemas en unos casos en específico. Se añadió un botón en el tablero para que el jugador tenga la opción de comprar la estrella. Se terminó por completo el segundo minijuego. Para el segundo minijuego se añadieron 2 clases, BarraTiempo y EscribirPalabra. La primera permite crear una barra verde que se mostrará en la interfaz, la cual se irá disminuyendo conforme pasa el tiempo. No es exclusiva para este minijuego. Escribir Palabra es la clase del nuevo minijuego, el cual es funcional y casi completamente terminado.Consiste en escribir una palabra ya dada(desordenada) en un tiempo límite. Además, en el Tablero se añadió unos labels en forma de tabla que permiten saber en tiempo real las estrellas y monedas de cada jugador.
CAMBIOS EN CARTAS/ NUEVOS EVENTOS/ TERCER MINIJUEGO (6 de junio)
Se solucionaron carios problemas que habían con la clase cartas y la generación de estas en el tablero, ya que no se estaban enseñando de la manera correcta. Cambios en el código para hacer más corto y eficiente. Se añadió un botón de prueba para desplegar las cartas y ver si se genera la correcta en la casilla indicada. Se añadió una funcionalidad a las cartas, que permite eliminarlas al darles click. Se añadieron nuevos métodos a la clase EventManager, los cuales consisten en teletransportar al jugador a una ubicación aleatoria del mapa y cambiar las posiciones de dos jugadores. Estos van a ser eventos que se van a activar dependiendo de la casilla y su posición en la pila. Se añadió el tercer minijuego completo, CowBoys. Consiste de las clases CowBoys y Vaquero. Consiste en que los dos jugadores can a tener una tecla, y una vez se den la señal el que la presione de primero ganará la partida. El juego es completamente funcional. También se hicieron otras correcciones importes a los demás minijuegos para poderlos adaptar de la mejor manera al tablero.
NUEVOS MINIJUEGOS Y OPTIMIZACIÓN DE CLASES (7 de junio)
Se optimizaron gran cantidad de clases, tanto en la eficiencia como en la funcionalidad. Muchas funciones fueron actualizadas o cambiadas para una mejor adaptación al juego. Además,, se eliminaron todos los elementos que no eran necesarios ni importantes en el código. Las conexiones entre funciones y clases también fueron mejoradas para empezar a unir todo el juego y trabajara la mayoría en una sola llamada. Se modificaron las cartas, las cuales ahora aparecerán de diferentes colores y se muestran en el tablero de manera correcta. Se añadió el juego buscaminas, el cual añade las clases MineSweeper y Mina. Consiste en una serie de minas marinas, unas activas y otras desactivadas. El jugador deberá quitar la mayor cantidad de minas en el tiempo establecido. Después de varios cambios el juego se volvió completamente funcional. Se añadió el juego Carta más Alta, la cual consiste en una baraja de cartas, de la cual los jugadores deberán seleccionar una, el que tenga la mayor ganará. Se añadieron las clases HighestCard y Carta.
EVENTOS Y OPTIMIZACIÓN (8 de junio)
Se añadieron los demás métodos de eventos que hacían falta, como regalar monedas, obtener o robar estrellas, entre otros. Se continuó con la optimización de las clases, especialmente en Tablero donde se acomodaron clases y se hicieron cambios para poder verla de una manera más ordenado. Además, de cambios hechos para poder utilizar los eventos de manera óptima en el tablero.
DOCUMENTACIÓN Y ÚLTIMOS DETALLES (9-11 de junio)
Se empezó con la estructuración definitiva de la documentación. Se completo en lo que ya se había estado trabajando, se añadió la versión completa de la bitácora, problema del proyecta, explicación de la implementación de la estructura de datos entre otras cosas. Se ha trabajo tanto en Jira para terminar de organizar el proyecto como en Lucid Chart para hacer el diagrama de clases solicitado. Se ha seguido con los últimos detalles importes del proyecto, los cuales consisten especialmente en hacer que todo trabaje en un solo conjunto. Se agregaron los eventos a la pila, lo cual permite llamarlos una cantidad limitada de veces. Se conectaron estos con el event manager que permite generarlos en el tablero, además de poder iniciar los minijuegos cuando así lo requiera el juego principal.