Programación de un Juego de Piedra, Papel o Tijera en JavaScript

Clase 13 de 84Curso Gratis de Programación Básica

Resumen

Ya tenemos un juego funcional de piedra papel o tijera, pero ¿qué tal si lo cambiamos para que gane el mejor de tres partidas?

Fundamentos para la práctica

Antes de empezar a hacer modificaciones, repasemos los fundamentos que te permitirán hacerlo:

Operadores de comparación en JavaScript

Hay algunos operadores que te ayudarán a escribir condiciones en tu código:

OperadorSignificado
==Retorna “verdadero” si un lado es igual al otro (Ojo, NO distingue entre números y strings. Por lo tanto: 3 == “3” //verdadero).
===Retorna “verdadero” si un lado es estrictamente igual al otro (Ojo, SÍ distingue entre números y strings. Por lo tanto: 3 === “3” //falso).
!=Retorna "verdadero" si un lado es diferente del otro lado (Ojo, NO distingue entre números y strings. Por lo tanto: 3 != “3” //falso).
!==Retorna "verdadero" si un lado es estrictamente diferente del otro lado (Ojo, SÍ distingue entre números y strings. Por lo tanto: 3 != “3” //verdadero).
&&Funciona como un “y” en la condición. Te permite juntar varias condiciones y devuelve “verdadero” solo si todas se cumplen.
<Devuelve “verdadero” si el valor a la izquierda es menor que el valor a la derecha.
<=Devuelve “verdadero” si el valor a la izquierda es menor o igual que el valor a la derecha.
>Devuelve “verdadero” si el valor a la izquierda es mayor que el valor a la derecha.
>=Devuelve “verdadero” si el valor a la izquierda es mayor o igual que el valor a la derecha.

💡 También tienes el operador ||, que funciona como un “o” en la condición. Te permite juntar varias condiciones, y devuelve “verdadero” si alguna de ellas se cumple.

No pudimos incluirlo en la tabla por un problema técnico, pero sientete libre de usarlo también 👍

💡 Aquí te dejo un fragmento de código que puedes copiar y pegar en la consola del navegador. Solo cambia la condición y los operadores para que experimentes como funciona cada operador 👍

if ( X == Y ) { console.log( "Verdadero" ); } else { console.log( "Falso" ); }

Ciclos While en JavaScript

while es una instrucción en JavaScript (al igual que if) que te permite crear ciclos. Su estructura es la siguiente:

while ( condición ) { //Código a ejecutar mientras se cumpla la condición }

Por ejemplo:

while ( diaDeLaSemana < 6 ) { irA( escuela ); diaDeLaSemana = diaDeLaSemana + 1; } //El bloque de código se repetirá hasta que diaDeLaSemana = 6

anímate a experimentar un poco con esto, y luego acompáñame a realizar la práctica de hoy 😉

Cómo implementar ciclos en el juego de piedra, papel y tijera

Empecemos 😁

1. Agrega variables para contar las victorias

Primero agrega un par de variables que te permitan contar cuantas victorias, derrotas y empates ha acumulado el jugador. Y también necesitas modificar el juego para que el jugador los acumule con cada partida.

Para que el juego no se sienta tan largo vamos a detenerlo luego de 2 victorias o 2 derrotas. Así que es buena idea programar una función que le informe al jugador los resultados finales, y podrías agregar una segunda función que reinicie las variables para un próximo juego.

Intenta hacerlo por tu cuenta, y cuando termines compáralo con el ejemplo de aquí abajo 🙂

//FUNCIÓN PARA LAS ALERTAS function alertaDeElecciones( quienElije , eleccion ) { if ( eleccion == 1 ) { alert( "El " + quienElije + " eligió 🥌" ); } else if ( eleccion == 2 ) { alert( "El " + quienElije + " eligió 📄" ); } else if ( eleccion == 3 ) { alert( "El " + quienElije + " eligió ✂️" ); } else { alert( "Hubo un error con la elección del " + quienElije + " 🙃" ); } } //FUNCIÓN PARA GENERAR NÚMEROS ALEATORIOS function numeroAleatorio( min , max ) { return Math.floor( Math.random() * ( max - min + 1 ) + min ); } //FUNCIÓN PARA DECIDIR EL GANADOR function quienGanaEntre ( eleccionJugador , eleccionOponente ) { if ( eleccionJugador == eleccionOponente ) { alert( "¡EMPATE! 🤼" ); empates = empates + 1; } else if ( eleccionJugador == 1 && eleccionOponente == 3 ) { alert( "¡GANASTE! 🥳" ); victorias = victorias + 1; } else if ( eleccionJugador == 2 && eleccionOponente == 1 ) { alert( "¡GANASTE! 🥳" ); victorias = victorias + 1; } else if ( eleccionJugador == 3 && eleccionOponente == 2 ) { alert( "¡GANASTE! 🥳" ); victorias = victorias + 1; } else { alert( "PERDISTE... 😢" ); derrotas = derrotas + 1; } } //FUNCIÓN PARA NOMBRAR AL GANADOR FINAL function mostrarResultados() { alert("Has acumulado " + victorias + " victorias, " + derrotas + " derrotas y " + empates + " empates."); if ( victorias == 2 ) { alert( "TÚ eres el GANADOR" ); resetearVariables(); } else if ( derrotas == 2 ) { alert( "EL COMPUTADOR es el GANADOR" ); resetearVariables(); } else { alert( "Hubo un error... 🙃"); resetearVariables(); } } //FUNCIÓN PARA RESETEAR VARIABLES DE VICTORIAS function resetearVariables() { victorias = 0; derrotas = 0; empates = 0; } //ELECCIÓN DEL JUGADOR let eleccionDelJugador = 0; eleccionDelJugador = prompt( "Elige: 1 para 🥌, 2 para 📄, 3 para ✂️" ); alertaDeElecciones( "jugador" , eleccionDelJugador ); //ELECCIÓN DEL COMPUTADOR let eleccionDelComputador = numeroAleatorio( 1 , 3 ); alertaDeElecciones( "computador" , eleccionDelComputador ); //DECIDIENDO EL GANADOR let victorias = 0; let derrotas = 0; let empates = 0; quienGanaEntre ( eleccionDelJugador , eleccionDelComputador );

2. Implementa el ciclo “while”

Es momento de implementar el ciclo en tu código. Para hacerlo, ten presente la siguiente información:

  • El juego se detiene cuando el jugador acumule dos victorias o dos derrotas.
  • La elección del jugador y del computador debe repetirse en cada ciclo.
  • Al completar el ciclo, debes mostrarle los resultados al jugador y resetear las variables de juego.

Hacer esto requiere que muevas algunas cosas dentro del código. Intenta hacerlo por tu cuenta, y luego lo comparas con el código aquí abajo 😉

//FUNCIÓN PARA LAS ALERTAS function alertaDeElecciones( quienElije , eleccion ) { if ( eleccion == 1 ) { alert( "El " + quienElije + " eligió 🥌" ); } else if ( eleccion == 2 ) { alert( "El " + quienElije + " eligió 📄" ); } else if ( eleccion == 3 ) { alert( "El " + quienElije + " eligió ✂️" ); } else { alert( "Hubo un error con la elección del " + quienElije + " 🙃" ); } } //FUNCIÓN PARA GENERAR NÚMEROS ALEATORIOS function numeroAleatorio( min , max ) { return Math.floor( Math.random() * ( max - min + 1 ) + min ); } //FUNCIÓN PARA DECIDIR EL GANADOR function quienGanaEntre ( eleccionJugador , eleccionOponente ) { if ( eleccionJugador == eleccionOponente ) { alert( "¡EMPATE! 🤼" ); empates = empates + 1; } else if ( eleccionJugador == 1 && eleccionOponente == 3 ) { alert( "¡GANASTE! 🥳" ); victorias = victorias + 1; } else if ( eleccionJugador == 2 && eleccionOponente == 1 ) { alert( "¡GANASTE! 🥳" ); victorias = victorias + 1; } else if ( eleccionJugador == 3 && eleccionOponente == 2 ) { alert( "¡GANASTE! 🥳" ); victorias = victorias + 1; } else { alert( "PERDISTE... 😢" ); derrotas = derrotas + 1; } } //FUNCIÓN PARA NOMBRAR AL GANADOR FINAL function mostrarResultados() { alert("Has acumulado " + victorias + " victorias, " + derrotas + " derrotas y " + empates + " empates."); if ( victorias == 2 ) { alert( "TÚ eres el GANADOR" ); resetearVariables(); } else if ( derrotas == 2 ) { alert( "EL COMPUTADOR es el GANADOR" ); resetearVariables(); } else { alert( "Hubo un error... 🙃"); resetearVariables(); } } //FUNCIÓN PARA RESETEAR VARIABLES DE VICTORIAS function resetearVariables() { victorias = 0; derrotas = 0; empates = 0; } //ELECCIÓN DEL JUGADOR let eleccionDelJugador = 0; //ELECCIÓN DEL COMPUTADOR let eleccionDelComputador = 0; //DECIDIENDO EL GANADOR let victorias = 0; let derrotas = 0; let empates = 0; while ( victorias < 2 && derrotas < 2 ) { eleccionDelJugador = prompt( "Elige: 1 para 🥌, 2 para 📄, 3 para ✂️" ); eleccionDelComputador = numeroAleatorio( 1 , 3 ); alertaDeElecciones( "jugador" , eleccionDelJugador ); alertaDeElecciones( "computador" , eleccionDelComputador ); quienGanaEntre ( eleccionDelJugador , eleccionDelComputador ); } mostrarResultados();

Anímate a probarlo algunas veces y sientete orgulloso de lo que haz logrado 🥳 En el futuro te enseñaremos a crear un botón en tu sitio web que puedes configurar para que inicie el juego cuando alguien lo presione 🙂 Pero, mientras tanto, acompañame a aprender cómo funciona la estructura de archivos de un sitio web 😉

Contribución creada por: Jhonkar Sufia (Platzi Contributor).