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?