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:
Operador
Significado
==
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 👍
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 ALERTASfunctionalertaDeElecciones(quienElije , eleccion){if( eleccion ==1){alert("El "+ quienElije +" eligió 🥌");}elseif( eleccion ==2){alert("El "+ quienElije +" eligió 📄");}elseif( eleccion ==3){alert("El "+ quienElije +" eligió ✂️");}else{alert("Hubo un error con la elección del "+ quienElije +" 🙃");}}//FUNCIÓN PARA GENERAR NÚMEROS ALEATORIOSfunctionnumeroAleatorio(min , max){returnMath.floor(Math.random()*( max - min +1)+ min );}//FUNCIÓN PARA DECIDIR EL GANADORfunctionquienGanaEntre(eleccionJugador , eleccionOponente){if( eleccionJugador == eleccionOponente ){alert("¡EMPATE! 🤼"); empates = empates +1;}elseif( eleccionJugador ==1&& eleccionOponente ==3){alert("¡GANASTE! 🥳"); victorias = victorias +1;}elseif( eleccionJugador ==2&& eleccionOponente ==1){alert("¡GANASTE! 🥳"); victorias = victorias +1;}elseif( eleccionJugador ==3&& eleccionOponente ==2){alert("¡GANASTE! 🥳"); victorias = victorias +1;}else{alert("PERDISTE... 😢"); derrotas = derrotas +1;}}//FUNCIÓN PARA NOMBRAR AL GANADOR FINALfunctionmostrarResultados(){alert("Has acumulado "+ victorias +" victorias, "+ derrotas +" derrotas y "+ empates +" empates.");if( victorias ==2){alert("TÚ eres el GANADOR");resetearVariables();}elseif( derrotas ==2){alert("EL COMPUTADOR es el GANADOR");resetearVariables();}else{alert("Hubo un error... 🙃");resetearVariables();}}//FUNCIÓN PARA RESETEAR VARIABLES DE VICTORIASfunctionresetearVariables(){ victorias =0; derrotas =0; empates =0;}//ELECCIÓN DEL JUGADORlet eleccionDelJugador =0;eleccionDelJugador =prompt("Elige: 1 para 🥌, 2 para 📄, 3 para ✂️");alertaDeElecciones("jugador", eleccionDelJugador );//ELECCIÓN DEL COMPUTADORlet eleccionDelComputador =numeroAleatorio(1,3);alertaDeElecciones("computador", eleccionDelComputador );//DECIDIENDO EL GANADORlet 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 ALERTASfunctionalertaDeElecciones(quienElije , eleccion){if( eleccion ==1){alert("El "+ quienElije +" eligió 🥌");}elseif( eleccion ==2){alert("El "+ quienElije +" eligió 📄");}elseif( eleccion ==3){alert("El "+ quienElije +" eligió ✂️");}else{alert("Hubo un error con la elección del "+ quienElije +" 🙃");}}//FUNCIÓN PARA GENERAR NÚMEROS ALEATORIOSfunctionnumeroAleatorio(min , max){returnMath.floor(Math.random()*( max - min +1)+ min );}//FUNCIÓN PARA DECIDIR EL GANADORfunctionquienGanaEntre(eleccionJugador , eleccionOponente){if( eleccionJugador == eleccionOponente ){alert("¡EMPATE! 🤼"); empates = empates +1;}elseif( eleccionJugador ==1&& eleccionOponente ==3){alert("¡GANASTE! 🥳"); victorias = victorias +1;}elseif( eleccionJugador ==2&& eleccionOponente ==1){alert("¡GANASTE! 🥳"); victorias = victorias +1;}elseif( eleccionJugador ==3&& eleccionOponente ==2){alert("¡GANASTE! 🥳"); victorias = victorias +1;}else{alert("PERDISTE... 😢"); derrotas = derrotas +1;}}//FUNCIÓN PARA NOMBRAR AL GANADOR FINALfunctionmostrarResultados(){alert("Has acumulado "+ victorias +" victorias, "+ derrotas +" derrotas y "+ empates +" empates.");if( victorias ==2){alert("TÚ eres el GANADOR");resetearVariables();}elseif( derrotas ==2){alert("EL COMPUTADOR es el GANADOR");resetearVariables();}else{alert("Hubo un error... 🙃");resetearVariables();}}//FUNCIÓN PARA RESETEAR VARIABLES DE VICTORIASfunctionresetearVariables(){ victorias =0; derrotas =0; empates =0;}//ELECCIÓN DEL JUGADORlet eleccionDelJugador =0;//ELECCIÓN DEL COMPUTADORlet eleccionDelComputador =0;//DECIDIENDO EL GANADORlet 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 😉