Professional Documents
Culture Documents
Resumen
Tres en raya es un juego sencillo e intuitivo, que muchos jugamos en nuestra infancia y aun ahora lo seguimos haciendo, por que tan solo necesitamos un papel y un bolgrafo para tener retos de estrategia, en un tablero simple de 3x3. Tenemos un pequeo inconveniente que se tratara en el siguiente trabajo, el juego clsico es de 2 jugadores, pero Si queremos jugar solos? EL tres en raya pertenece a los juegos de solucin Finita, esto indica que se pueden contar todas las jugadas posibles. Aun as, el juego es sencillo, sus jugadas son finitas, pero esto no indica una solucin sencilla para implementarlo digitalmente, ya que presenta varios problemas en la implementacin y en la inteligencia artificial que deber presentar el jugador automatizado Trataremos el mtodo de la microprogramacin para reducir el nmero de compuertas utilizadas, adems de reducir el tamao del circuito y los costos.
Abstract
"Tic Tac Toe is a simple and intuitive game that many play in our childhood and even now I still do, that we just need a paper and pen to take strategic challenges in a simple 3x3 board. We have a small problem that they were in the following work, the classic game is 2 players, but what if we wanted to play alone? Tic Tac Toe game belongs to the finite resolution, this means that you can count all the possible moves. Still, the game is simple, his moves are finite, but this is not a simple solution to implement digitally, it presents several problems in the implementation and artificial intelligence to be provided by the automated player Try the method of the firmware to reduce the number of gates used, while reducing the circuit size and cost.
II
LISTA DE FIGURAS Figura 1: Juego de tres en Raya Figura 2: Ruina de tablero Terni Lapilli Figura 3: Ejemplos de diferentes tableros, usados para el tres en raya. Figura 4: Modos de Apertura Figura 5: Posibles primeras jugadas de humano Figura 6: Tablero Codificado Figura 7: Bloque Del juego Figura 8: Diagrama de Bloques interno Figura 9: Flujograma Nivel 2 Figura 10: Flujograma Nivel 1 Figura 11: Esquema circuito de control Figura 12: Esquema de entrada de datos de una casilla. Figura 13: Codificador 8 a 3 bits, Variables de control Figura 14: Elemento de Salida por cada casilla Figura 15: Diagrama de bloques del 74c922 Figura 16: Layout Circuito de Control Figura 17: Layout del tablero
LISTA DE TABLAS Tabla 1: Respuestas de PC a jugadas de Humano NIVEL 2 Tabla 2: Respuestas de PC a jugadas de Humano NIVEL 1 Tabla 3: Programa AHPL Tabla 4: Datos guardados para la Microprogramacin. Tabla 5: Diagrama de tiempos
III
INDICE GENERAL
Capitulo 1: ANTECEDENTES Y PROPOSITOS 1.1 Introduccin 1.2. Objetivos 1.2.1 Objetivo General 1.2.2 Objetivos Especficos Capitulo 2: ANALISIS TEORICO 2.1. Descripcin del material de juego 2.2 Reglas Bsicas del Juego 2.3 Apertura y Posibles Respuestas 2.3.1 Casillas Simtricas 2.4 Respuestas a Posibles jugadas de Humano 2.5 Diagramas de Bloques Capitulo 3: DESARROLLO DEL PROYECTO 3.1 Flujo grama 3.2 Programa AHPL 3.3 Circuito de Control y Datos 3.3.1 Circuito de Control 3.3.2 Circuito de Datos 3.3.3 Teclado Matricial y el CI 74c922 3.4 Diagramas de tiempos 3.5 Layout del Circuito Capitulo 4: CONCLUSIONES Y MEJORAS 4.1 Conclusiones 4. 2 Mejoras 5. BIBLIOGRAFA 6. ANEXOS
Pag.
1 2 2 2
3 3 4 5 5 7
8 9 11 11 14 15 16 18
20 20 20 21
IV
Capitulo 1
Figura 1: Juego de tres en Raya Existe otra tendencia se cree que pudo tener su origen en el Imperio Romano con el nombre de Terni Lapilli, puesto que se han encontrado tableros con forma de matriz de 33 en varias de sus ruinas.
Figura 2: Ruina de tablero Terni Lapilli Existen otros puntos de vista e investigaciones que indican diferentes lugares geogrficos y puntos temporales de la creacin del juego de las Tres en Raya y existen tambin muchos juegos que podran ser los precursores o sucesores, por la similitud del tablero y/o reglas.
1.2. OBJETIVOS
Con el presente trabajo se trata de enfocar los siguientes objetivos: 1.3.1 Objetivo General Realizar mediante descripcin hardware y posterior implementacin el juego de Tres en Raya.
1.3.2 Objetivos Especificos Utilizar la tcnica de la microprogramacin, para el diseo de la unidad de control del sistema digital Implementar un interfas a usuario (tablero), mas intuitivo. Reducir y mejorar la eficiencia del diseo del tres en raya.
Figura 3: Ejemplos de diferentes tableros, usados para el tres en raya. Fichas: cada juego de las Tres en Raya, tiene 6 fichas, tres para cada jugador, normalmente tres fichas tienen forma de X y otras tres fichas forma de O. Pero en realidad basta con que tres fichas tengan una forma o color y las otras tres fichas otra forma u otro color.
Figura 4: Modos de Apertura En el sistema descrito para este proyecto se tendr a dos jugadores, uno denominado PC y otro denominado humano; el jugador PC (jugador automatizado) tendr una respuesta optima en el nivel alto de dificultad, dependiendo de la jugada realizada por el humano. Se asigno al jugador PC como jugador X esto implica que es el primero que en jugar. Estado inicial: Tablero vacio, nicamente la casilla central marcada con la primera jugada del jugador PC (apertura central). El siguiente en jugar es el humano que tendr 8 casillas vacias en las que puede colocar, en una, su marca. Existe 2 posibles opciones a las que puede optar el humano, colocar su jugada en un angulo o en una casilla lateral. Si se juega en una casilla lateral, el jugador PC realizara su estrategia y posterior victoria, ya que esta jugada no es una jugada de bloqueo a la apertura central. En otro caso si se juega en una casilla angular, tendramos la mejor jugada del humano para responder la apertura central. En la siguiente jugada, el pc buscara la victoria tratando de completar lineas para la victoria, en todo caso el jugador humano podr perder, ganar (nivel bajo de dificultad), o empatar con la pc.
Figura 6: Tablero Codificado Casillas Angulares: Por similitud de posibles respuestas de computadora a jugadas de humano, las casillas simtricas son O(0) con O(7) y O(2) con O(5). Casillas Laterales: Por similitud de posibles respuestas de computadora a jugadas de humano, las casillas simtricas son O(1) con O(6) y O(3) con O(4). Estas casillas simtricas nos servirn para reducir el nmero de pasos del control del circuito, adems har reducir la cantidad de memoria utilizada (posiciones en memoria) lo que conducir a una mejor eficiencia del circuito.
2da. Jugada PC
3ra. Jugada PC
4ta. Jugada PC
5ta. Jugada PC
7 7 7
1v2v3v 4v5v6 0 0
0 2 2
--------1v3v4v 6 5
--------5 4
-------------------------
-------------------------
* Simetria Laterales * Jugada no bloquea apertura * Simetria Angulares * Jugada bloquea apertura * Simetria Angulares * Jugada bloquea apertura
3v4 3v4 3v4 0v7 0v7 0v7 2v5 2v5 2v5 2v5
2 2 2 3 3 3 3 6 6 6 6
5 0 0 4 2 2 2 1 0 0 0
----------------------------------------0v7 1 ----------------2v5 3
-----------------
----------------1 X ----------------3 X
Tabla 1: Respuestas de PC a jugadas de Humano NIVEL 2 Ahora prosigamos con las jugadas de NIVEL 1, nivel fcil cuando el humano tiene la oportunidad de ganar (Win-H.) Incluimos errores en jugada de Maquina
1er. Jugada Humano 2da. Jugada PC 2da. Jugada Humano 3ra. Jugada PC 3ra. Jugada Humano 4ta. Jugada PC 4ta. Jugada Humano 5ta. Jugada PC
2 2 2 2 3 3 3 3 3 3 3 3
1 1 1 1 1 1 1 1 1 1 1 1
6 0 0 0 6 4 4 4 4 4 4 4
--------3v4v5 7 7 --------0 0 5 5 2 7 7
--------7 5 5 --------7 7 2 2 5 0 0
-------------------------------------------------------------------------------------------------
Tabla 2: Respuestas de PC a jugadas de Humano NIVEL 1 Observando la tabla 1 y 2 se puede observar que las columnas sombreadas pertenecen a la variable de control (jugadas humano). Enumerando Las respuestas iguales a diferentes condicionales distinguimos 17 pasos para el nivel-2 y 11 pasos del nivel-1, en total 28 pasos para el sistema de control de nuestro Diseo de tres en raya. Pasos de control que obtenemos enumerando las respuestas a condicionales distintas en la tabla1 y tabla2. Si fuera lgica cableada, necesitaramos 28 FFD, adems de varios integrados para cada condicional.
Cabe mencionar adems que se incluye un paso adicional (paso-1), que ser el reset de nuestro circuito, para volver a iniciar el juego nuevamente.
Figura 7: Bloque Del juego Las entradas sern definidas por 8 pulsadores que enviaran un pulso para ser codificado a binario de 3 bits (Vector O[8]), teniendo el binario este actuara como variable de control observado en la tabla1. En la salida tendremos 8 bits de posicin en tablero, 3 bits que anuncian Win-PC, Win-H y Empate, y 2 bits que auncian el nivel, entonces tendramos 13 bits de salida, as que utilizaremos 2 memorias eeprom 2864 que tienen longitud de palabra de 8bits.
3.1 FLUJOGRAMA
17 PASOS NIVEL 2 (NIVEL EXPERTO) + 1 PASO DE INICIO PARA LAS CONDICIONALES INCIALES
B C
A B C
N A B C A B C
B C
A B C
N A B C A B C
X2 1
A C B C
A B
X4 1 WinPC 1
B C A B
A
C
B C A B A C
B A
X0 1 WinPC 1
A
C C B
A B C
ABC
ABC
A B C
X2 1
X0 1
X2 1
X0 1
A B A B
X5 1 WinPC 1
A B C
A B A B
X7 1 WinPC 1
A B C
A C A C
A C A C
A B C
A B C
B C A B C
A
X
7
B C
X3 1 WinPC 1
1 1
A B C
WinPC
A BC
A B C
Empate 1
N A B C
N A B C
19
27
X1 1
A C A B
A
C
X1 1
B
20
C C C
X6 1 WinPC 1
B A
1
20
A B C
21
A B C
28
X4 1
X0 1
WinH 1
23
ABC
22
B C
A B
11
A B C
8
A B C
24
X5 1 Empate 1
A B C
29
1 23 8
X5 1
A B C
25
X 2 1
ABC
23 8 23
A B C
A B C
26
X0 1
A B C
23
N A B C A B C, N A B C, N A B C 2,9,14,17,19,27
2.X3 1 A C B C A B , A B C , A B C
3,4,2
3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.-
X 4 1;WinPC 1 1 X2 1
A B A B , A B C , A B C A B X 5 1;WinPC 1 1 X6 1
5,6,4
A B C A B C , A B C , A B A B A C X 1 1;WinPC 1 1 Empate 1 1 X6 1 B C A B A C , A B C , A B C X0 1
7,8,6
7,10,9 11,12,10
A B A B , A B C , A B C A B X 7 1;WinPC 1 1 X4 1
13,8,12
5,3,16
5,18,17 11,7,18
A C A C , A B C , A B C A C X1 1 A C A B A C , A B C , A B C
20,21,19
10
20.21.22.-
X 6 1,WinPC 1 1 X4 1
A B C , A B C , A B C , A B C 22,24,25,26 X7 1
23,8
26.27.28.29.-
A BC , A B C X0 1 A B C , A B C X1 1
23,23
20,28,27 11,29,28
8,23
B C B C A C , A B C , A B C X0 1
A B C A B , A B C , A B B C X5 1
A B C , A B C
8,23
Tabla 3: Programa AHPL
Tabla de datos guardados en las memorias EEPROM, para la microprogramacin, para ambos niveles.
11
DIRECCION
NIVEL
PALABRA1
Empate Win H. WinPC X7 X6
PALABRA2
X5 X4 X3 X2 X1
D1
A B C
A 7 A 6 A 5 A 4
Paso Actual
A 3 A 2 A 1 A 0
Paso siguiente
D 7 D 6 D 5 D 4 D 3
A8
D2
D1
D0
D7
D6
D5
D4
D3
D2
1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1
1 0 1 1 1 0 0 1 0 1 1 1 0 1 0 0 1 1 0 1 1 0 1 1 1 0 0 1 0 0 1 1 0 1 0 0
0 1 1 1 1 0 0 0 1 0 1 1 0 0 1 0 1 0 1 1 1 0 1 1 0 1 0 1 0 1 1 1 0 1 0 1
1 0 1 1 0 1 0 1 0 0 1 0 1 1 0 0 1 1 0 0 1 0 1 0 1 0 1 1 0 1 1 0 1 1 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 1 12
0 0 0 1 1 1 1 1 1 0 0 1 1 1 1 0 0 1 1 0 0 0 0 1 1 1 1 1 1 0 0 1 1 1 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0
1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0
0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
X0
D0
0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 0 1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1
1 1 0 1 1 0 1 1 1 0 0 1 0 0 1 1 0 1 0 0 1 1 0 1 1 1 0 0 1 0 1 1 0 1 1 0 0
1 1 0 1 0 1 1 1 1 0 0 0 1 1 1 1 0 0 1 0 1 1 0 1 0 0 1 1 1 0 1 1 1 0 1 0 1
1 1 0 0 0 1 1 1 0 1 0 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 0 0 1 1 1 1 0 0 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1
1 1 1 1 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0
1 1 1 1 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0
0 1 1 0 0 0 0 1 1 1 1 1 1 0 0 1 1 1 1 1
0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0
0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0
Las direcciones de datos que no figuran no se utilizaron, asi que no se los grabo
13
A8: Define el nivel del juego: 0 define NIVEL 1; 1 define NIVEL 2. A7, A6, A5: Define las variables de control, numero binario que representa cada casilla ver figura6. A4,A3,A2,A1,A0: Representa el paso anterior codificado en 5 bits por ser 29 pasos. D7,D6,D0 (Palabra 0): Representa la salida de 8 bits, ver figura 11. D7,D6,D5,D4,D3 (Palabra 1): Representa el paso siguiente codificado en 5 bits por ser 29 pasos. D2,D1,D0 (Palabra 1): Representa Win-H, Empate, Win-PC.
14
Cuando apretamos un pulsador O de alguna casilla enviamos un 0 lgico habilitando la preseteada del Flip-flopD, teniendo un uno lgico permanente que se enviara al led de la misma casilla. Adems que el mismo pulsador enviara un pulso (va el monoestable), que luego ser codificado de 8 bits a tres bits y este dato durara un periodo de clock. Que lo denominamos O(0), i O(1) , O(2), ...,etc, segn sea la casilla. Cabe Resaltar que los O(0), O(1), O(2), O(7) sern tomados como clock(observe figura9).
Figura 13: Codificador 8 a 3 bits, Variables de control Circuitos de seales de Salida: Por cada lnea dato de la EEPROM tenemos para cada una, lo siguiente
15
16
17
18
Tablero
19
4.1 CONCLUSIONES
Se logro implementar de manera satisfactoria el juego Tres en Raya. Y se reducieron en lo mas posible a los pasos de control teniendo como resultado 29 pasos de control. Se logro grabar en la memoria 2864 EEPROM una gran cantidad de direcciones con las respectivas bifurcaciones de pasos. Se concluye que la microprogramacin es una herramienta potencial para realizar las unidades de control en sistemas Digitales grandes que incluyen demasiados pasos. Adems de usar una memoria para la unidad de control, se uso una segunda memoria donde estaban grabadas todas las respuestas de la maquina. Se mejora e implemento el juego de tres en raya con 2 niveles, para poder optar a ganar a la maquina. Se Implemento satisfactoriamente el tablero, haciendo de esta manera el juego mas intuitivo.
4.1 MEJORAS
Se grabaron solo las posiciones de memoria necesarias para el juego, por tal motivo aun quedaron muchas direcciones libres en ambas memorias, que podran ser utilizadas para diversos fines, como por ejemplo una demostracin encendiendo leds y dando jugadas. Esto cuando no se este jugando. El diagrama de flujo presento mucha mejora en la cantidad de numero de pasos y esto lo demuestra el programa ahpl. Por tal razn se podra en un futuro encarar otro juego como lo es el GO, proyecto con las mismas bases del tres en raya 5. BIBLIOGRAFIA http://www.museodeljuego.org/ http://catarina.udlap.mx/u_dl_a/tales/documentos/msp/florencia_y_an/capitulo4.pdf http://www.codeproject.com/KB/cs/tictactoewin32.aspx http://reocities.com/RainForest/6896/magia.htm#tres%20en%20raya
20
Clocking Scheme/Instruction Cycle La entrada de reloj (OSC1/CLKIN/RA7) es internamente dividido a Q1, Q2, Q3 y Q4. Ademas Internamente, el contador de programa (PC) incrementa todos los Q (ver figura). Se obtiene la instruccion a realizar cada blanco de Q1, pero recin esta instruccin se realiza despus de Q4. La instruccin se decodifica y se ejecuta durante el Q1 a Q4.
Program Memory Organization El PIC16F628 tiene un contador de 13 bits capaz de hacer frente a un espacio de 8K x 14 de programa en memoria. Acceso a una ubicacin por encima de estos lmites provocar una error. El vector de RESET est en 0000h y el vector de la interrupcin es 0004h
21
BLOCK DIAGRAM
22
LAYOUT
Cdigo en ASM junto al proyecto mplab que incluye el .HEX se lo presenta en el CDROM
23
24