Está en la página 1de 9

Universidad de Ibagué

Electrónica Digital III


Departamento de Ingeniería
Universidad de Ibagué, Cr 22 Calle 67, Ibagué, Colombia

JUEGO OTELLO – SENSE HAT


Jonatan Polanco 2420171060

RESUMEN

Para la materia de electrónica digital 3, se propone un proyecto con el fin de aplicar la teoría del lenguaje de
programación Python aprendido. Es requerido para el proyecto hacer uso del Sense Hat, que es un periférico de la
raspberry pi.

En ésta ocasión se propone realizar un juego de mesa para dos jugadores, un jugador porta las
piezas blancas y otro las negras. El tablero del juego es 8x8, lo cual es perfecto para visualizarlo
en el sense hat de la raspberry pi.
El reversi, othello o yang es un juego entre dos personas, que comparten 64 fichas iguales, de
caras distintas, que se van colocando por turnos en un tablero dividido en 64 escaques. Las caras
de las fichas se distinguen por su color y cada jugador tiene asignado uno de esos colores,
ganando quien tenga más fichas sobre el tablero al finalizar la partida. Se clasifica como juego
de tablero, abstracto y territorial; al igual que el go y las amazonas.
La movilidad media de un jugador a lo largo de la partida es de 8 movimientos. Como en total
se pueden hacer 60 movimientos, el número máximo de posibles partidas es de
aproximadamente 1054. Por otra parte, el número máximo de posiciones posibles se calcula
aproximadamente en 1030.

La sense hat tiene 64 cuadrículas donde se podría representar las fichas de los dos jugadores
ya sea casilla en negro o en blanco.
Para realizar los movimientos en la partida de juego, se utilizará el joystick incorporado en el
sense hat.
En el siguiente enlace se ilustra con un gif de como avanza el juego conforme a los
movimientos de los jugadores.
https://user-images.githubusercontent.com/57655/27145999-a1c3d828-50ec-11e7-95d3-
01ca8f06b3e1.gif

ALGORITMO

Diagrama de flujo
Para poder evaluar las casillas del juego y poder conocer si los movimientos que se van a realizar
son validos o no para luego poder generar un nuevo estado de juego se genera una matriz de 8x8
en ceros. Luego se le asigna el número 1 a las casillas de color blanco (jugador1) y el número 2
a las casillas de color negro (jugador2) y a las casillas que tienen un movimiento válido para
algún jugador se le asigna el número 3 (debe estar vacía “0”).

En la línea de código #10 se genera la matriz de 8x8 en ceros.

Para el estado inicial del juego se realizaron 2 funciones: pintarTablero() que nos va a pintar
todas las 64 casillas del sense hat en verde, y estado_inicial() que nos va a colocar la
configuración clásica del juego donde hay 4 casillas en el centro.

Función pitarTablero()
Función estado_inicial()

Estado inicial del juego.


Matriz estado inicial

En la consola se puede visualizar la matriz con base a el estado inicial del sense hat.

Captura de eventos del joystick


Evaluar posiciones válidas

La imagen anterior nos muestra la función que nos permite evaluar las casillas para comprobar
si es válido el movimiento.

Evaluación de casillas

En la imagen anterior se puede ver cómo están las casillas posicionadas con respecto a “x” y
“y” entonces para poder evaluar qué casilla es válida para que un jugador ponga su ficha allí se
deben evaluar todas las 64 casillas de la matriz gameState()

Como ya se tiene una representación de las fichas del jugador en la matriz( jugador1 =1,
jugador2 =2) se debe tener las siguientes consideraciones para poder preguntar y evaluar:
- si el vecino es de un color diferente, debe ser para formar una línea
- Si se forma una línea, la agregaremos a la matriz de conversión
- Por ejemplo: Si la línea x-1,y = x+1,y y la casilla de en medio a ellas está vacía(“0”)
ésta casilla es una casilla válida. Así se deben preguntar por las 4 posibilidades de
llenar casillas: vertical, horizontal y de esquina a esquina. (ver función evaluar())

While true

Llegamos al inicio del juego, al ciclo infinito para la reproducción cíclica del juego.
En éste ciclo se va a preguntar cual jugador es el siguiente y se van a llamar a las funciones
anteriormente explicadas.

Se va a preguntar si el jugador en turno ha presionado el botón de la mitad para colocar una


ficha en un lugar específico (x, y) y se va a preguntar si la casilla (x, y) es válida (==“3”)

Las líneas 93 y 98 nos permiten que al pasar el cursor por una ficha que ya está en el tablero,
ésta no se borre por el parpadeo del cursor.
Para la línea 99 preguntamos si la casilla está vacia para poder generar el parpadeo del cursor.
El color del parapadeo del cursor depende del turno del jugador.

En la línea 106 se hace lo mismo que para el jugador 1. Lo que cambia son los colores del
jugador.

Conclusiones:
EL juego aún esta por terminar. Tuve errores al preguntar por las casillas de la matriz
gameState(). Por ende el juego aún no está 100% funcional. Errores en la función evaluar().

También podría gustarte