Lógica de programación

"Talk is cheap. Show me the code." - Linus Torvalds

Cronograma de actividades

  • (10%) Cocinando - Algoritmos [Semana 2]
  • (10%) Primer programa [Semana 4]
  • (10%) Variables y condicionales [Semana 6]
  • (15%) Ciclos [Semana 8]
  • (10%) Arreglos y matrices [Semana 12]
  • (20%) Cadenas y Funciones [Semana 14]
  • (20%) Final [Semana 16]
  • (5%) Participar 3 actividades CWF [Cualquier momento del semestre]

Cocinando - Algoritmos

1. Escoger una receta de cocina, la mita del grupo hace una receta salda y la otra mitad una receta de dulce.

✨La receta no debe ser muy complicada, ingredientes sencillos y faciles de conseguir.

Cocinando - Algoritmos

2. Escriba el pseudocódigo del algoritmo, es decir los pasos detallados para preparar la receta.

✨Mientras más detallado sea el pseudocódigo, más fácil será la solución de la receta.

Cocinando - Algoritmos

3. Preparé la receta siguiendo el pseudocódigo, grabe un video del proceso, no es necesario que se vea el rostro, pero si los pasos de la receta y el resultado final.
✨El video debe durar máximo 2 minutos, y debe ser grabado en horizontal.

4. Publique el video en youtube como no listado, y comparta el enlace en el grupo de teams del curso.

Cocinando - Algoritmos

5. Lleve el plato a la clase para compartir el resultado en un picnic con sus compañeros de clase.

6. Lleve el pseudocódigo en una hoja, y entregue al profesor el día de la entrega.

Criterios de evaluación

  • (10%) Asistencia a clase
  • (20%) Borrador del pseudocódigo
  • (20%) Correcta escritura del pseudocódigo
  • (30%) Video publicado correctamente en teams
  • (20%) Participación picnic

Referentes - Recetas

Referentes - Recetas

Referentes - Pseudocódigo

Referentes - Ejemplo de receta

Ejemplo pseudocodigo receta

Primer programa

1. Completar los desafíos de línea de comandos en https://cmdchallenge.com/ hasta el nivel básico.

✨Tomar capturas de pantalla de cada ejercicio resuelto para evidenciar el cumplimiento.

Primer programa

2. Crear un nuevo repositorio en GitHub llamado "primer_programa".

3. Personalizar el README.md usando sintaxis Markdown incluyendo:

  • Título y descripción del proyecto
  • Instrucciones para ejecutar los programas
  • Información del equipo de trabajo
  • Enlaces a recursos utilizados

✨Utilizar elementos de Markdown como encabezados, listas, enlaces, imágenes y código.

Primer programa

4. Crear un programa "Hola Mundo" en Java (HolaMundo.java) que incluya:

  • Mensaje de bienvenida personalizado
  • Solicitar el nombre del usuario usando Scanner
  • Mostrar información básica del equipo
  • Comentarios explicativos en el código

5. Documentar el proceso de instalación de Java JDK y configuración del entorno de desarrollo.

Temas de exposición

6. Cada equipo debe escoger uno de los siguientes temas para exponer:

  • ¿Qué es un compilador y cómo funciona?
  • ¿Qué es el código binario y hexadecimal?
  • ¿Cómo se ejecuta el código en el procesador?
  • Historia y evolución de los lenguajes de programación
  • Diferencias entre lenguajes interpretados y compilados

Temas de exposición (Cont.)

  • ¿Qué es la memoria RAM y cómo la usa un programa?
  • Introducción a los sistemas operativos y su papel
  • ¿Qué es el hardware y software de una computadora?
  • Algoritmos en la vida cotidiana
  • Introducción a Git y control de versiones

✨La exposición debe durar entre 5-7 minutos por equipo.

Trabajo colaborativo

7. Todos los integrantes del equipo deben colaborar activamente en el mismo repositorio mediante:

  • Cada integrante debe realizar commits de sus aportes
  • Distribuir las tareas equitativamente entre los miembros
  • Documentar quién realizó cada parte del proyecto

✨Usar Git de manera colaborativa y organizada.

Trabajo colaborativo (Cont.)

Organización y buenas prácticas en GitHub:

  • Crear issues para organizar el trabajo del equipo
  • Usar mensajes de commit claros y descriptivos
  • Mantener el repositorio organizado con carpetas apropiadas
  • Actualizar regularmente el README con avances del proyecto

✨Esto fomenta el trabajo colaborativo efectivo dentro del mismo equipo.

Entregables

8. Crear una carpeta "evidencias" en el repositorio con:

  • Capturas de cmdchallenge.com completado
  • Screenshots del programa funcionando
  • Presentación del tema expuesto (PDF o PowerPoint)
  • Documentación del proceso de colaboración

9. Realizar commits frecuentes con mensajes descriptivos que documenten el progreso del trabajo.

Criterios de evaluación

  • (10%) Asistencia a clase y participación
  • (15%) Completar desafíos de cmdchallenge.com
  • (15%) Calidad del README.md y documentación
  • (15%) Programa "Hola Mundo" funcional y bien documentado
  • (20%) Exposición del tema asignado
  • (15%) Trabajo colaborativo dentro del equipo
  • (10%) Organización del repositorio y commits

Referentes - Terminal y Git

Referentes - Java y Programación

Referentes - Temas de exposición

Variables y condicionales

1. Crear un nuevo repositorio en GitHub para este taller que se llame taller 2.

2. Actualice el readme, con la información del nuevo equipo y los ajustes respectivos que se explicarán en clase.

Variables y condicionales

3. Agregue el enlace de la presentación

4. Crear un programa que se llame Variables.java, donde incluya 20 declaraciones de variables de diferente tipo.

✨ Sugerencia: Consulte la documentación de java para ver la lista de tipos primitivos.

Variables y condicionales

5. Inicializar las 20 variables con datos compatibles (Debe entender correctamente los valores de inicialización)

6. Reasignar los valores con al menos 5 valores almacenados en las otras variables y el resto se reasignan con datos nuevos hardcoded (quemados).

Variables y condicionales

7. Mirar los siguientes videos:

Variables y condicionales

Variables y condicionales

✨Este video es importante para pedirle los datos al usuario, muy importante que lo repasen bien, en clase lo volveremos a estudiar.

Variables y condicionales

8. Crear variables cuyos datos requieran el uso de f, L y comillas simples ('').

9. ¿Consultar y explicar como cambiarle el nombre y correo de los commits?. ¿Cómo renombrar commits anteriores?. Usar esa información para actualizar correctamente el repositorio.

10. Cada estudiante debe crear mínimo 10 commits diferentes.

Variables y condicionales

Crear un programa que permita seleccionar entre 3 opciones:

  • 1. Solución ecuación 1
  • 2. Solución ecuación 2
  • 3. Salir

Variables y condicionales

✨Ecuación 1, recuerde copiarla correctamente a código.

Variables y condicionales

✨Ecuación 2, recuerde copiarla correctamente a código.

Variables y condicionales

Se debe pedir al usuario que seleccione el tipo de ecuación a resolver y luego que ingrese los valores x y z, para evaluar la expresión e imprimir el resultado.

✨Recomendación, primero resuelva la expresión manualmente con calculadora y luego en el programa, recuerde divide y vencerás.

Variables y condicionales

Actualice la presentación, resalte las conclusiones, dudas, y aprendizajes que tuvo el equipo durante la realización del taller, y prepare una exposición de 5 minutos para compartirlo con sus compañeros de clase.

Cada estudiante debe responder una pregunta de teoria y un ejercicio en java durante la presentación.

Criterios de evaluación

  • (10%) Asistencia a clase
  • (10%) Cambio de equipo
  • (10%) Uso apropiado del repositorio y commits
  • (10%) Programa de variables
  • (15%) Programa ecuaciones
  • (15%) Respuesta pregunta teorica
  • (15%) Respuesta pregunta codigo
  • (15%) Presentación y exposición

Ciclos

En este taller se trabajarán los conceptos de ciclos en Java, recuerde ver los videos hasta el número 5, para responder preguntas y ejercicios en clase durante la presentación del taller.

Ciclos - Instrucciones

  1. Crear un nuevo repositorio en github
  2. Cambiar de grupo, 2 o 3 personas. No se puede individual.
  3. Actualizar el readme con la información del nuevo equipo
  4. Cada estudiante debe participar en los commits del ejercicio

Ciclos - Programas

  1. Crear un programa con un menú infinito con las siguientes opciones:

⚠️ El programa debe seguir ejecutándose hasta que el usuario seleccione la opción de salir, y debe manejar entradas inválidas de manera adecuada.

Ciclos - Programas

Recuerde validar el ingreso correcto de los datos por parte del usuario, prevenir que se produzcan errores durante la ejecución del programa, y manejar las excepciones de manera adecuada para evitar que el programa se cierre inesperadamente.

✨Recomendación, resuelva cada opción del menú por separado, y luego integre todo en un solo programa, recuerde divide y vencerás.

Ciclos - Programas

Use ascii art para decorar el menú, tal como se explico en clase, en los recursos encontrará sitios especializados para crear ascii art de texto, y también puede crear sus propios diseños.

Valide además si hay restricciones con los ejercicios, por ejemplo, para la opción de promedio, el programa debe permitir ingresar números decimales, y para la opción de ecuación cuadrática, el programa debe manejar casos donde las raíces sean complejas.

Ciclos - Programa

  1. Crear un Juego donde el usuario debe adivinar un número aleatorio entre n y m
  2. Mostrar la tabla de multiplicar de un número dado por el usuario

Ciclos - Teoria 1/3

  • ¿Cuál es la diferencia entre un ciclo for, un ciclo while y un do-while?
  • ¿Qué es un ciclo infinito y cómo se puede evitar?
  • ¿Cómo se pueden anidar ciclos en Java?
  • ¿Qué es el alcance de una variable dentro de un ciclo?

Ciclos - Teoria 2/3

  • Explique 3 palabras reservadas que se pueden usar en un ciclo
  • ¿Cómo se pueden usar los ciclos para procesar datos de entrada del usuario?
  • ¿Qué es un contador?, ¿que tipos de variables de control conoce?
  • ¿Qué es una secuencia de escape, cómo se usa para resolver este taller?

Ciclos - Teoria 3/3

  • Explique tres atajos de teclado útiles para programar en VSC
  • ¿Qué es overflow, en que parte del taller se puede presentar?
  • ¿Cómo se puede personalizar los colores de la consola en Java?
  • ¿Escriba 5 formas difrentes de definir ciclos infinitos en Java?

Criterios de evaluación

  • (10%) Asistencia a clase
  • (10%) Cambiar de equipo
  • (10%) Uso apropiado del repositorio y commits
  • (10%) Respuesta preguntas teoricas individual
  • (10%) Presentación y exposición
  • (10%) Manejo adecuado de entradas inválidas y excepciones
  • (20%) Implementación correcta de ciclos en los programas
  • (20%) Uso creativo de ascii art en el menú

Recuersos

Taller Arreglos y Matrices

1. Crear un nuevo repositorio en GitHub: "Mundial de Fútbol en Consola".

2. El trabajo se realizará en grupos de 2 o 3 estudiantes. A cada equipo se le asignarán 4 "Grupos del Mundial" (Ej: Grupo A, B, C y D).

✨ Actualicen el README.md con la información del equipo y el grupo asignado.

Paso 1: Matrix 2 Console 🏳️

Implementar la visualización de las banderas de los 4 países del grupo utilizando matrices.

Diseñar un algoritmo que reciba un factor de escala para dibujar en 4 tamaños:

  • Grande (Máximo detalle)
  • Mediano (Resolución intermedia)
  • Pequeño (Baja resolución)
  • Ícono (Miniatura para menús)

✨ Usar el código del profesor como inspiración.

Paso 2: Tabla de Posiciones 📊

Construir una matriz para representar la tabla de posiciones del mundial, su contenido debe ser editable y actualizable.

  • Filas: Los 48 equipos creados en clase.
  • Columnas: PJ, PG, PE, PP, GF, GC, DG, TA, TR, Pts.

✨ El software debe imprimir esta matriz en forma de una tabla formateada en la consola para consulta, como son muchos equipos se debe paginar.

Paso 3: Fixture de Partidos 📆

Usando arreglos y matrices, estructurar el calendario de los enfrentamientos y sus fechas de todo el mundial. El usuario, a través de opciones mostradas mediante teclado, podrá:

  • Ver todos los partidos por grupo.
  • Ver hora e integrantes de un partido específico.

✨ Utilizar ConsoleInput.java para estandarizar las lecturas.

Paso 4: Colaboración Global 🌐

Cada equipo creará una parte de los datos del mundial. Para tener toda la información completa:

  • Guardar datos base en un archivo plano (ej. TXT).
  • Compartir estos archivos con los demás compañeros.
  • Personalizar el programa para que useASCII art para el menú de consola.

Paso 4: Información paises

Por último, se debe implementar una funcionalidad que permita consultar información de un país, como su capital, jugadores principales y apariciones en copas del mundo.

Esta funcionalidad puede ser accedida desde el menú de la aplicación, tener en cuenta el diseño usando ascii art y la bandera respectiva.

Criterios de evaluación

  • (10%) Trabajo constante en repositorio y commits.
  • (10%) Visualización con precisión de las banderas.
  • (15%) Fixture de los encuentros.
  • (15%) Tabla de posiciones.
  • (15%) Actualización de la tabla según resultados.
  • (15%) Menú de interacción y sincronización funcionando.
  • (15%) Exposición y sustentación oral en la clase.
  • (5%) Buenas prácticas en el código (indentación, nombres variables).

Referentes - Arreglos y Matrices

Torneo de Código 🏆

En este taller no hay entregables: hay torneo. Durante 3 clases competirán en parejas jugando retos de cadenas y funciones preparados por el profesor.

1. Conformar una pareja nueva (cambio de compañero, como en los talleres anteriores). La pareja se mantiene durante todo el torneo.

✨ Requisito para jugar: ver los videos 8 a 12 (cadenas y funciones) antes de la primera clase del torneo.

¿Cómo funciona? 🎮

  • Cada clase tiene 3 o 4 rondas de juego.
  • Cada ronda reparte bits, la moneda del torneo.
  • El marcador es público y se actualiza al final de cada clase.
  • Los bits se convierten en nota: así se construye la calificación del taller.

✨ Todas las reglas y puntajes están en estas diapositivas: no hay sorpresas, el torneo es gamificado y justo.

Los juegos (1/2) 🕹️

  • 🔮 Adivina la salida: predecir el resultado de fragmentos en Java con charAt(), substring(), split() y length().
  • 🐛 Código roto: cada pareja recibe un método con errores; gana la primera que lo arregle y lo explique.
  • ⏱️ Relevos de código: un integrante programa 2 minutos y rota al otro sin hablar; gana la pareja cuyo método compile y pase las pruebas.

Los juegos (2/2) 🕹️

  • 🔤 El Rosco: definiciones de métodos de String y conceptos de funciones, de la A a la Z.
  • ⛳ Code golf: resolver el reto con el método más corto que funcione.
  • 🧩 Firma a ciegas: implementar un método conociendo solo su firma, por ejemplo boolean esPalindromo(String s).

✨ El profesor puede variar la mezcla de juegos en cada clase, pero los puntajes no cambian.

Economía de bits 🪙

  • 🥇 Ganar una ronda: +10 bits
  • 🥈 Segundo lugar: +6 bits
  • 🙋 Participar activamente en la ronda (intentarlo, pasar al tablero): +3 bits

Conversión: 10 bits = 0.1 en la nota, acumulables hasta llegar a 5.0 (tope).

⚠️ Botín en juego: si una pareja falta sin excusa, sus bits acumulados entran al botín de esa clase y las parejas ganadoras de las rondas se reparten el 20% del botín. Lo ganado se puede diluir si no se asiste.

Bonus del torneo ✨

  • 🔥 Racha: ganar rondas en 2 clases seguidas = +5 bits.
  • 🎓 Explica y gana: explicar en el tablero la solución ganadora de otra pareja = +5 bits.
  • 🤝 MVP / Fair play: al final de cada clase se vota la pareja más colaborativa = +5 bits.
  • 🃏 Comodín: cada pareja tiene 1 comodín por torneo para pedir una pista al profesor sin perder puntos.

Criterios de evaluación (1/2)

Asistencia a las 3 clases del torneo (base de la nota, escala 0 a 5):

  • Asiste a las 3 clases → 3.0
  • Asiste a 2 clases → 2.5
  • Asiste a 1 clase → 1.5
  • Falta con excusa justificada → esa falta se evalúa según la excusa (actividad compensatoria definida por el profesor).
  • Falta sin excusa → se aplica esta rúbrica y sus bits entran al botín.

Criterios de evaluación (2/2)

El resto de la nota se acumula con bits ganados por participaciones, victorias y bonus durante las clases.

  • Nota del taller = base de asistencia + bits convertidos (10 bits = 0.1).
  • La nota máxima es 5.0.
  • El marcador público permite a cada pareja saber su nota en todo momento.

Referentes — Cadenas y Funciones

Proyecto Final: Escape 🔐

El juego completo son 3 habitaciones. La 1 ya funciona; las 2 y 3 las construye el equipo programando — sin código no hay final.

  • Objetivo: completar los 4 placeholders del motor y crear sus habitaciones con puzzles originales.
  • Equipos: de 2 a 3 personas — pueden repetir compañeros.
  • Repositorio: final_aventura — cada equipo en SU versión.

✨ Este proyecto es el 20% de la nota final y usa todos los temas del curso.

Punto de partida 🚀

La habitación 1 llega completa y jugable; al abrir su puerta encontrarán un pasillo "en obra": las habitaciones 2 y 3 son su misión. El flujo: descargar el zip → crear el repositorio final_aventura → subir este código como primer commit.

⬇️ Descargar escape_la_habitacion.zip

✨ Para probarlo: descomprimir, javac Main.java y luego java Main. Lean el README antes de escribir código.

¿Qué trae el paquete? 📦

  • Main.java — el motor, con los PLACEHOLDER y los TODO equipo:.
  • habitacion1.txt / zonas1.txt / objetos1.csv — la habitación 1 (las 2 y 3 las crean ustedes).
  • arte/*.txt — el ASCII art; Sonido.java + musica/*.mid — el sonido.
  • docs/ — la documentación JavaDoc del proyecto.
  • README.md — el manual: placeholders, mapa del código y guía de extensión.

Placeholders y TODOs 🧩

Un PLACEHOLDER es un método que el juego ya llama pero está incompleto a propósito: ahí programan ustedes. Un // TODO equipo: es una tarea puntual. Los 4 obligatorios:

  1. seleccionarTipoJuego() — el menú de modos.
  2. configurarJugador() — nombre + dificultad 1-3 aplicada.
  3. configurarArte() — título ASCII y arte propio.
  4. siguienteHabitacion() — la navegación completa hasta la victoria.

✨ Sin el placeholder 4 el juego termina en un pasillo "en obra": programar ES el proyecto.

Una sola pantalla 🖥️

El juego se alimenta de varios archivos, pero Main.java los une: la habitación a la izquierda, el panel a la derecha.

+============ ESCAPE: LA HABITACION ============+

#####################################   +--------------------------+
#                                   #   |      ________            |
#    ____                           #   |     /________\           |
#   |====|                          #   |     |  (??)  |           |
#   |____|                          #   |     |________|           |
#                                   #   |                          |
#                        ______     #   |   UN COFRE CON CANDADO   |
#                     @ /______\    #   +--------------------------+
#                       |  ??  |    #
#                       |______|    #    Que haces?
#   __________                      #      1. Mirar de cerca
#  |~~~~~~~~~~|                     #      2. Seguir explorando
##############|    |#################

> Elige (1 o 2):

Paso 1: la matriz VISUAL 🖼️

El mundo son dos matrices del mismo tamaño. La primera es habitacion1.txt: aquí dibujan el cuarto en ASCII art. La @ marca dónde arranca el jugador.

#####################################
#                                   #
#    ____                           #
#   |====|                          #
#   |____|                          #
#                                   #
#                        ______     #
#      @                /______\    #
#                       |  ??  |    #
#                       |______|    #
#   __________                      #
#  |~~~~~~~~~~|                     #
##############|    |#################

✨ La nota arriba, el cofre a la derecha, la alfombra abajo y la puerta en el muro. Dibujar un objeto nuevo = escribirlo aquí: lo que dibujan es lo que el jugador ve.

Paso 1: la matriz de ZONAS 🧱

La segunda es zonas1.txt: aquí pintan qué ES cada casilla — . piso, # sólido, letra = objeto. Es la que consulta el motor para mover al jugador.

#####################################
#...................................#
#....NNNN...........................#
#...NNNNNN..........................#
#...NNNNNN..........................#
#...................................#
#........................CCCCCC.....#
#.......................CCCCCCCC....#
#.......................CCCCCCCC....#
#.......................CCCCCCCC....#
#..AAAAAAAAAAAA.....................#
#..AAAAAAAAAAAA.....................#
##############PPPPPP#################

💡 Truco: copien la matriz visual, renómbrenla como zonas y reemplacen cada dibujo por su letra. Así las dos matrices siempre calzan.

Paso 2: chocar es preguntar 🚪

Se camina con W A S D y se piden pistas con H. Los objetos son sólidos: al chocar con uno aparece su preview y la pregunta:

+------------------------+
|      ______            |
|     |  __  |           |
|     | |__| |           |
|     | [##] |           |
|     |______|           |
|                        |
|  LA PUERTA DE SALIDA   |
+------------------------+

 Que haces?
   1. Mirar de cerca
   2. Seguir explorando

✨ En mover() la casilla destino decide todo: . avanza, letra pregunta, lo demás bloquea. (Mapa.java es la versión en miniatura de esta idea.)

Paso 3: la escena del objeto 🔍

Mirar de cerca abre la escena: el arte grande (arte/x.txt) y el detalle con la pista (objetosN.csv). ENTER vuelve al mapa.

 ______________________
|                      |
|   "el numero del     |
|    cofre esconde     |
|    la clave...       |
|                      |
|    aplicale LA       |
|    OPERACION"        |
|______________________|

[ ENTER para volver a la habitacion ]

✨ La nota agrega a su escena la operación sorteada; el cofre cambia de escena cuando ya tienes la llave. Las escenas también son lógica.

Paso 3: el puzzle con azar 🧩

El camino de escape encadena los objetos:

  1. La alfombra esconde la llave.
  2. La llave abre el candado del cofre: adentro hay un número sorteado por partida.
  3. La nota dice qué operación aplicarle — sorteada entre 5: doble, mitad, +10, −10 o al revés.
  4. La puerta espera el resultado (calcularClave()).

🔑 Como el número Y la operación cambian en cada partida, memorizar la clave no sirve: hay que jugar el puzzle completo.

Paso 4: el motor (1/2) ⚙️

Todo con lo visto en el curso: métodos static, arreglos, matrices, ciclos y Scanner. Nada de POO ni eventos.

  • cargarMatriz() — un método, DOS usos: habitación y zonas.
  • dibujarPantalla() / mover() / preguntarObjeto()
  • abrirEscena() / abrirPuerta() / imprimirArte()

Paso 4: el motor (2/2) ⚙️

  • El inventario: guardarObjeto() / tieneObjeto() — arreglo + contador.
  • Las teclas especiales: darPista() (H) y easterEgg() (la secreta X).
  • El puzzle: calcularClave() + Math.random().
  • partirTexto() / centrar() / enmarcar() — cadenas puras.

✨ Un método debe hacer una sola cosa y hacerla bien — divide y vencerás. El README trae el mapa completo del código.

Paso 5: objetos nuevos 🛠️

Un objeto nuevo, en 4 pasos:

  1. Dibújenlo en la matriz visual de su habitación.
  2. Pinten su letra en la matriz de zonas.
  3. Agreguen su fila en el CSV de la habitación.
  4. Creen arte/mini_x.txt y arte/x.txt.

✨ Listo: el objeto ya tiene preview, pregunta y escena. Así se arma la habitación entera.

Paso 5: extender programando 🧠

Comportamientos especiales con un else if en preguntarObjeto() — la alfombra, el cofre con candado y la nota son los ejemplos para imitar.

El inventario ya viene listo (guardarObjeto() / tieneObjeto()): úsenlo para sus propios candados.

✨ El README trae la guía completa con ideas de puzzles. Aquí se ingenian SU salida del cuarto.

Paso 6: efectos de sonido 🔊

Sonido.java hace sonar el juego con MIDI (incluido en el JDK, sin instalar nada). Si no hay audio, falla en silencio y el juego sigue.

  • Efectos = arreglos de números: cada nota es un int (60 = Do, 64 = Mi, 67 = Sol…). Crear un efecto es cambiar los números: tocar(new int[] {60, 64, 67, 72}, 110)
  • Configurable en el juego: M prende/apaga la música y E los efectos — dos banderas boolean.

✨ El motor ya suena: cofre, llave, errores, muros y la fanfarria de victoria.

Paso 6: música de fondo 🎵

  • musicaFondo("musica/ambiente.mid") reproduce un archivo MIDI en bucle sin detener el juego.
  • Pueden descargar un .mid de internet o generarlo con IA y ponerlo en musica/.
  • Un .mid pesa KBs: la música incluida pesa 141 bytes.

✨ Su reto: la banda sonora de SU habitación — una música para explorar y otra para el escape.

🥚 BONUS: Easter Egg (+10%)

Hay una tecla secreta: X no aparece en el panel, pero ya está conectada al método easterEgg()… que no hace nada todavía. Programarla es el bonus.

  • El modo desarrollador que revela la matriz de zonas completa.
  • Un objeto oculto que aparece en el mapa.
  • Un mensaje del creador del cuarto, un minijuego, lo que se les ocurra…

✨ Bonus +10% para los equipos que lo implementen y expliquen cómo funciona en el demo day.

Sustentación 🎤

En la semana final cada equipo hace una sustentación con presentación (diapositivas) de su juego:

  • La arquitectura: sus habitaciones, puzzles y decisiones de diseño.
  • Qué programaron en cada placeholder y cómo funciona.
  • Demo en vivo: los compañeros intentan escapar.
  • Participan todos los integrantes.

✨ No hay preguntas de teoría: la nota sale de lo que construyeron y de cómo lo explican.

La documentación (JavaDoc) 📚

JavaDoc: comentarios /** ... */ sobre clases y métodos, de los que Java genera un sitio web navegable — así está documentado Java mismo.

  • Ya generada: documentación del juego — ahí viven los contratos de los placeholders.
  • Al agregar métodos, regeneren: javadoc -d docs -charset UTF-8 *.java
  • Entregable: la documentación con sus métodos nuevos.

🌐 BONUS: salas conectadas

Todas las habitaciones del salón usan el mismo formato… así que se puede armar un juego gigante con habitaciones de varios equipos.

  • Intercambien la carpeta de una habitación con otro equipo y cópienla con un número nuevo.
  • El placeholder conectarHabitacionExterna() trae las instrucciones completas.

✨ Solo queda indicado: implementarlo con otro equipo vale +10% para ambos.

Criterios de evaluación (1/2) 📊

  • (10%) Repositorio y commits equitativos — cada equipo construye su propia versión, según el Código de Ética 🤝
  • (20%) Habitaciones 2 y 3 propias: matrices, objetos, puzzles y artes
  • (20%) Placeholders 1-3: tipo de juego, terminal del jugador y arte
  • (10%) Placeholder 4: la navegación completa de la 1 a la 3 hasta la victoria

Criterios de evaluación (2/2) 📊

  • (10%) Control de dificultad aplicado al juego (pistas, intentos, oxígeno…)
  • (10%) Entradas validadas: el juego nunca se rompe por un dato mal ingresado
  • (5%) Documentación JavaDoc regenerada con sus métodos
  • (15%) Sustentación con presentación (participan todos)
  • (+10%) Easter Egg de la tecla X 🥚
  • (+10%) Habitación conectada con otro equipo 🌐

Referentes — Proyecto Final