Desarrollo Web
Piedra, Papel o Tijera
Descripción General
Desarrollado como un proyecto colaborativo dentro del Programa de Prácticas de Mayerfeld por un equipo de cuatro desarrolladores, el Juego de Piedra, Papel o Tijera es una aplicación interactiva basada en navegador y con interfaz de consola, diseñada para ejecutar una batalla de 5 rondas entre un jugador humano y un oponente de IA. El objetivo principal era diseñar un motor de juego limpio y sin errores utilizando JavaScript puro, mediante programación colaborativa y revisión de código. El proyecto se centra en principios de programación fundamentales, como la selección aleatoria por computadora, el análisis de cadenas sin distinción entre mayúsculas y minúsculas, los bucles de validación de entrada, la evaluación de resultados condicionales y el seguimiento de la puntuación en tiempo real, todo ello comunicado a través de una experiencia de terminal atractiva y narrativa.
El Desafío
Desarrollar un motor de juego robusto y por turnos en la consola del navegador, trabajando en un equipo de desarrollo de cuatro personas, requirió gestionar un flujo lógico estricto, estándares de código uniformes y manejar el comportamiento impredecible del usuario. Los principales desafíos técnicos incluyeron:
- Motor de Decisión de IA Aleatorio:Diseñar un algoritmo de selección dinámico y justo (computerPlay) que genere aleatoriamente "Piedra", "Papel" o "Tijeras" con igual probabilidad.
- Análisis de Entrada sin Distinción de Mayúsculas y Minúsculas:Normalizar las entradas del usuario para aceptar cualquier variación de mayúsculas y minúsculas (p. ej., rock, ROCK, RocK) sin romper la lógica de comparación.
- Validación de Entrada y Manejo de Errores Robustos:Asegurar que las entradas no válidas (p. ej., errores tipográficos, valores vacíos o selecciones que no corresponden al juego) no bloqueen la aplicación ni generen errores en la consola, lo que obliga a repetir las rondas hasta completar 5 manos válidas.
- Motor de Juego con Estado:Registrar las puntuaciones a lo largo de 5 rondas válidas, evaluar escenarios de victoria/derrota/empate y declarar dinámicamente al campeón general al finalizar la sesión.
Nuestro Enfoque
Trabajando en un equipo de cuatro, dividimos el proceso de desarrollo en bloques funcionales modulares para garantizar una ejecución limpia, consistencia del código y programación defensiva:
- Lógica de Selección del Ordenador (computerPlay): Utilizamos Math.random() mapeado a un array de opciones para generar movimientos impredecibles de la IA.
- Mecánica de Ronda (playRound): Diseñamos una función pura que evalúa las elecciones del jugador frente a las selecciones del ordenador, devolviendo cadenas de resultados estructuradas basadas en las reglas tradicionales de Piedra, Papel o Tijera. Aplicamos normalización de cadenas (toLowerCase()) para procesar la entrada del usuario sin problemas.
Bucle de Juego Interactivo (game):
Creamos una función orquestadora central que contiene un bucle con estado para ejecutar una partida de 5 rondas:
Incorporamos diálogos prompt() con instrucciones claras y narrativa.
Aplicamos mecanismos de validación: si un usuario introduce una opción no válida o cancela, el motor le avisa y repite la ronda específica sin avanzar el contador de rondas.
Se registraron comentarios de las rondas en tiempo real, puntuaciones en vivo y resultados finales de los partidos directamente en la consola del desarrollador.
- Sinergia del Equipo y Revisión de Código:Se realizaron depuraciones conjuntas y revisiones de código entre pares para mantener buenas prácticas estándar de ES6 y prevenir errores en la consola de ejecución en todos los casos extremos.
Galería de Proyectos
Resultados
Desarrollado con éxito dentro del marco del Programa de Prácticas de Mayerfeld , el proyecto entregó un minijuego de consola sin errores y altamente robusto que cumplió a la perfección con todos los criterios de la tarea, demostrando sólidos fundamentos de JavaScript puro y colaboración en equipo:
- Lógica Algorítmica Impecable: Se ejecutaron con éxito 5 rondas válidas por sesión, con una gestión precisa de la puntuación y determinación instantánea del resultado.
- Programación Defensiva Sin Errores: Se eliminaron por completo las excepciones en tiempo de ejecución mediante el manejo adecuado de entradas de usuario no válidas y casos límite.
- Experiencia de Usuario AtractivaSe ofrecieron interacciones fluidas con los comandos y una salida informativa en la consola, transformando un simple ejercicio de consola en un minijuego divertido y narrativo.
- Éxito ColaborativoSe logró una base de código limpia y unificada gracias a la revisión por pares efectiva y la resolución de problemas en equipo entre los 4 miembros.
AÑO
2026
SERVICIOS
Diseño y Desarrollo Web
Experiencia Interactiva
Ingeniería de Software Colaborativa
HERRAMIENTAS Y TECNOLOGÍA
JavaScript
HTML5
VS Code
Git
GitHub
Chrome DevTools
Consola API
ETIQUETAS
Desarrollo Web
Juego de Consola
Mecánicas de juego
JavaScript
Lógica Algorítmica
Programación Funcional
Colaboración en Equipo
¿Te interesa un proyecto similar?
