
Volver al catálogo
2025-02 — ECIN-00307
Programación Orientada a Objetos
Ayudantía Intensiva N°2
Ayudantía Intensiva - Sistema de Gestión de Torneos de eSports
Objetivos
- Dominar la programación orientada a objetos en Java
- Implementar patrones de diseño avanzados (Singleton, Factory, Visitor y Strategy)
- Desarrollar interfaces gráficas interactivas
Ejercicio: Sistema de Gestión de Torneos de League of Legends
League of Legends es uno de los juegos más populares en el mundo de los eSports. Cada temporada se organizan múltiples torneos donde equipos profesionales y amateur compiten por la gloria. Se necesita un sistema completo que gestione torneos, equipos, jugadores y sus estadísticas.
Se te pide crear un programa en Java que maneje lo siguiente:
Estructura del Sistema
- El sistema puede tener múltiples Torneos.
- Un Torneo tiene muchos Equipos participantes.
- Un Equipo tiene 5 Jugadores (roles: Top, Jungle, Mid, ADC, Support).
- Cada Jugador tiene estadísticas individuales.
Archivos de Entrada
El sistema debe leer los siguientes archivos TXT al iniciar:
Torneos.txt
T001;Spring Split 2024;ACTIVO;Summoner's Rift;BO3
T002;MSI 2024;FINALIZADO;Summoner's Rift;BO5
T003;Worlds 2024;PROXIMO;Summoner's Rift;BO5
T004;Rift Rivals;ACTIVO;Summoner's Rift;BO1
T005;All-Stars;PROXIMO;Howling Abyss;BO3
Formato:
ID;Nombre;Estado;Mapa;FormatoPartidasEquipos.txt
T9;Coach Lee;5;T001;T002;T004
G2 Esports;Grabbz;8;T001;T002;T003;T004
Fnatic;Yamato;6;T001;T003
Cloud9;Reapered;10;T002;T004
T1;Kkoma;15;T001;T002;T003;T004;T005
DRX;Cvmax;7;T003;T005
Team Liquid;Jatt;4;T001;T004
Formato:
NombreEquipo;NombreEntrenador;ExperienciaEntrenador;TorneosParticipados...Jugadores.txt
Faker;T1;Mid;1250;8.5;3.2;AGRESIVO;ASESINO
Caps;G2 Esports;Mid;980;7.8;2.9;EQUILIBRADO;HIBRIDO
Showmaker;DRX;Mid;1050;8.0;3.5;AGRESIVO;MAGO
Perkz;Cloud9;Mid;890;7.5;3.0;EQUILIBRADO;HIBRIDO
Zeus;T1;Top;760;6.5;2.1;AGRESIVO;45;78
Broken Blade;G2 Esports;Top;720;6.8;2.5;EQUILIBRADO;38;72
Wunder;Fnatic;Top;650;6.2;2.8;DEFENSIVO;52;85
Impact;Team Liquid;Top;680;6.0;3.0;DEFENSIVO;48;80
Oner;T1;Jungle;620;5.2;4.8;EQUILIBRADO;67;142
Jankos;G2 Esports;Jungle;580;4.9;5.1;AGRESIVO;54;128
Inspired;Cloud9;Jungle;610;5.5;4.5;DEFENSIVO;71;135
Pyosik;DRX;Jungle;590;5.0;4.9;EQUILIBRADO;63;130
Gumayusi;T1;ADC;1340;9.8;1.5;AGRESIVO;9.2;1250
Rekkles;Fnatic;ADC;1100;9.2;1.8;DEFENSIVO;8.8;1180
Hans Sama;Team Liquid;ADC;1050;8.9;2.0;EQUILIBRADO;8.5;1150
Deft;DRX;ADC;1200;9.5;1.6;EQUILIBRADO;9.0;1220
Keria;T1;Support;380;2.5;8.9;DEFENSIVO;45;28;875.5
Mikyx;G2 Esports;Support;320;2.8;7.5;EQUILIBRADO;42;25;820.3
Hylissang;Fnatic;Support;290;2.3;8.2;AGRESIVO;38;22;790.8
CoreJJ;Team Liquid;Support;350;2.6;8.0;EQUILIBRADO;48;30;910.2
BeryL;DRX;Support;330;2.4;7.8;DEFENSIVO;44;26;850.0
Formatos por Rol:
- Atributos generales:
Nickname;Equipo;Rol;Kills;KDA;MuertesPorPartida;EstiloJuego - Top:
...;TeleportUsage;Resistencia - Jungle:
...;ObjetivosAsegurados;GanksExitosos - Mid:
...;TipoMid - ADC:
...;FarmPorMinuto;DañoPorSegundo - Support:
...;WardsColocados;WardsEliminados;UtilidadProporcionada
Requerimientos del Sistema
1. Arquitectura y Patrones de Diseño
Patrón Singleton
- Implementar la clase
Sistemacomo Singleton que gestione:- torneos
- equipos
- jugadores
- Métodos para obtener y filtrar datos
Patrón Factory
- Crear una clase que cree jugadores según el rol:
crearJugador(String rol, String[] datos)→ Retorna instancia correcta (Top, Jungle, Mid, ADC, Support)
Herencia e Interfaces
Jugador (Clase Abstracta) implements Visitable
├── TopLaner
├── Jungler
├── MidLaner
├── ADC
└── Support
Interfaces requeridas:
Visitable: Define métodoaceptar(Visitor visitor)Visitor: Define métodosvisitarJugador(Jugador j),obtenerResultado()
2. Patrón Visitor
Todos los visitors operan ÚNICAMENTE sobre objetos
JugadorRankingVisitor
- Visita: Jugadores individualmente
- Acumula: Lista de todos los jugadores visitados
- Genera: Top 10 jugadores según una métrica (KDA, Kills, o Estadística Específica)
=== RANKING DE JUGADORES ===
Métrica: KDA
1. Gumayusi (T1 - ADC) - KDA: 9.80
2. Rekkles (Fnatic - ADC) - KDA: 9.20
3. Hans Sama (Team Liquid - ADC) - KDA: 8.90
...
ReporteDetalladoVisitor
- Visita: Jugadores individualmente
- Genera: Reporte detallado de cada jugador con todas sus estadísticas (incluidas las específicas de su rol)
=== REPORTE DETALLADO DE JUGADORES ===
Jugador: Faker
Equipo: T1
Rol: Mid
Kills: 1250 | KDA: 8.50 | Muertes/Partida: 3.20
Estilo de Juego: AGRESIVO
Tipo Mid: ASESINO
Jugador: Zeus
Equipo: T1
Rol: Top
Kills: 760 | KDA: 6.50 | Muertes/Partida: 2.10
Estilo de Juego: AGRESIVO
Teleport Usage: 45 | Resistencia: 78
...
Cómo usar los Visitors:
// Ejemplo de uso
EstadisticasVisitor statsVisitor = new EstadisticasVisitor();
for (Jugador jugador : sistema.getJugadores()) {
jugador.aceptar(statsVisitor);
}
String reporte = statsVisitor.obtenerResultado();
3. Patrón Strategy
Todas las strategies operan sobre
ArrayList<Jugador>OrdenarPorKDA
- Ordena jugadores de mayor a menor KDA
OrdenarPorKills
- Ordena jugadores de mayor a menor cantidad de Kills
Interfaz Strategy:
public interface OrdenamientoStrategy {
void ordenar(ArrayList<Jugador> jugadores);
String obtenerNombreEstrategia();
}
Cómo usar Strategy:
// Ejemplo de uso
OrdenamientoStrategy estrategia = new OrdenarPorKDA();
estrategia.ordenar(jugadores);
// La lista 'jugadores' ahora está ordenada
Interfaz Gráfica
Desarrollar una interfaz usando Java Swing con las siguientes funcionalidades:
Ventana Principal
Usar
JTabbedPane con 4 pestañas:1. Pestaña Torneos
- JTable mostrando: ID, Nombre, Estado, Mapa, Formato
- JButton "Ver Detalles": Abre diálogo mostrando:
- Información del torneo
- Lista de equipos participantes
- Conteo de jugadores totales
2. Pestaña Equipos
- JTable mostrando: Nombre, Nombre Entrenador, Experiencia Entrenador, Cantidad Jugadores, Torneos Jugados
- JTextField para búsqueda por nombre (filtro en tiempo real)
- JButton "Ver Roster": Abre diálogo mostrando:
- Los 5 jugadores del equipo (tabla con todas sus stats)
3. Pestaña Jugadores (Aplicar Strategy)
- JTable mostrando: Nickname, Equipo, Rol, Kills, KDA, Muertes/Partida, Estilo
- Panel de Ordenamiento:
- JLabel "Ordenar por:"
- JComboBox con opciones:
- "KDA (Mayor a Menor)"
- "Kills (Mayor a Menor)"
- JButton "Aplicar": Aplica el Strategy seleccionado y actualiza la tabla
- JButton "Restablecer": Vuelve al orden original (por aparición en archivo)
4. Pestaña Reportes (Aplicar Visitor)
- Panel de Selección:
- JRadioButton (ButtonGroup):
- ( ) Ranking de Jugadores
- ( ) Reporte Detallado de Jugadores
- JRadioButton (ButtonGroup):
- JButton "Generar Reporte":
- Aplica el Visitor correspondiente
- Muestra resultado en JTextArea con scroll
- JButton "Limpiar": Limpia el área de texto
Requisitos Técnicos
Obligatorio:
- Uso de
ArrayListpara todas las colecciones - Lectura completa de los 3 archivos TXT al iniciar
- Implementación correcta de:
- Patrón Singleton (Sistema)
- Patrón Factory (JugadorFactory)
- Patrón Visitor (2 visitantes que operan sobre Jugador)
- Patrón Strategy (2 estrategias que ordenan ArrayList<Jugador>)
- Herencia
- Interfaz gráfica completamente funcional
- Manejo básico de excepciones en lectura de archivos
Detalles de Implementación:
Sistema (Singleton):
public class Sistema {
private static Sistema instancia;
private ArrayList<Torneo> torneos;
private ArrayList<Equipo> equipos;
private ArrayList<Jugador> jugadores;
private Sistema() { }
public static Sistema obtenerInstancia() {
if (instancia == null) {
instancia = new Sistema();
}
return instancia;
}
public void cargarDatos() {
// Leer archivos TXT
}
}
Visitor Pattern:
- Cada jugador puede aceptar un visitor:
jugador.aceptar(visitor) - El visitor procesa cada jugador y acumula información
- Al final, genera un reporte con
visitor.obtenerResultado()
Strategy Pattern:
- Se selecciona una estrategia desde la GUI
- Se aplica sobre el ArrayList de jugadores:
estrategia.ordenar(jugadores) - La tabla se actualiza para reflejar el nuevo orden
- Link a Videos:
Ver carpeta de videos
Ayudantía 9 - GUI
Novena Ayudantía
Objetivos
- Implementar interfaces gráficas de usuario (GUI) en Java Swing.
Ejercicio 1: Sistema de Gestión de Estudiantes - GUI
Crear una aplicación de escritorio con interfaz gráfica para gestionar información de estudiantes universitarios. La aplicación debe permitir registrar estudiantes, consultar información y generar reportes básicos, todo a través de una interfaz visual intuitiva.
Por lo cual se te entregan los siguientes archivos txt:
Estudiantes.txt
12345678;Juan Pérez;Ingeniería Informática;3;7.5
87654321;María González;Psicología;2;8.2
11223344;Carlos López;Administración;4;6.8
55667788;Ana Torres;Derecho;1;9.1
RUT;Nombre;Carrera;Semestre;PromedioNotas
Ahora se te pide que el sistema pueda hacer lo siguiente:
========== SISTEMA ==========
* Cargar datos
* Agregar nuevo estudiante
* Filtrar estudiantes por nombre
* Generar estadísticas básicas
* Limpiar formulario
Ayudantía 8 - 2° Patrones de Diseño
Octava Ayudantía
Objetivos
- Comprender e implementar patrones Visitor y Strategy.
- Aplicar conceptos de forma simple y clara en el contexto de Albion Online.
Ejercicio 1
En Albion Online, los jugadores recolectan recursos en diferentes zonas y pueden usar distintas estrategias de recolección según la zona y el peligro. Además, necesitas un sistema que analice los recursos recolectados para calcular valores, aplicar bonificaciones y generar reportes.
Por lo cual se te entrega el siguiente archivo txt:
Recursos.txt
1;Madera de Roble;MADERA;50;AZUL;3
2;Mineral de Hierro;MINERAL;75;AMARILLA;4
3;Fibra de Algodón;FIBRA;40;AZUL;2
4;Cuero Crudo;CUERO;60;AMARILLA;3
5;Piedra Caliza;PIEDRA;55;AZUL;2
ID;Nombre;Tipo;Cantidad;Zona;Tier
Zonas: AZUL (segura), AMARILLA (riesgo medio), ROJA (riesgo alto), NEGRA (máximo riesgo)
Requisitos
Ahora se te pide crear el siguiente menu:
========== ALBION ONLINE - SISTEMA DE RECURSOS ==========
1) 📦 Gestión de Recursos
a) Ver todos los recursos recolectados
b) Recolectar recurso con estrategia actual
c) Cambiar estrategia de recolección
2) 🔍 Análisis de Inventario (Visitor)
a) Calcular valor total en plata
b) Aplicar bonificación premium
3) 🚪 Salir
Consideraciones
- El patrón Strategy debe implementar 2 estrategias
- Estrategia segura:
- Solo recolecta en zonas VERDES
- Cantidad base: x1.0
- Riesgo de muerte: 0%
- Tiempo: Normal
- Estrategia arriesgada:
- Recolecta en zonas AMARILLAS/ROJAS
- Cantidad base: x1.5
- Riesgo de muerte: 30%
- Tiempo: Rápido
- Estrategia segura:
- El patrón Visitor debe implementar 3 visitantes
- ValorCalculadorVisitor
- Calcula el valor en plata de cada recurso:
- BonificacionPremiumVisitor
- Aplica bonificación del 50% si el jugador tiene cuenta premium:
- ValorCalculadorVisitor
Aclaraciones
- El sistema debe permitir cambiar estrategias sin reiniciar
- Strategy se usa para cambiar CÓMO se recolectan recursos
- Visitor se usa para ANALIZAR los recursos sin modificar su clase
- El menú debe ser simple y directo
Ayudantía 7 - 1° Patrones de Diseño
La media de Programación Avanzada
Un grupo de estudiantes de la materia de Programación Avanzada actualmente se encuentra en riesgo de repitencia. Este grupo necesita revisar y analizar su probabilidad de aprobar la materia basándose en sus calificaciones actuales, asistencia y el desempeño histórico del curso.
Objetivos de aprendizaje
- Aplicar Programación Orientada a Objetos (Clases, Interfaces, Herencia)
- Implementar patrones de diseño: Singleton y Factory Pattern
- Utilizar estructuras de datos:
List,ArrayListyLinkedList - Comprender cuándo y cómo aplicar patrones de diseño
- Manejar lectura y procesamiento de archivos de texto
Archivos a usar
Para poblar el sistema se tienen los siguientes archivos de texto.
alumnos.txt
John Doe:5.2:6.0:7
Yuki Tanaka:3.5:3.8:5
Alessandro Rossi:4.8:4.5:8
Priya Patel:3.2:5.5:4
Mohammed Al-Rashid:6.0:4.2:9
Emma Schmidt:2.8:3.5:3
Javier Hernández:5.5:6.5:10
Amélie Dubois:4.0:3.9:6
Chen Wei:3.0:5.0:5
Sophia Kowalski:5.8:5.2:7
Ivan Petrov:2.5:2.8:2
Fatima Ibrahim:6.5:6.8:9
Rajesh Kumar:4.2:4.0:7
Anastasia Volkov:3.8:3.2:4
Lucas Da Silva:5.0:5.5:8
Aisha Okonkwo:4.5:4.8:6
Noah Johnson:3.6:5.9:7
Mei Lin Zhang:5.9:6.2:9
Santiago Morales:2.9:3.1:3
Olivia Anderson:6.2:5.8:8
El archivo tiene la siguiente estructura:
- Nombre alumno
- Nota examen 1
- Nota taller
- Clases asistidas
Requerimientos funcionales
- Calcular nota necesaria de cada alumno.
- Calcular asistencia necesaria de cada alumno.
- Predecir estatus de cada alumno.
- Calcular y comparar tasas de aprobación.
- Salir.
Aclaraciones
- Para calcular la nota final es: Nf=(((N1×P1)+(N2×P2) x 0.65) + (T x 0.35))
- Para cumplir con la asistencia sobre 60%:
- ((Clases asistidas + Clases necesitadas) / Clases totales) ≥ 0.6
- Para calcular el porcentaje de inasistencia es: (faltas totales / clases totales) * 100
- Para predecir el estatus de cada alumno: La nota final debe ser sobre 4, la asistencia actual sobre 60%, y la aprobación de exámenes y taller es independiente.
- Para calcular la tasa de aprobación: (N° alumnos aprobados / N° alumnos total) * 100
- La tasa de aprobación del semestre anterior fue 25%
- Hay 10 clases totales.
- Los porcentajes son 47% y 53% de los exámenes 1 y 2 respectivamente.
Ayudantía 6 - Arquitectura e Interfaces
Sexta Ayudantía
Objetivos
- Implementar Interfaces.
- Comprender la arquitectura.
Ejercicio 1
PetPapuVet es una clinica veterinaria de alto calibre donde las personas tienen una alta confianza para dejar a sus seres más queridos. Ultimamente tienen problemas en su sistema para calcular los precios de hospitalizacion post-operatorio, por lo cual se te contrata para que desarrolles un sistema para calcular los precios dependiendo del animal.
La veterinaria trabaja con las siguientes especies: Perros, Gatos, Cobayas, Hurones, Erizos.
Cada una tiene una formula diferente para calcular su precio:
Perros
40000+(Peso*Dias)
Gatos
30000+(Dias/Peso)
Cobayas
20000+(Edad/Peso)
Hurones
50000+(Edad*Peso)
Erizos
45000+(Edad/Dias)
Ahora se te entrega el siguiente txt con la informacion de los animales tratados recientemente:
Datos.txt
1;Max;Perro;5;24.3;3;SI
2;Luna;Gato;2;4.1;1;NO
3;Coco;Cobaya;1;0.9;5;SI
5;Milo;Hurón;3;1.8;7;SI
6;Nina;Erizo;4;0.6;4;NO
ID;Nombre;Especie;Edad;Peso;DiasHospitalizado;Frecuente
Donde Frecuente indica SI o NO dando a entender si el animal ha estado hospitalizado antes en la clinica, en caso de ser cliente regular entonces se le aplica un descuento del 25%.
Se te pide generar un menu con las siguentes opciones:
1) Imprimir informacion animales.
2) Calcular precio hospitalizacion por ID.
3) Menor y Mayor precio encontrado.
4) Salir.
Aclaraciones
- Debe usar una arquitectura aceptable.
- Debe usar Interfaces.
- No debe usar Herencia.
Ayudantía 5 - Herencia
Quinta Ayudantía
Objetivos
- Implementar Herencia.
- Reforzar resolución de problemas.
Ejercicio 1
Hace millones de años existian especies que dominaban tanto la tierra, el mar, y el cielo. Hoy los conocemos como "Dinosaurios", existian muchisimas especies de estos, que ha pesar de no tener ejemplares al día de hoy se han investigado a fondo para conocer el pasado de nuestro planeta.
Se nos pide recopilar información de como estos Dinosaurios se adaptaban y su tasa de supervivencia por especie, a partir del siguiente txt:
Dinosaurios.txt
1;Velociraptor;Terrestre;22;39;75;13
2;Tyrannosaurus Rex;Terrestre;30;27;8500;88
3;Triceratops;Terrestre;25;18;100;190
4;Brachiosaurus;Terrestre;40;15;9;21
ID;Especie;Hábitat;EsperanzaVida;VelocidadPromedio;AtributoUnico ---> Puede ser 1 o más atributos unicos dependiendo de la especie.
En esta ocasión se nos presentan 4 especies: Velociraptor, Tyrannosaurus Rex, Triceratops, Brachiosaurus. Cada una presenta diferentes atributos adicionales y formula distinta para calcular su adaptabilidad.
Velociraptor
InteligenciaColectiva;GarrasAfiladas
((VelocidadPromedio+InteligenciaColectiva)/EsperanzaVida)*GarrasAfiladas
Tyrannosaurus Rex
FuerzaMordida;DurezaEscamas
(FuerzaMordida+DurezaEscamas+VelocidadPromedio)/EsperanzaVida
Triceratops
CuernosDefensivos
(EsperanzaVida*CuernosDefensivos)/VelocidadPromedio
Brachiosaurus
LargoCuello
(EsperanzaVida*LargoCuello)/VelocidadPromedio
Ahora se nos pide generar el siguiente menu:
1) Filtrar Info de ejemplares por especie
2) Calcular adaptabilidades acumuladas de cada especie
3) Mostrar dinosaurio con mejor adaptabilidad
4) Salir
Aclaraciones
- Usar Herencia.
- Guardar todas las especies en una misma ArrayList.
Ayudantía 4 - Colecciones
Cuarta Ayudantía
Objetivos
- Implementar colecciones.
- Resolución de problematicas.
- Comprender y analizar problemas complejos.
Ejercicio 1
perr0pelud0 es un emergente Streamer el cuál disfruta de hacer contenido jugando videojuegos, pero ultimamente se ha visto complicado organizando sus estadisticas. Por lo cual decides ayudarlo a recopilar informacion respecto a sus viewers y los comentarios que emiten.
Por lo cual se te entregan los siguientes archivos txt:
Streams.txt
1;Ranked Radiant LAS;15-09-2025;Valorant;165;4
2;miau;17-09-2025;Hollow Knight Silksong;134;3
3;Wof Bark;16-09-2025;Valorant;220;5
ID;Titulo;Fecha;Categoría;Duración;ViewersPromedio
Viewers.txt
1;Claptzzz;1;2;3
2;Koshao;1;2;3
3;Jooseto;1;3
4;Tobaal;2;3
5;IDregg;1;3
ID;Nombre;StreamsPresentes...
Comentarios.txt
1;1;2;top 1 de mi corazon papu
1;5;12;como pinai esa
1;1;15;remontada insana
1;2;32;lo que juega perro peludo
2;3;10;hoy puro no hit
3;5;120;me conecto altiro
3;4;198;la mentira mas grande
3;1;110;su tft mejor
2;2;78;parkour insano
IDStream;IDViewer;minuto;comentario
Ahora se te pide crear el siguiente menu:
1) Ver info Streams
2) Ver info Viewers
3) Mostrar comentarios por Stream
4) Agregar comentario a un Stream
5) Salir
Aclaraciones
- Debe usar ArrayList.
- En el txt Viewers cada perfil ve una cantidad X de Streams.
Ayudantía 3 - Referencias
Tercera Ayudantía
Objetivos
- Repasar Clases y Objetos básicos.
- Comprender la manipulación de Objetos con referencias.
- Implementar Vectores estáticos y Matrices.
- Aplicar lectura de archivos de texto.
Ejercicio 1
Carlos, Andrea y Felipe son estudiantes que están desarrollando un sistema de gestión militar para su proyecto de programación. El sistema debe manejar información de soldados y simular formaciones tácticas en un campo de batalla.
Para esto cuentan con el siguiente archivo .txt
Juan_Perez Infanteria 25 1500 Madrid 2 3
Ana_Garcia Artilleria 30 2300 Barcelona 5 7
Pedro_Lopez Infanteria 22 800 Valencia 1 8
Nombre;Especialidad;Edad;Experiencia;CiudadOrigen;PosicionX;PosicionY
Se te pide crear un sistema que cumpla los siguientes requisitos:
Menú Principal:
1. Cargar Soldados - Leer archivo soldados.txt
2. Mostrar Todos - Listar soldados con su información completa
3. Buscar por Especialidad - Filtrar soldados por tipo
4. Generar Formación - Mostrar mapa táctico 10x10
5. Estadísticas - Mostrar promedios de edad y experiencia
6. Salir
Ejercicio 2
Sofia y Matías son organizadores de esports que necesitan un sistema para gestionar torneos de League of Legends. Deben manejar equipos, jugadores y resultados de partidas en una matriz de enfrentamientos.
Para esto cuentan con los siguientee archivos .txt
- equipos.txt
TeamSpirit;5;Europa;2019
G2Esports;5;Europa;2013
SKT_T1;5;Asia;2012
NombreEquipo;NumJugadores;Region;AñoFundacion
- jugadores.txt
TeamSpirit;Collapse;Top;Gnar;150
TeamSpirit;TORONTOTOKYO;Jungle;Graves;220
G2Esports;Caps;Mid;Azir;180
SKT_T1;Faker;Mid;LeBlanc;320
Equipo;NickJugador;Posicion;CampeonFavorito;KillsPromedio
Se te pide crear un sistema que cumpla los siguientes requisitos:
Menú Principal:
1. Cargar Datos - Lee equipos.txt y jugadores.txt
2. Mostrar Equipos - Lista completa con jugadores
3. Buscar Jugador - Encuentra jugador por nickname
4. Generar Torneo - Crea matriz de enfrentamientos 8x8
5. Mostrar Tabla - Visualiza resultados del torneo
6. Estadísticas - Equipo más fuerte y promedios generales
7. Filtrar por Región - Muestra equipos de una región específica
8. Salir
Ayudantía 2 - POO
Segunda Ayudantía
Objetivos
- Repasar Clases y Objetos.
- Comprender la manipulación de Objetos.
- Implementar Vectores.
Ejercicio 0
Teamfight Tactics es un juego dinamico de estrategia que ha revolucionado el estilo de juego. Este consiste en un tablero tamaño NxM en los cuales se pueden posicionar de manera estrategica nuestros personajes para que luchen contra el tablero enemigo.
En esta ocasión nuestra tarea es simple, leer un archivo
Campeones.txt que contiene el siguiente formato:Primera Linea
N;M;SS lineas siguientes
ID;Nombre;X;Y;Vida;Damage;DefensaN corresponde a las filas de la matriz, M a las columnas, y S correponde a la cantidad de campeones que se deben leer en el txt.
Donde X corresponde a su pocisión en el eje X del tablero e Y en su posición en el eje Y del tablero.
Se te pide generar un programa con el siguiente menu:
1. Imprimir Matriz
2. Info Campeon
3. Salir
Donde debemos ser capaces de imprimir la matriz con el nombre de los campeones para ser capaces de acceder a la información de estos, ya sea por su nombre o ID.
Ejercicio 1
Catalina, Francisco y Martin son grandes amigos los cuales disfrutan mucho de programar juntos, pero tambien suelen jugar "Risk of Rain 2" en su tiempo libre, el cual es un juego donde existen diferentes personajes y tanto Catalina como Francisco y Martin se especializan en un personaje. Por lo cual se te pide generar un codigo capaz de leer un txt
Personajes.txt que contiene el siguiente formato:NombreJugador;Personaje;TiempoDeJuego;DañoRealizadoDebes almacenar la información en una clase e imprimirla en un formato legible utilizando sus metodos get o toString.
Ejercicio 2 (Desafio Mayor!!)
Tobal es un gran fan de Monster Hunter, por lo cuál le gusta utilizar la mayor parte de su tiempo realizando cacerías, pero en cada una debe pensar estrategicamente que arma utilizar dependiendo del mounstruo que cazara, por lo cuál decide contratar a los estudiantes de POO para que puedan realizar un programa que evalue que arma utilizar. Debes leer dos archivos txt
Monster.txt Armas.txt que contienen los siguientes formatos:- Monster.txt
NombreMonster;Debilidad- Armas.txt
NombreDelArma;TipoDebes crear un Menu con dos opciones:
1. Evaluar
2. Salir
En caso de evaluar se deben imprimir los mounstruos disponibles y permitir seleccionar uno para cazar, luego se deben imprimir todas las armas que tengan ventaja contra el objetivo seleccionado.
Aclaración
- El programa solo debe cerrarse cuando el usuario decida salir.
- La debilidad de un mounstruo es dependiendo del tipo de arma.
- Debe almacenar la información en vectores.
Ayudantía 1 - Introducción a Java
Primera Ayudantía
Objetivos
- Comprender e implementar la sintaxis de Java.
- Resolver ejercicios simples.
Ejercicio 1
Chimuelo es un dragón muy inteligente pero algo malo para las matemáticas, por lo cual no puede calcular cuanto pescado debe comer al día para poder recibir toda la energía que gasta a diario, por lo cual decides ayudarlo.
Su peso es un poco variado pero vamos a asumir que pesa alrededor de 280 kg. Sabiendo que un dragón debe consumir aproximadamente un 5% de su peso diariamente, haga un código que imprima por pantalla los kg diarios de pescado que debe comer.
Extra
Mejore el código anterior permitiendo que el usuario ingrese el peso en kg de un dragón cualquiera y permita calcular lo que debe comer a diario.
Ejercicio 2
Un ayudante del ramo de POO en la UCN esta cansado de calcular promedios a mano de los alumnos, por lo cuál le pide a ellos mismos que hagan un código que permita calcular N promedios ingresando una cantidad X de notas.
Aclaración
- Debe usar ciclos