10 Implementacion Juego Tres en Linea FPGA

10
AGOSTO··2010··3 ISSN··1909-9142 Implementación del juego tres en línea empleando FPGA * Freddy Alexánder Castillo Forero Nelson Galvis Villalobos Diego Alejandro Rincón Wilches Wílmer Javier Arias Páez Elkin Giovanni Chinome Andrés Esteban Vela Cristian Camilo Bernal Ariza George Michael Salcedo Jiménez Iván Darío Bernal Nieto [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] * Grupo espacio académico Circuitos Digitales II quinto semestre.

description

Juego Tres en Linea FPGA

Transcript of 10 Implementacion Juego Tres en Linea FPGA

  • 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

    [email protected]

    [email protected]

    [email protected]

    [email protected]

    [email protected]

    [email protected]

    [email protected]

    [email protected]

    [email protected]

    *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