10 implementacion juego tres en linea fpga
DESCRIPTION
Juego Tres en Linea FPGATRANSCRIPT
-
AGOSTO20103 ISSN1909-9142
ImplementacindeljuegotresenlneaempleandoFPGA*Freddy Alexnder Castillo Forero Nelson Galvis VillalobosDiego Alejandro Rincn Wilches Wlmer Javier Arias PezElkin Giovanni Chinome Andrs Esteban VelaCristian Camilo Bernal ArizaGeorge Michael Salcedo JimnezIvn Daro Bernal Nieto
*Grupo espacio acadmico Circuitos Digitales II quinto semestre.
-
ImplementacindeljuegotresenlneaempleandoFPGA
159
AGOSTO20103 ISSN1909-9142
coningenio Grupo espacio acadmico Circuitos Digitales II Quinto Semestre
pp. 158-167
Implementationofthreeonlinegame
usingFPGA
The game three in line it is an enjoyable game, when one has the option of winning,
by the contrary in this version the game have a different way, achieving that the
machine always wins or tie whose procedure is explained attentively in this report.
KeyWords:Quartus,altera,Gate,Input,Output,compilator,project,file,simulation,assignment,pin.
Abstract
Resumen El juego tres en la lnea es un juego agradable, cuando se tiene la opcin de ganar, por el contrario en esta versin el juego tiene un camino diferente, alcanzando que
la mquina siempre gana o empata cuyo procedimiento es explicado con atencin
en este informe.
PalabrasClave:Quartus,altera,Gate,Input,Output,compilador,projecto,archivo,simulacin,asignacin,pin.
-
ImplementacindeljuegotresenlneaempleandoFPGA
160
AGOSTO20103 ISSN1909-9142
coningenioGrupo espacio acadmico Circuitos Digitales II Quinto Semestre
pp. 158-167
CINTRODUCCIN
Como se sabe, el juego tres en lnea que
para muchos pases se conoce con otro
nombre, es un juego de destreza mental de
grado fcil, ya que es un juego que se plan-
tea en una matriz de tres por tres por lo
cual su dificultad no es compleja, como el
caso del ajedrez o sudoku. Este juego con-
siste en ubicar tres caracteres iguales en
una posicin horizontal, vertical y/o diago-
nal, para ganar el juego.
Por lo tanto a lo largo de este informe se
plantea un diseo caracterstico del jue-
go tres en lnea, el cual consiste en que el
usuario no le podr ganar a la mquina.
OBJETIVOS
Disear y optimizar el juego tres en lnea
identificando todas las jugadas posibles
que el usuario pueda hacer para encontrar
una secuencia que lleve a la mquina a
empatar o ganar y as prevenir las posibles
jugadas del usuario que lleven a la mqui-
na a perder.
Visualizar el video juego en una VGA me-
diante el uso de un dispositivo (FPGA) que
contiene bloques de lgica cuya interco-
nexin y funcionalidad se puede progra-
mar, de un perifrico bidireccional (Tecla-
do) que realiza la interaccin con el sistema
permitiendo al usuario introducir datos.
MARCOTERICO
TRESENLNEAEl tres en lnea, tambin conocido como
tres en raya, es un juego de lpiz y papel
entre dos jugadores: O y X, que marcan los
espacios de un tablero de 33 alternada-
mente. Un jugador gana si consigue tener
una lnea de tres de sus smbolos: la lnea puede ser horizon-
tal, vertical o diagonal.
Esta partida la gana el primer jugador, X:
Esta partida termina en empate:
Los jugadores no tardan en descubrir que el juego perfecto ter-
mina en empate sin importar con qu juega el primer jugador.
La misma simplicidad del juego de tres en raya lo hacen ideal
como herramienta pedaggica para ensear los conceptos
de teora de juegos y la rama de inteligencia artificial que se
encarga de la bsqueda de rboles de juego. Por lo tanto se
puede escribir un programa informtico que juegue perfecta-
mente al tres en raya y que enumere las 765 posiciones esen-
cialmente distintas o las 26.830 partidas posibles (compleji-
dad del rbol de juego).
MINI-MAxyMQUINADEESTADOMini-max es un mtodo de decisin para minimizar la prdi-
da mxima esperada en juegos con adversario y con informa-
cin perfecta. Mini-max es un algoritmo recursivo.
El funcionamiento de Mini-max puede resumirse como elegir
el mejor movimiento suponiendo que el contrincante esco-
ger el peor.
Este mtodo nos permite realizar una secuencia basada en el
diseo de un rbol y as encontrar los caminos de alto ries-
go. Por lo tanto este diseo nos permite encontrar toda la se-
cuencia ganadora del juego a disear.
Las mquinas de estados se definen como un conjunto de es-
tados que sirve de intermediario en esta relacin de entradas
y salidas, haciendo que el historial de seales de entrada de-
termine, para cada instante, un estado para la mquina, de
-
ImplementacindeljuegotresenlneaempleandoFPGA
161
AGOSTO20103 ISSN1909-9142
coningenio Grupo espacio acadmico Circuitos Digitales II Quinto Semestre
pp. 158-167
forma tal que la salida depende nicamente del estado y las
entradas actuales.
ESPECIFICACIONES
Disear un sistema que garantice que la mquina siempre
gane o empate, demostrando que en cada jugada el sistema
tenga la capacidad de identificar la posicin de l y del juga-
dor y as realizar la jugada ms ptima para ganar.
El usuario siempre comenzar realizando la primera jugada
lo cual hace que el sistema reconozca el movimiento y as
responda adecuadamente.
Visualizar en la pantalla la forma fsica del tres en lnea y
mediante la interaccin del teclado dibujar las posiciones que
el usuario y el sistema asignan.
PROCEDIMIENTO
ALGORITMOTRESENLNEAEl algoritmo es la parte esencial para el desarrollo del jue-
go, con la cual se interpreta cada movimiento del jugador y
se responde de manera que se puedan optimizar las posibi-
lidades de ganar y de impedir que el usuario tenga alguna
posibilidad de conseguir una jugada con la cual pueda de-
rrotar la mquina.
El desarrollo de las posibilidades de las jugadas aumenta expo-
nencialmente a medida que avanza el juego, para esto decidi-
mos reducir las posibilidades del juego de la siguiente manera:
Generar rboles con las cuales se analiza cada posibili-
dad de juego que se pueda presentar, respondiendo a los
diferentes movimientos que el usuario realice de mane-
ra prctica, de tal forma que se puedan bloquear todas
las posibilidades de que el usuario gane y de facilitar las
oportunidades de victoria de la mquina.
En los rboles se observ un comportamiento de simetra
en el tablero del tres en lnea, ya que si se comienza a ana-
lizar las jugadas desde las esquinas (1,3,7,9) siempre sern
los mismos movimientos a si se empezar en una misma
esquina, lo mismo funciona para las casillas ubicadas en
los centros (2,4,6,8) y finalmente la ca-
silla del centro.
Despus de generar las posibilidades
de juego para cada ubicacin del table-
ro de tres en lnea, se analiza el table-
ro, de forma que con un solo rbol se
pueda responder a todas las dems ju-
gadas, esto es posible si se realiza una
rotacin ordenada del tablero del tres
en lnea, de manera que se ubique la
casilla de inicio de la jugada del usua-
rio, como la casilla de inicio de nues-
tro rbol, dado que este resuelve cada
jugada para tener como resultado una
victoria o un empate, nunca una de-
rrota. Este proceso se repite para cada
esquina, cada casilla del centro de las
filas y las columnas externas del ta-
blero, teniendo en cuenta que para la
casilla del centro utilizaremos un r-
bol independiente, despus de esto, se
procede a la programacin en VHDL,
esta programacin se realiza en ins-
tancias por aparte, de manera que se
pueda aplicar las tres programaciones
a un bloque que escoger el algoritmo
a utilizar y cul ser el valor a repre-
sentar en la VGA.
Al programar las tres instancias las
cuales son los tres rboles, estas re-
suelven las jugadas por medio de es-
tados presentes en cada posibilidad de
juego y as se generan unos bloques
que integran todos los comandos de
entrada y mediante las dems instan-
cias este resultado se entrega a la VGA.
Una de estas instancias es la encarga-
da de recibir las seales de entrada y
convertirlas segn la rotacin ordena-
da a nmeros que el rbol pueda solu-
cionar, en cada caso segn correspon-
-
ImplementacindeljuegotresenlneaempleandoFPGA
162
AGOSTO20103 ISSN1909-9142
coningenioGrupo espacio acadmico Circuitos Digitales II Quinto Semestre
pp. 158-167
da, estos nmeros sern tomados por
cada uno de los rboles y sern contes-
tados con la mejor jugada, con aquella
que no nos permita perder. Las salidas
de cada uno de los tres algoritmos tie-
ne que ser seleccionados por una ins-
tancia, que revertir la rotacin hecha
antes de entrar a los rboles para su
interpretacin y respuesta. Despus de
haber ingresado cada dato a los rboles y de haber sido
procesado se dise una instancia que segn el rbol que
estuviera habilitado escogera qu salidas deberan visua-
lizarse en VGA. En otras palabras en una misma instancia
se controlaran las salidas de los tres rboles, estas seran
entradas y daran una sola salida, que es la que se podr
visualizar luego de hacer el proceso inverso de la primera
rotacin, realizada para que se pudieran resolver en los
rboles programados.
DISEOJERRQUICO
-
ImplementacindeljuegotresenlneaempleandoFPGA
163
AGOSTO20103 ISSN1909-9142
coningenio Grupo espacio acadmico Circuitos Digitales II Quinto Semestre
pp. 158-167
CDIGOSDISEADOS(INSTANCIAS)
KEyBOARD
Permite la interaccin del usuario con el programa, el cual
funciona con un reloj de 25MHz y nos entrega una salida de
8 bits codificada en hexadecimal de acuerdo con la tecla que
se oprima.
DECODIFICADOR
Recibe una seal de 8 bits codificada en ASCII, el cual de-
codifica la seal para entregar cuatro salidas binarias, estas
representan el nmero de la casilla del juego tres en lnea.
(Por Ejemplo 01110011 => 0101 => 5).
CONTROLDEESTADOS
Lee cuatro entradas binarias las cuales
son controladas por el pulso del reloj y un
reset que devuelve un estado inicial. De
acuerdo con las entradas se entrega a la
salida un dato binario que activa el res-
pectivo Algoritmo.
DIVISORDERELOJDE25MHZy1HZ
Estas dos instancias dividen el perodo del
reloj de 50Mhz que se encuentra incluido
de la tarjeta FPGA para realizar correcta-
mente la sincronizacin de la VGA y Algo-
ritmos, respectivamente.
-
ImplementacindeljuegotresenlneaempleandoFPGA
164
AGOSTO20103 ISSN1909-9142
coningenioGrupo espacio acadmico Circuitos Digitales II Quinto Semestre
pp. 158-167
HABILITADOR
Recibe la seal de entrada generada por el tecla-
do y habilita las instancias de los rboles segn
la posicin en la que juega el usuario y su respec-
tiva transpuesta segn la casilla seleccionada.
CONVERSOR
Recibe las seales que entrega el habilitador y
el teclado (SCAN_CODE) para generar las rota-
ciones respectivas de acuerdo con las seales
de entrada y as entregar cuatro salidas binarias
que sean legibles para los rboles programados.
ALGORITMO5
Lee las cuatro salidas binarias que nos entrega el con-
versor y estas son controladas por el reloj de 1Hz, el
cual permite que el algoritmo pueda responder adecua-
damente y as ejecutar la secuencia de las jugadas que
realiza el usuario cuando comienza con la tecla cinco.
ALGORTIMO2
-
ImplementacindeljuegotresenlneaempleandoFPGA
165
AGOSTO20103 ISSN1909-9142
coningenio Grupo espacio acadmico Circuitos Digitales II Quinto Semestre
pp. 158-167
Lee las cuatro salidas binarias que nos entrega el con-
versor y estas son controladas por el reloj de 1Hz, el
cual permite que el algoritmo pueda responder adecua-
damente y as ejecutar la secuencia de las jugadas que
realiza el usuario cuando comienza con la tecla dos.
ALGORITMO7
Lee las cuatro salidas binarias que nos entrega el con-
versor y estas son controladas por el reloj de 1Hz, el
cual permite que el algoritmo pueda responder adecua-
damente y as ejecutar la secuencia de las jugadas que
realiza el usuario cuando comienza con la tecla siete.
DEMUx
Recibe las seales de los tres algoritmos y del ha-
bilitador e identifica la traspuesta que hay que
realizar para entregar los datos a la instancia de
VGA seleccionando las salidas del rbol activo que
est resolviendo.
-
ImplementacindeljuegotresenlneaempleandoFPGA
166
AGOSTO20103 ISSN1909-9142
coningenioGrupo espacio acadmico Circuitos Digitales II Quinto Semestre
pp. 158-167
VGA
Muestra la visualizacin del juego mqui-
na vs jugador, la cual funciona con una
frecuencia de 25 MHz para poder realizar
el sincronismo horizontal-vertical y as ver
los movimientos realizados en el transcur-
so del juego.
REPRESENTACINGRFICA
En este diagrama encontramos la representacin grfica del
juego tres en lnea, el cual mediante una matriz de tres por tres
se dibuja la posicin en la que el usuario juega, siendo el color
rojo la jugada por la mquina y el azul la jugada por el usuario.
CONCLUSIONES
Por medio del estudio de circuitos digitales podemos describir
comportamientos de sistemas reales tan complejos en su de-
sarrollo como lo es un juego que exige cierto nivel de destreza
mental y utilizando los conocimientos adquiridos presentar
una posible solucin e implementacin.
La implementacin de sistemas de anlisis como los algo-
ritmos Minimax y la heurstica son muy tiles para la iden-
tificacin de soluciones que permiten mejorar la visin de
la estructura temtica del programa, generando mejores
alternativas de respuesta, dando como resultado un siste-
ma solucin por medio de la aplicacin discreta o por dise-
o de jerarquas.
Es necesario tener en cuenta la distribucin de las partes que
componen el sistema con respecto a la jerarqua establecida,
pues esta permite tener una mejor manipulacin de rutas de
cada instancia, provocando una mejor eficiencia en el resul-
tado y optimizacin del circuito.
A travs de cada uno de los obstculos que se presentan en
el diseo y programacin de cierto sistema hay que apren-
der de ellos para que se conviertan en una fortaleza del sis-
tema y lograr un excelente desarrollo del programa o de la
solucin planteada.
-
AGOSTO20103 ISSN1909-9142
coningenio
167
REFERENCIAS
1. Pedroni, Volnei A. Digital Electro-
nics and design with VHDL. Mor-
gan Kaufman Publishers. 2008
2. Mano, M. Morris y KIME., Charles
R. Fundamentos de diseo lgico y
de computadoras. Pearson Educa-
cin. Tercera edicin. 2005
3. Pedroni, Volnei A. Circuit Design
with VHDL. MIT press. 2004
4. Wakerly, John F. Diseo Digital
Principios y prcticas. Pearson
Educacin. 2001
5. Tocci, Ronald J y WIDMER., Neal.
Sistemas Digitales. Pearson Edu-
cacin. 2003
6. Vyemura, John P. Diseo de Sis-
temas Digitales. Internacional
Thomson editores, 2000