###Nota:
Este proytecto no busca crear un juego que tenga un grado de calidad alto, mas bien busca mediante una aplicacion real plasmar todos los conceptos acerca del paradigmas orientado a objetos en un proyecto real.
#Descripción del Proyecto UTN Combat es un juego de combate por turnos desarrollado como proyecto académico, donde dos jugadores seleccionan personajes con habilidades únicas y luchan en un escenario dinámico. El juego implementa un sistema estratégico que prioriza la velocidad de los personajes para determinar el orden de ataque, junto con una interfaz visual intuitiva que muestra barras de vida/energía y controles contextuales.
#Características Principales: Selección de Personajes: 8 personajes jugables con 4 clases distintas (Guerrero, Mago, Arquero, Asesino).
Sistema de Habilidades: 4 habilidades únicas por personaje con costos de energía y efectos variados (ataque, mejora de atributos, curación).
Combate Estratégico: Mecánica de preparación de acciones y ejecución por velocidad.
Gestión de Estados: Barras dinámicas de vida/energía con representación visual proporcional.
Sistema de Sonido: Música temática y efectos de sonido contextuales.
Control por Teclado: Configuración flexible de controles para dos jugadores.
Técnicas de Orientación a Objetos Implementadas ##1. Herencia y Polimorfismo Jerarquía de Personajes: Clase base Personaje con especializaciones (Guerrero, Mago, Arquero, Asesino) que sobrescriben métodos como inicializarHabilidades() y atacarAlResto().
Sistema de Habilidades: Clase abstracta Habilidad con implementaciones concretas (HabilidadAtaque, HabilidadNoOfensiva) que definen el método polimórfico usarHabilidad().
##2. Encapsulación y Abstracción Gestión de Estado: Propiedades privadas (vida, energia, preparado) con métodos controlados para modificar estado (restarVida(), listoParaPelear()).
Componentes Visuales: Clases Visual y BarraGeneral que abstraen la lógica de representación gráfica.
##3. Patrones de Diseño Singleton: gameManager centraliza la configuración del juego y transiciones entre estados.
Strategy: Direcciones de movimiento (izquierda, derecha, etc.) implementadas como objetos con métodos siguiente() y opuesto().
Observer: Manejo de eventos de teclado mediante onPressDo y programación de acciones con schedule.
##4. Principio de Responsabilidad Única combate: Gestiona exclusivamente la lógica del flujo de batalla.
Selector: Encargado único del movimiento y selección de personajes.
BarraGeneral: Actualización visual independiente de los atributos del personaje.
##5. Composición y Agregación Personajes Compuestos: Cada Personaje contiene colecciones de Habilidad y BarraGeneral.
Gestión de Elementos: gameManager agrega y remueve visuales (Visual) según el estado del juego.
##6. Manejo de Colecciones Algoritmos de Ordenamiento: sortedBy para determinar orden de ataque por velocidad.
Operaciones sobre Listas: Uso de filter, map, y find para manipular personajes y estados.
##Diagrama Conceptual (Extracto)
Personaje <|-- Guerrero Personaje <|-- Mago Personaje <|-- Arquero Personaje <|-- Asesino
Habilidad <|-- HabilidadAtaque Habilidad <|-- HabilidadNoOfensiva
gameManager --> combate gameManager --> Selector gameManager --> Visual
combate --> Personaje
###Cómo Jugar Selección de Personajes:
Jugador 1: Flechas + Enter
Jugador 2: WASD + Enter
##Combate:
Jugador 1: Q/E/R/T para habilidades
Jugador 2: Z/X/C/V para habilidades
##Controles de Sonido:
0-3: Volumen y pausa de música
###Tecnologías Utilizadas Wollok Game: Motor gráfico principal
OOP Principles: Implementación avanzada de paradigma orientado a objetos
Git: Control de versiones
Proyecto desarrollado con fines académicos - Universidad Tecnológica Nacional