Hundir la Flota
Introducción
Nuestro objetivo era realizar un juego dinámico que pudiera ser jugado por 2
personas al mismo tiempo de manera visual.
Por ello, optamos por el clásico juego Hundir la Flota mediante unas matrices
led y unos mandos simples.
El proyecto consiste en la emulación del tradicional juego del hundir la flota
para dos jugadores a partir de 4 matrices led usadas como pantallas, 3
protoboards (1 para las matrices, 2 para los mandos) y un Arduino Uno.
Cada jugador tiene 2 pantallas y un mando. En la pantalla inferior es donde
jugará la primera fase del juego que consiste en colocar los barcos y después
atacará en la otra pantalla.
Hardware y Materiales
Materiales Utilizados
1 x Arduino UNO
4 x CJMCU 8×8
3 x Placa Protoboard
12 x Botones
Cables de todo tipo
Esquema del Circuito
Para el correcto funcionamiento del proyecto hicimos uso de 3 protoboards
junto a 4 matrices de leds y 12 botones unidas con cables a la tabla de arduino.
2 de las protoboards contenían 6 botones cada una haciendo la función de un
mando y la otra protoboard que servía de punto de conexión de los pines 5V y
GND para los leds.
Cada botón estaba conectado a la fila negativa de su respectiva protoboard y a
un pin del arduino. Las matrices de leds se conectan a los 5V , al GND y a su
respectivo pin digital de la Arduino.
Cabe destacar que tuvimos que utilizar algunos pines análogos como digitales.
Carcasa
Para el tablero hicimos uso de cajas de zapatos cortadas a medida y pintadas.
Posteriormente con los colores rojo y negro marcando estos el tablero del
jugador 1 y del jugador 2 respectivamente.
En las cajas se recortan cuadrados para ajustar las matrices de leds ya que estas
actúan como pantallas. Para que el tablero se mantuviese sin romperse o
doblarse, hicimos uso de soportes hechos de cartón pegados con pegamento y
cinta americana para asegurar la robustez.
Por último, aprovechamos la mecánica de las cajas de zapatos usando las tapas
y uniendo los tableros con un poco de celo para facilitar la apertura del trabajo
por si eran necesarios cambios en el circuito o algo fallaba y necesitaba ser
arreglado.
Coste
En el coste de los materiales solo hemos incluido lo que tuvimos que comprar.
Material | Cantidad | Coste por unidad | Coste Total |
Matriz CJMCU 8×8 | 4 | 7,40€ | 29,60€ |
Pack 40 Cables Macho-Macho | 1 | 2,50€ | 2,50€ |
Pack 40 CablesHembra-Macho | 1 | 2,50€ | 2,50€ |
Pack 40 Cables Hembra-Hembra | 1 | 2,50€ | 2,50€ |
Botones | 12 | 0,40€ | 4,80€ |
Spray Pintura | 2 | 2€ | 4€ |
Hilo Estaño | 1 | 5,90€ | 5,90€ |
Total: | 49,30€ |
Software
El funcionamiento del programa es sencillo, pero extenso.
En el setup se definirán los pines a utilizar y se inicializan las matrices del color
que queramos, en este caso azul.
Después, en el loop iremos leyendo la entrada de los mandos y actualizando
tanto la posición de los barcos, las posiciones que ya están ocupadas y la matriz
con el color correspondiente dependiendo de donde nos estemos
posicionando en la matriz; también se bloqueara la rotación de los barcos en
caso de estar en el borde del tablero. Esto sucederá hasta que los dos
jugadores coloquen todos sus barcos.
A continuación pasaremos a la fase de ataque, donde una vez más se leerá la
entrada de los mandos y se actualizarán las matrices correspondientes de la
misma manera ya explicada. Si un jugador falla, se cambiara el turno y así hasta
que un jugador gane.
El funcionamiento de las matrices LED se controla mediante las funciones de la
librería Adafruit_Neopixel.
El código al ser muy extenso lo compartiremos mediante el siguiente enlace.
Problemas Encontrados
● Problema 1: matriz LED muy difícil de soldar, ya que se necesitaba un
soldador sin mucha potencia.
Solución: probamos a soldar una gran cantidad de veces hasta que
funcionó.
● Problema 2: No había suficientes pines digitales disponibles, ya que se
utilizaban 4 matrices LED, cada una de las cuales requería un pin, y
además, se contaban con 12 botones que también necesitaban un pin
cada uno.
Solución: usamos pines analógicos como si fuesen pines digitales.
● Problema 3: Al soldar los leds había muchos cables que al conectarlos
con la matriz de led eran muy sensibles y se desconectan fácilmente.
Solución: usar una pistola de silicona caliente con la cual se quedasen
fijos y no hubiese problemas.
Posibles Mejoras
- Mando bluetooth o inalámbrico: para evitar el uso excesivo de cable y
para que el mando sea más cómodo de utilizar. - Más minijuegos, ya que como está estructurado el proyecto te permite
añadir multitud de juegos usando las pantallas led, como un 3 en raya,
un snake u otros más. - Mejores pantallas para que se pueda asemejar a las dimensiones reales
del hundir la flota. - Añadir efectos de sonido por ejemplo cuando tocas un barco o cuando el
barco esté completamente hundido o también cuando se inicie o
termine la partida. - Contador de ganadas y perdidas mediante una pantalla LED.
Funcionamiento del juego
El juego empieza con los dos jugadores colocando sus barcos de manera
horizontal o vertical en su matriz de led correspondiente. Además, los
jugadores podrán moverse por la matriz de led, rotar y confirmar posición a
partir de los botones implementados en el mando. A continuación, se
determinará el turno del jugador 1 o el jugador 2 para empezar a atacar. Si el
jugador falla la posición se queda encendida como blanco y se cambia el turno,
si acierta la casilla correspondiente se queda naranja y no perderá turno. Por
último, el ganador será aquel que haya conseguido averiguar todas las
posiciones de los barcos y cuando esto suceda las pantallas del jugador se
iluminarán de verde y las del perdedor de rojo.
Video
Trabajo realizado por:
Javier Aaron Parrilla Fiaño
Pablo Arce Pardo
Alejandro Martin Sarmiento