Proyecto PMB2
Micro:bit Nivel Medio
Material Necesario
Componente | Cantidad | Descripción | Comprar |
---|---|---|---|
BBC micro:bit | 1 ud | Placa BBC micro:bit | |
Protoboard | 1 ud | Placa Prototipado | |
Breakout | 1 ud | BBC micro:bit Breakout | |
Led Rojo | 1 ud | ||
Led Amarillo | 1 ud | ||
Led Verde | 1 ud | ||
Resistencia 220 Ω | 3 uds | ||
Cables Prototipado | 7 uds |
En este Proyecto, vamos a realizar un Divertido Juego de Datos. Las normas del juego son:
- Mediante el Pulsador «A» de la placa micro:bit, realizaremos las tiradas de los dados
- La primera Tirada al pulsar «A» será la de micro:bit. Se mostrará en pantalla mediante scroll la «m» de microbit y a continuación la cara del dado de la tirada
- La segunda tirada al pulsar «A» será la nuestra. Se mostrará en pantalla mediante scroll la «t» de tu y a continuación la cara del dado de la tirada
- Si el valor de la tirada de micro:bit es mayor que el de nuestra tirada, gana micro:bit y se enciende el led rojo (hemos perdido)
- Si el valor de la tirada de micro:bit es menor que el de nuestra tirada, ganamos nosotros y se enciende el led verde (hemos ganado)
- Si el valor de la tirada de micro:bit es igual al de nuestra tirada, no gana nadie y se enciende el led amarillo (hemos quedado en empate)
- Con el Pulsador «B» reiniciamos la partida, es decir, volvemos al punto inicial y al pulsar «A» tira los dados micro:bit, …
El montaje que vamos a realizar es el mismo que para el Proyecto PMB1.
Puedes encontrar información complementaria sobre los componentes que vamos a utilizar en este Proyecto de Nivel Básico en la Sección Formacion o haciendo click directamente en los siguientes enlaces.
Lo primero que debemos realizar es el montaje que se detalla en el siguiente esquema (recuerda que puedes pinchar sobre cualquier imagen para ampliarla).
Es un montaje sencillo, en el que solo cabe resaltar
- Los Pulsadores que vamos a utilizar son los que tiene integrados la placa micro:bit etiquetados como «A» y «B»
- Resistencias de los Led serán de 220 Ω
- Las resistencias no tienen polaridad, luego da igual el sentido de su colocación pero en el caso de los Leds si es importante tener en cuenta la misma
Una vez realizado el montaje, vamos a poner a continuación el pseudocódigo para entender mejor el algoritmo que vamos a implementar posteriormente.
Programa juego_de_dados_con_microbit_en_python
Importar librerias necesarias;
Definir Imagenes Dados;
imagen_dado1
imagen_dado2
imagen_dado3
imagen_dado4
imagen_dado5
imagen_dado6
Procedimiento mover_dado
numero_aleatorio (1 , 10); // Generamos Números Aleatorios entre 1 y 10
Fin Procedimiento mover_dado;
// Realizamos la tirada del dado
// El valor aleatorio debe estar entre 1 y 6 y lo devolvemos como valor de la función
Procedimiento tirar_dado
valor_dado = numero_aleatorio (1 , 6 );
devolver (valor_dado);
Fin Procedimiento tirar_dado;
// Dependiendo del valor del dado mostramos la Imagen apropiada
Procedimiento mostrar_valor_dado(resultado)
Si resultado == 1 entonces
mostrar(imagen_dado1);
Fin Si
Si resultado == 2 entonces
mostrar(imagen_dado2);
Fin Si
Si resultado == 3 entonces
mostrar(imagen_dado3);
Fin Si
Si resultado == 4 entonces
mostrar(imagen_dado4);
Fin Si
Si resultado == 5 entonces
mostrar(imagen_dado5);
Fin Si
Si resultado == 6 entonces
mostrar(imagen_dado6);
Fin Si
// Bucle Principal
Mientras (True) Hacer
# Inicializamos
# El Turno inicialmente es de micro:bit
turno := "microbit";
limpiar_pantalla;
pin0 := 0;
pin1 := 0;
pin2 := 0;
Mientras (not presionar_boton(B)) Hacer
mover_dado(); // Hacemos que los números aleatorios sean "mas aleatorios"
// Cuando pulsamos el boton A
Si (presionar_boton(A)) entonces
limpiar_pantalla;
// Si el turno es de micro:bit la tirada es suya
// Al finalizar cambiamos el turno a nosotros
// Y viceversa
Si turno == "microbit" entonces
tirada_microbit := tirar_dado();
mostrar_display ("m");
mostrar_valor_dado (tirada_microbit);
turno := "tu";
Sino
tirada_tu := tirar_dado();
mostrar_display ("t");
mostrar_valor_dado (tirada_tu);
turno := "microbit";
Fin Si
// Verificamos quien ha ganado la tirada de dados
// Y encendemos el led correspondiente
// Rojo --> Hemos perdido
// Verde --> Hemos ganado
// Amarillo --> Hemos empatado
Si turno == "microbit" entonces
Si tirada_microbit > tirada_tu entonces
pin0 := 1;
pin1 := 0;
pin2 := 0;
Fin Si
Si tirada_microbit < tirada_tu entonces
pin0 := 0;
pin1 := 0;
pin2 := 1;
Fin Si
Si tirada_microbit == tirada_tu entonces
pin0 := 0;
pin1 := 1;
pin2 := 0;
Fin Si
Fin Si
Fin Si
Fin Mientras
Fin Mientras
Una vez visto el pseudocódigo que define nuestro algoritmo, vamos a ver la programación del mismo mediante Python.
from microbit import * import random # Definimos las imagenes para la pantalla de leds de microbit # de los valores de los dados dado1 = Image("00000:" "00000:" "00900:" "00000:" "00000:") dado2 = Image("90000:" "00000:" "00000:" "00000:" "00009:") dado3 = Image("90000:" "00000:" "00900:" "00000:" "00009:") dado4 = Image("90009:" "00000:" "00000:" "00000:" "90009:") dado5 = Image("90009:" "00000:" "00900:" "00000:" "90009:") dado6 = Image("90009:" "00000:" "90009:" "00000:" "90009:") # Generamos Numeros Aleatorios entre el 1 y el 10 def mover_dado(): random.randint(1, 10) # Realizamos la tirada del dado # Numero Aleatorio entre 1 y 6 y devolvemos el valor de la funcion def tirar_dado(): valor_dado = random.randint(1, 6) return valor_dado # Dependiendo del valor del dado mostramos la Imagen Correcta def mostrar_valor_dado(resultado): if resultado == 1: display.show(dado1) if resultado == 2: display.show(dado2) if resultado == 3: display.show(dado3) if resultado == 4: display.show(dado4) if resultado == 5: display.show(dado5) if resultado == 6: display.show(dado6) # Bucle Principal while True: # Inicializamos # El Turno inicialmente es de micro:bit turno = "microbit" display.clear() pin0.write_digital(0) pin1.write_digital(0) pin2.write_digital(0) # Mientras no presionemos el Pulsador "B" while not button_b.is_pressed(): # Hacemos que los numeros aleatorios se ejecuten # Es decir, aleatorizamos más los numeros aleatorios mover_dado() # Cuando pulsamos el Pulsador "A" if button_a.is_pressed(): display.clear() # Si el turno es de micro:bit la tirada es suya # Al finalizar cambiamos el turno a nosotros # Y viceversa if turno == "microbit": tirada_microbit = tirar_dado() display.scroll("m") mostrar_valor_dado(tirada_microbit) turno = "tu" else: tirada_tu = tirar_dado() display.scroll("t") mostrar_valor_dado(tirada_tu) turno = "microbit" # Verificamos quien ha ganado la tirada de dados # Y encendemos el led correspondiente # Rojo --> Hemos perdido # Verde --> Hemos ganado # Amarillo --> Hemos empatado if turno == "microbit": if tirada_microbit > tirada_tu: pin0.write_digital(1) pin1.write_digital(0) pin2.write_digital(0) if tirada_microbit < tirada_tu: pin0.write_digital(0) pin1.write_digital(0) pin2.write_digital(1) if tirada_microbit == tirada_tu: pin0.write_digital(0) pin1.write_digital(1) pin2.write_digital(0)
Como siempre, espero hayas aprendido y disfrutado con este Proyecto.
Si tienes dudas o quieres hacer cualquier aportación que consideres de interés, puedes realizar todos tus comentarios a continuación.