¡Juguemos a Piedra, papel o tijera!
Como sabes, es un juego de dos jugadores. Cada jugador, al mismo tiempo, forma con sus manos una de las opciones (piedra, papel o tijera). Se usan las siguientes reglas para decidir quién gana:
La piedra aplasta a la tijera.
La tijera corta el papel.
El papel cubre la piedra.
Si ambos jugadores escogen la misma forma, empatan.
La figura resume las reglas.
En este capítulo vamos a programar este juego con nuestras placas micro:bit. Y al hacerlo practicaremos:
Comunicación unicast
Uso de variables
Uso de condicionales
Para familiarizarnos con el juego, vamos a programar el juego de forma sencilla, sin comunicación entre las placas.
Usaremos el acelerómetro y la pantalla para crear un juego de piedra, papel y tijeras que puedas jugar con tus amigos
Fíjate en que el programa asigna un número a piedra, papel y tijera. Por ejemplo, piedra=1, papel=2, tijera=3.
Programa el código mostrado en la página de la actividad y descárgalo a tu micro:bit. Juega unas partidas con tu pareja. Tendréis que agitar las placas al mismo tiempo y luego decidir quién gana en base a las reglas descritas en la introducción.
Para jugar por radio usarás el botón A para seleccionar entre piedra, papel o tijera. Usarás el botón B para confirmar la selección y enviarla por radio. Al igual que en la tarea 1, se usará: piedra=1, papel=2, tijera=3.
Escribe un programa que haga lo siguiente:
Usa el botón A para seleccionar entre piedra, papel o tijera. Cada vez que pulses el botón A debería mostrar alternativamente un icono de cada una de las tres formas.
Usa el botón B para confirmar tu selección y enviar el número correspondiente por radio mediante comunicación unicast a la placa de tu pareja, tal como hicimos en la actividad D.Comunicación Unicast.
Añade el código para recibir un número. Cuando recibas un número, muestra el icono correspondiente en la pantalla. Por ejemplo, si recibes un 2 deberías mostrar el icono del papel.
Comprobad en pareja que podéis enviar y recibir correctamente.
Tu programa debe decidir quién gana cuando recibes un número desde la micro:bit de tu colega.
Para decidir quién gana, hay que comparar el número que tú escogiste con el número que has recibido por radio. La tabla de abajo puede ayudarte a decidir quién gana cada partida [^2]. Usando esta tabla puedes comparar Mi mano con Mano oponente. Por ejemplo, si los dos números significan piedra, es un empate y el resultado es una cara de sorpresa. Pero si Mi mano es tijera y Mano oponente es piedra, el resultado es una cara triste. Y si fuera al contrario el resultado sería una cara alegre. En base a las reglas del juego, termina de rellenar la tabla.
Una vez rellena la tabla hay que decir cómo programar estas reglas en tu código. El programa deberá:
permitir jugar partidas en base a las reglas del juego
mostrando una cara alegre si ganas tú, una cara triste si pierdes, y una cara sorprendida si es un empate.
A continuación se muestra una plantilla que puede ayudarte a programar la tabla de reglas utilizando bloques si del menú Lógica en el editor de bloques de JavaScript. El objetivo de la plantilla es darte tan solo una idea de la estructura del programa.
Como verás, en la plantilla se usan dos variables: seleccionado y recibido.
Seleccionado se establece a Verdadero cuando haces la selección de mano al presionar el botón B. Por su parte, recibido se pone a Verdadero cuando recibes la mano de tu oponente. En el bloque Por siempre, verás que solo se comprueba la jugada cuando ambas variables son Verdadero. Una vez entras en el bloque para jugar la partida, las variables se ponen a Falso para la siguiente ronda.
Una vez programadas las placas, jugad en pareja unas cuantas partidas a ver quién gana más.
¿Cómo se comprueba que hay un empate en el programa?
¿Cómo cambia la tabla si papel=2, piedra=0, y tijera=1? Dibuja la nueva tabla.
Para echar una partida contra un jugador distinto, ¿qué habría que cambiar en tu programa? Recuerda que estás usando unicast para la comunicación por radio.
¿Qué ocurre si envías tu mano al otro jugador antes de que escoja la suya? ¿Habría algún problema? ¡¿Podría hacer trampas?!
Fuente: https://programamos.es/microbit/
Gracias a Jesús Moreno por su libro "Redes con Microbit"