Aprender a pensar como un algoritmo empieza con un juego que ya conoces: piedra, papel o tijera. Si quieres entender cómo se traducen las decisiones humanas a código con condicionales if y else, aquí descubrirás la lógica paso a paso para construir tu primer combate jugador contra computadora en JavaScript.
Este recorrido es ideal para quienes dan sus primeros pasos en programación y quieren ver cómo una idea cotidiana se convierte en líneas de código funcionales.
Cómo se piensa el algoritmo de piedra, papel o tijera
Antes de escribir una sola línea, conviene desmenuzar el problema. La trampa está en creer que hay nueve escenarios posibles cuando, en realidad, solo necesitas tres tipos de resultado: empate, victoria o derrota.
La lógica arranca con una pregunta sencilla: ¿qué es lo primero que debes descartar sin importar lo que elijas? El empate. Si tú y el PC eligen lo mismo, no hace falta evaluar nada más.
¿Por qué se evalúa primero el empate en este algoritmo? Porque depende solo de comparar dos valores iguales. Resolverlo de entrada simplifica el resto del código y evita revisar reglas innecesarias [02:13].
Una vez fuera el empate, basta con identificar los escenarios donde tú ganas. Si ninguno se cumple, por descarte, perdiste. Esa es la magia de pensar en condiciones excluyentes.
Cuáles son los escenarios de victoria del jugador
Las reglas del juego se traducen en dos combinaciones ganadoras claras y una tercera que suele olvidarse:
- Tú eliges piedra (1) y el PC elige tijera (3): piedra mata tijera, ganas.
- Tú eliges papel (2) y el PC elige piedra (1): papel envuelve piedra, ganas.
- Tú eliges tijera (3) y el PC elige papel (2): tijera corta papel, ganas.
Si descartas el empate y ninguna de estas tres condiciones se cumple, automáticamente perdiste. No hay un cuarto camino.
Cómo se traduce la lógica a código con if y else
El primer ajuste estético consiste en mejorar los mensajes con emojis: rock para piedra, paper para papel y scissor para tijera. Los emojis funcionan dentro de cadenas de texto en JavaScript y vuelven la interfaz más amigable [04:30].
Luego se duplica la lógica de elección para el PC, reutilizando la misma estructura if que define al jugador. Aquí aparece un concepto central: la variable, ese contenedor que guarda la elección de cada participante para compararlas después.
Cómo se usa el operador AND para combinar condiciones
Para verificar dos cosas al mismo tiempo, JavaScript usa el operador lógico AND, escrito como && (doble ampersand). Por ejemplo:
javascript
if (jugador === 1 && pc === 3) {
alert("ganaste");
}
Esa línea solo se ejecuta cuando ambas condiciones son verdaderas: el jugador eligió piedra y el PC eligió tijera. Si una falla, el bloque se ignora.
¿Qué hace el operador && en JavaScript? Une dos condiciones y devuelve verdadero solo si ambas se cumplen. Es clave para combinar reglas dentro de un mismo if [07:45].
El bloque final usa else como red de seguridad: si no fue empate ni ninguna victoria, se muestra alert("perdiste"). Así cubres todos los desenlaces posibles con un solo cierre.
Por qué olvidar un caso es parte natural de programar
Durante las pruebas, aparece un bug clásico: cuando el jugador elige tijera y el PC elige papel, el programa no responde. El motivo es simple, faltó programar el tercer escenario de victoria. Se cubrieron piedra y papel, pero no tijera.
La solución es copiar el bloque condicional, ajustar los valores a jugador === 3 && pc === 2 y guardarlo. Con eso, el algoritmo queda completo.
Esta historia ilustra una verdad incómoda y liberadora del oficio: programar es aprender a manejar la frustración sin rendirte [13:20]. Vas a tener una idea, probarla, encontrarte con un fallo y ajustar. Ese ciclo es el corazón del desarrollo.
Existe una sola forma correcta de resolver este problema
No. El mismo juego puede escribirse con if anidados, con cadenas de else if, con varios if independientes o incluso con estructuras más avanzadas como switch o arreglos. La elección depende de tu estilo y del contexto.
La belleza está justamente ahí: nunca hay un solo camino correcto en programación. La versión que tú diseñes, si funciona y se entiende, probablemente sea válida.
Un detalle pendiente para subir el nivel es que el PC elija de forma aleatoria, no siempre la misma opción. Esa es la siguiente capa: incorporar azar para que el juego se vuelva impredecible.
¿Qué versión se te ocurre a ti? Anímate a reescribir el algoritmo con una estructura distinta y compártela en los comentarios para comparar enfoques con otros estudiantes.