SlideShare a Scribd company logo
1 of 14
Download to read offline
Universidad Cat´olica
“Nuestra Se˜nora de la Asunci´on”
Sede Regional Asunci´on
Facultad de Ciencias y Tecnolog´ıa
Departamento de Ingenier´ıa
Electr´onica e Inform´atica
Lenguajes de Programaci´on I
Ing. Carlos Cardozo
Ing. Rodrigo Villalba
Ing. Vicente Gonz´alez
Colm´an, Alberto <albertocolman81@gmail.com>
Ram´ırez, Pedro <pedroramirez22@gmail.com>
Trabajo Final
AbaloneR
1 · 0
27 de junio de 2011
´INDICE 2
´Indice
1. Introducci´on 3
2. Abalone 4
2.1. Conceptos b´asicos . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2. Movimientos posibles . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.3. Jugadas Sumito y Situaciones Especiales . . . . . . . . . . . . . . 5
3. Algoritmo de juego utilizado 8
3.1. Parte l´ogica de la soluci´on . . . . . . . . . . . . . . . . . . . . . . 8
3.2. Movimiento de l´ınea . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.3. Movimiento de lado . . . . . . . . . . . . . . . . . . . . . . . . . 9
4. Elaboraci´on del entorno gr´afico 10
4.1. Entorno gr´afico y l´ogica . . . . . . . . . . . . . . . . . . . . . . . 10
4.2. Manejo de se˜nales y eventos . . . . . . . . . . . . . . . . . . . . . 11
4.3. Ilusi´on o que cosa . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
5. Inteligencia Artificial 12
5.1. B´usqueda Monte Carlo . . . . . . . . . . . . . . . . . . . . . . . . 12
5.2. Implementaci´on de la IA . . . . . . . . . . . . . . . . . . . . . . . 12
6. Implementaci´on M´aquina versus M´aquina 13
7. Puntos fuertes del algoritmo 13
8. Puntos d´ebiles del algoritmo 13
9. Dificultades principales encontradas en el desarrollo 14
1 Introducci´on 3
1. Introducci´on
Por m´as de 3000 a˜nos los juegos de mesa se juegan por los seres humanos.
Ellos juegan el uno contra el otro, una de las maneras de divertirse y formar su
pensamiento estrat´egico.Uno de estos juegos es abalone. Fue inventado en 1987
por Laurent Levi y Lalet Michel. Abalone pertenece al grupo de los cl´asicos jue-
gos de mesa. Hoy en d´ıa es muy popular. Los torneos se celebran regularmente,
pero hasta ahora no hay muchas investigaciones realizadas en este juego.
Hoy en d´ıa los juegos de tablero son a´un famosos. La variedad de juegos
diferentes aumenta m´as y m´as y va desde los juegos de cartas y juegos con
dados de m´as extenso juego de sal´on que puede contener peones, azulejos, dados
y cartas. Para jugar estos es para divertirse en grande, pero tambi´en es una
competencia entre los jugadores. Una meta es desafiar a los oponentes y ganarles
por trabajo estrategias sofisticadas e inteligentes. A menudo, el juego contiene
los aspectos del azar, por ejemplo, tirar los dados o tomar una carta de una
baraja. Uno no puede prever exactamente lo que suceder´a. As´ı, el juego puede
ser m´as emocionante.
Una categor´ıa especial de juegos son los juegos cl´asicos, llamada placa. Estos
son juegos para dos jugadores en el que ambos jugadores tienen informaci´on
perfecta, es decir, no hay cartas ocultas o alguna informaci´on oculta a otros.
Otro aspecto importante es que no contienen ning´un tipo de acciones basadas
en la suerte. Por lo tanto, los jugadores tienen un control absoluto sobre sus
acciones. Sobre todo, el juego puede ser descrito en algunas frases. Las reglas
son simples. Sin embargo, el n´umero de diferentes movimientos posibles es alto,
lo que hace que el juego se vuelva complejo y un reto. Ejemplos famosos de estos
juegos son el ajedrez y Go y por supuesto el abalone.
2 Abalone 4
2. Abalone
En esta secci´on el juego ser´a explicado en detalle. En primer lugar, se da
alguna informaci´on b´asica. Despu´es los posibles movimientos y luego en el juego,
situaciones especiales se discuten.
2.1. Conceptos b´asicos
El abalone es un juego de dos jugadores estrat´egico. El tablero de juego tiene
una forma hexagonal con 61 campos. Cada jugador tiene 14 canicas. Un jugador
tiene el rojo los, el otro las azules. Los dos jugadores tienen que moverse en las
curvas. El jugador rojo comienza el juego.
El objetivo del juego es para expulsar canicas del oponente en el juego bordo.
El jugador que primero expulsa 6 canicas del oponente gana el juego. Hay varias
formaciones de inicio de los m´armoles. Los dos m´as populares cu´ales son la
formaci´on est´andar que se propone por los inventores del juego. El segundo se
llama Daisy belga. Esta es una formaci´on de uso frecuente en torneos, porque
las posiciones son m´as bien ofensiva a principios del juego.
Estas dos formaciones se ilustran en las figuras de abajo.
(a) Standard (b) Belgian Daisy
Figura 1: Formaciones de inicio del abalone
2.2. Movimientos posibles
En cada turno el jugador puede mover uno, dos o tres canicas de su col-
or. M´ultiples canicas s´olo se puede mover si est´an adyacentes. Adem´as, todas
las canicas se deben mover en la misma direcci´on. Es posible mover en l´ınea
m´armoles, lo que significa que a lo largo de el eje de su posici´on actual (v´ease la
figura 2.3). Otra posibilidad es hacer un paso de costado, es decir, una decisi´on
que no a lo largo del eje de las canicas, pero hacia los lados (V´ease la figura
2.4).
2.3 Jugadas Sumito y Situaciones Especiales 5
(a) L´ınea (b) Lado
Figura 2: Movimientos posibles
Independiente de si un movimiento en l´ınea o un movimiento de costado
se lleva a cabo el jugador s´olo puede mover los m´armoles un campo m´as. Un
movimiento que se sigue permitiendo incluso si una fila de canicas del mismo
color se divide por el movimiento.
S´olo se mueve si los campos de las canicas que se mueven est´an vac´ıas. El
movimiento en l´ınea es posible con una de las dos condiciones siguientes de
requisito: O bien el campo detr´as de la canica ´ultima est´a vac´ıa o el jugador es
capaz de realizar un movimiento Sumito. El movimiento Sumito es aquel en los
que las canicas del oponente son empujadas.
2.3. Jugadas Sumito y Situaciones Especiales
Un movimiento Sumitoes un movimiento en donde unas cuantas canicas del
oponente son impulsados por los m´armoles del propio jugador. Una situaci´on
Sumito se alcanza en caso de que hay una fila de canicas, donde en un lado s´olo
hay m´armoles negros y en otro lado hay m´armoles blancos. Entre los m´armoles
no debe haber una brecha. Si el n´umero de canicas de un jugador supera el
n´umero de la otra m´armoles jugador se encuentra en una situaci´on de Sumito.
Para determinar esta situaci´on para cada jugador a lo sumo tres canicas de
cada jugador se tienen en cuenta ya que un jugador no puede moverse m´as de
tres canicas por turno. En realidad, hay s´olo existen tres diferentes situaciones
Sumito:
√
dos canicas contra uno
√
tres bolas contra uno
√
tres canicas en contra de dos
En la figura 3 todas las posibles situaciones de Sumito se ilustran. El jugador
negro puede elegir uno de ellos moviendo una fila de sus canicas a la derecha.
2.3 Jugadas Sumito y Situaciones Especiales 6
Figura 3: Situaciones Sumito
Otro t´ermino importante en el abalone es la situaci´on llamada Pac. En
esa situaci´on de ninguno de los jugadores es capaz de realizar un movimiento
Sumito, porque el n´umero de canicas del mismo color son iguales. Por lo tanto,
existen tres diferentes situaciones Pac:
√
una canica contra una
√
dos canicas en contra de dos
√
tres canicas contra tres
En la figura 4 algunas situaciones y pac-pac, como se ilustra:
Figura 4: Situaciones Pac
Los m´armoles en la parte superior del tablero se disponen en una situaci´on
pac simple de 2 contra 2. Los m´armoles en el centro se encuentran en una
situaci´on Pac tambi´en. Aunque hay 4 canicas negro contra 3 bolas blancas es
una situaci´on Pac. Esto se debe a que a un jugador se le permite mover 3 canicas
como m´aximo. Por lo tanto, es una situaci´on Pac de 3 en 3.
2.3 Jugadas Sumito y Situaciones Especiales 7
La configuraci´on de canicas en el fondo hay situaci´on Sumito, porque no hay
no hay espacio libre detr´as del m´armol blanco. Para lograr el objetivo del juego,
se debe expulsar seis canicas del oponente fuera del tablero, el jugador tiene que
realizar un movimiento Sumito en una posici´on en donde el oponente est´a en el
borde del tablero de juego. Despu´es de este movimiento una de las canicas del
oponente se pierde.
Figura 5: Situaci´on de ataque, muestra un movimiento de expulsi´on
3 Algoritmo de juego utilizado 8
3. Algoritmo de juego utilizado
Primeramente explicaremos la parte l´ogica de nuestro juego, como se real-
iz´o una divisi´on o abstracci´on de la parte l´ogica y la interfaz gr´afica el cual fue
realizado en GTK+.
3.1. Parte l´ogica de la soluci´on
B´asicamente se utiliz´o una matriz donde se representaban mediante carac-
teres las bolillas rojas(R) , azules(A), espacios vacios(O) y las posiciones inv´ali-
das( ); se realiza la carga de la matriz mediante un archivo de texto, con el cual
se puede elegir el inicio tipo Standard y tipo Belgian Daisy descrito anterior-
mente, una vez concretado esto lo que se realiza es buscar la manera de que se
cumplan los movimientos que se realizan en el abalone.
3.2. Movimiento de l´ınea
En esta parte del trabajo lo que realizamos es definir un inicio y un final,
con el cual acotabamos la zona de an´alisis, por lo tanto al tener un inicio o
sea alguna bolilla roja o azul(representado por “R” y “A” en nuestra matriz
respectivamente) y un destino(optamos siempre que el destino es un espacio
vac´ıo “O”) se podr´ıa analizar lo intentado y ejecutar o no tal movimiento. La
l´ogica utilizada se podr´ıa resumir en un lenguaje sencillo de la siguiente manera:
1. Capturo posici´on inicial, toda vez que sea“R” o “A”.
2. Capturo posici´on final o destino toda vez que sea un lugar vac´ıo “O”.
3. Llamo a la funci´on que analiza si se encuentra dentro de los l´ımites acept-
ables, es decir como m´aximo tres bolillas de un color con dos bolillas del
otro color, esto hace como m´aximo cinco posiciones incluyendo el destino.
4. Si se encuentra entre los l´ımites, obtengo la zona a analizar, aqu´ı cuento
la cantidad de rojos “R”, azules “A” y espacios vac´ıos “O” encontrados,
si los rojos y azules est´an todos adyacentes entre s´ı, si la cantidad de
espacios vac´ıos encontrados es cero y si la cantidad de la bolilla a querer
mover(condicionado por el turno del jugador sea rojo o azul) es mayor
ejecuto la jugada.
El algoritmo es algo sencillo, inicio, fin, analizador y ejecutor; el anal-
izador nos arroja un true o false de acuerdo a lo descrito y el ejecutor tan solo
actualiza la matriz logrando el objetivo, adem´as de esto el algoritmo utiliza un
tipo de orientaci´on, es decir hacia donde se debe analizar, definida por la zona
capturada, esta orientaci´on se da de seis formas, superior, inferior, derecho,
izquierdo, y las combinaciones de estas.
3.3 Movimiento de lado 9
3.3. Movimiento de lado
Este caso es muy similar a lo descrito anteriormente, s´olo que aqu´ı nos vale-
mos de una se˜nal del entorno gr´afico de GTK+, primero ablaremos de la l´ogica,
b´asicamente el jugador se posiciona sobre una bolilla(origen) y utiliza el scroll
para seleccionar de izquierda a derecha con la cantidad de scroll dados se eje-
cuta un contador el cual tiene como l´ımite superior tres e inferior uno, con la
cantidad de scroll dados se da la secuencia de selecci´on 1-2-3-2-1-2-3-2-1, es de-
cir toda vez que el usuario se posicione sobre una bolilla y haga scroll ver´a que
las bolillas se seleccionan con esta secuencia; en el fondo de la l´ogica esto es un
movimiento simple(un origen y un destino), s´olo que al obtener la cantidad de
scroll dados se analiza la zona a querer mover sean espacios vacios, al hacer
scroll sobre la posicion de destino se verifica que el destino sea un espacio vac´ıo,
y las adyacencias de izquierda a derecha tambi´en, dadas por la cantidad que el
contador tiene. En resumen, se tiene:
1. Capturo inicio toda vez que sea una bolilla “R” o “A”
2. Cuento scroll dados por el usuario, con la secuencia indicada
3. Capturo destino toda vez que sea un espacio vac´ıo “O”
4. Analizo el origen y destino(movimiento simple) y las adyacencias(de izquier-
da a derecha) dadas por el valor del contador
5. Realizo o ignoro la jugada a querer realizar con lo devuelto por el item
anterior
El algoritmo es de vuelta muy sencillo, esta vez vali´endonos del GTK+ y las
se˜nales del scroll, se tiene inicio, cantidad de scroll, destino, analizador,
ejecutor, de vuelta analizador arroja un true o false aceptando o no la jugada
y ejecutor tan s´olo actualiza la matriz.
4 Elaboraci´on del entorno gr´afico 10
4. Elaboraci´on del entorno gr´afico
El entorno gr´afico como se comento fu´e realizado en GTK+, es un caso men-
cionar que nos valimos de herramientas para la elaboraci´on de esta, comentando
y analizando entre el compa˜nero de grupo nos hicimos la siguiente pregunta, al
querer crear paginas web nos topamos con editores para ello(introducci´on a la
inform´atica), al crear una base de datos sencillo nos topamos con editores para
MySql(teor´ıa y aplicaci´on a la inform´atica I), y al querer realizar entornos gr´afi-
cos..Es por ello que un primer enfoque fue descargar tutoriales y ejemplos de
c´odigos en GTK+, el cual nos ayudo bastante para entender el funcionamento
del mismo, como maneja las se˜nales, los eventos, los empaquetamientos ,etc.
Pero al intentar realizar esto a gran escala se nos volvi´o algo tedioso escribir
tantas l´ıneas de c´odigo para ello, por lo tanto en el tiempo de investigaci´on
encontramos a GLADE, es un programa que permite crear, manipular, person-
alizar entornos gr´aficos en GTK+, de manera totalmente gr´afica, fue de bastante
ayuda para la elaboraci´on de todo el trabajo. As´ı que vale la pena recomendarlo
en su versi´on 2.12, pu´es las 3.x utilizan el lenguaje xml para su elaboraci´on si
bien es lo mismo porque s´olo se deben utilizar librer´ıas de glade para utilizar-
los, se escogi´o los 2.x en donde el c´odigo generado es totalmente en C, una vez
obtenido esto tan s´olo resta manejar las se˜nales y los eventos de manera ´optima.
4.1. Entorno gr´afico y l´ogica
Bueno una vez concretado la parte l´ogica del juego nos enfocamos al en-
torno gr´afico y c´omo “mezclar” de la mejor manera ambas, primero generamos
el tablero con gtk table atach, con el cual representamos una matriz de 21*11,
y a las posicones v´alidas del juego(bolillas rojas, azules y vacios), relacionamos
una caja de eventos, que saltan s´olo con los click y el scroll mencionado, para
llevar a cabo movimiento de linea y lado respectivamente, as´ı a cada caja de
eventos, relacionamos una posic´on de nuestra matriz, y cada se˜nal generada por
el usuario nos sirve para manipular nuestra matriz y utilizarla como material de
memoria, en realidad el GTK+ lo manejamos como un vector de 231 elemem-
tos, en el c´odigo se ver´a la funci´on mat2celda y la funci´on celda2mat que
realizan las conversiones de la matriz al vector de GTK+ y viceversa, adem´as
se encontrar´a la funci´on posici´on valida que arroja true o false si la posicion
es v´alida o no, es decir como se tienen s´olo 61 celdas v´alidas en el abalone, y
utilizamos una matriz de 21*11 que totalizan 231 elementos existe esta funci´on
que indica si tal posici´on es del abalone o una parte del entorno gr´afico con-
siderado como inv´alido, esto nos sirve para la carga de im´agenes, si es inv´alido
carga una imagen gris, si en tal posici´on se encuentra una “R”, se carga una
imagen que simula una bolilla roja, si en tal posici´on se encuentra una“A”, se
carga una imagen que simula una bolilla azul, y si se encuentra una “O”, se
carga una imagen que da la ilusi´on de una posici´on vac´ıa.
4.2 Manejo de se˜nales y eventos 11
4.2. Manejo de se˜nales y eventos
Como se mencion´o, mediante la funcion posicion valida se relacion´o los 61
campos del abalone a una caja de eventos, si el usuario hace click sobre una de
estas posiciones, se genera una se˜nal que es atrapada y analizada para realizar
una jugada de l´ınea, si el usuario realiza scroll’s, estas se˜nales son atrapadas y
analizadas para llevar a cabo el movimiento de lado, con esto logramos separar
l´ogicamante las jugadas mencionadas para atacar al problema de la forma “di-
vide y vencer´as”, entonces se hace click en un campo que contiene la caja de even-
tos, luego esto es transformado a las coordenadas de la matriz(celda2mat) y se
analiza a la matriz con la l´ogica implementada, si existe algo favorable(jugada
aceptada, bolillas seleccionadas, etc) son enviados de vuelta a GTK+ mediante
la funci´on mat2celda, es decir estas funciones son el traductor entre GTK+ y
nuestra l´ogica ya sea para manipular la matriz o actualizar el GTK+.
4.3. Ilusi´on o que cosa
Ahora veremos como el usuario puede darse cuenta c´omo se seleccionan las
bolillas, al hacer un click sobre una bolilla, se realiza en el GTK+ un cambio de
imagen, que da la ilusi´on que est´a seleccionado, s´olo se cambia la imagen, esto
tambi´en se realiza cuando se realiza cualquier tipo movimiento, todo esto sin
dejar de lado a nuestro elemento de memoria, la matriz al encontrar una bolilla
rojo “R”, se cambia por una imagen verde para dar la ilusi´on de selecci´on, y a
la matriz se lo carga con “V” para recordar que esa bolilla est´a seleccionada, lo
mismo ocurre para deseleccionar.
5 Inteligencia Artificial 12
5. Inteligencia Artificial
La inteligencia artificial que realizamos tiene tres niveles de complejidad,
easy, medium, hard, esto se describe a continuaci´on.
5.1. B´usqueda Monte Carlo
La idea general es simular un cierto n´umero de juegos a partir de la actual
situaci´on real sobre el tablero de juego. Para cada posible movimiento una serie
de juegos son simuladas y los resultados de cada uno de estos juegos son puntu-
ados. Despu´es de todas simulaciones terminadas, la inteligencia artificial toma
la decisi´on con el mayor puntuado ya que es probablemente el movimiento m´as
prometedor.
Para mayor comodidad en la b´usqueda de Monte-Carlo se explica[1] por
medio de seudo c´odigo.
1. Obtener todos los movimientos posibles en la situaci´on actual del juego
2. Para cada uno de estos movimientos:
Tomar el movimiento actual
Simulaci´on de una serie de juegos con la situaci´on real
Evaluar el resultado de cada juego simulado que acumulan ellos
3. Tome la decisi´on con el mayor valor para el juego normal los jugadores
que eligen al azar de un movimiento de todos los movimientos posibles se
utilizan en la b´usqueda simple de Monte-Carlo.
5.2. Implementaci´on de la IA
Con lo mencionado anteriormente se implementa la b´usqueda tipo monte-
carlo para que la IA realice su mejor jugada, lo que se hace es sencillamente se
punt´ua las bolillas de acuerdo a la distancia del centro del tablero del abalone,
as´ı mientras m´as alejado se est´a del mismo esta ser´a la jugada a realizar, pues
mientras se aleje del borde del tablero es m´as dif´ıcil hecharlo del tablero, una
vez hecho esto se da una puntuaci´on grande a una judada de empuje y una
mayor a´un a una jugada para hechar fuera del tablero, es decir, si se tiene una
situaci´on de ir al centro, empujar o hechar fuera del tablero, la l´ogica opta por
esta ultima, pu´es su objetivo principal es hechar toda vez que pueda las canicas
como primera opci´on. Esto se lleva a cabo con un archivo de texto en el cual
est´an puntuados radialmente del centro las bolillas, as´ı por cada jugada simula-
da se eval´ua las situaciones, se las punt´ua y despu´es de todas las simulaciones
se toma una decisi´on.
6 Implementaci´on M´aquina versus M´aquina 13
6. Implementaci´on M´aquina versus M´aquina
El juego entre dos ordenadores se llev´o a cabo mediante las especificaciones
en xml dadas por los profesores, los parsers para llevar a cabo esto fueron inves-
tigados y luego implementados mediante tutoriales encontrados en la web, he
aqu´ı nuestra fuente de conocimiento el cual lo explicar´a mejor de lo que nosotros
lo har´ıamos, por favor pinche aqu´ı.
7. Puntos fuertes del algoritmo
La jugada de l´ınea la realiza una sola funci´on, lo mismo para la jugada de la-
do; una buena separaci´on entre los dos tipos de jugadas, un entorno gr´afico bien
estudiado y bastante amigable a nuestro criterio, con opciones de elecci´on del
tipo de tablero que desea jugar(standard, belgian), opciones de reinicio de juego,
opciones de elecci´on del tipo de juego(humano versus humano, humano versus
m´aquina y m´aquina versus m´aquina), adem´as una ayuda o help para ayudar a
entender el juego al usuario, como tambi´en los acerca de o about de los creadores
del juego, efectos de selecci´on y deselecci´on de las bolillas, opciones de nivel de
juego sea easy(f´acil), medium(medio) y hard(experto) en el tipo de jugada hu-
mano versus m´aquina, mensajes de advertencia al intentar cerrar las ventanas,
pantalla de bienvenida al juego abalone(splash), opciones muy amigable de se-
lecci´on de turno, carga de nombre de jugador, selecci´on del directorio donde se
guardar´an los archivos xml, en el tipo de juego m´aquina versus m´aquina, opci´on
de juego humano versus humano que es para una pr´actica del juego, as´ı como
se practica el ajedrez contra “uno mismo” esta opci´on est´a disponible en el
abalone.
8. Puntos d´ebiles del algoritmo
Una no muy buena implementaci´on del tipo de juego m´aquina versus m´aquina,
por falta de tiempo para una comprensi´on completa del xml(a profundidad),
funciona pero falta mejorar, es lo que se llama the first approx :).
9 Dificultades principales encontradas en el desarrollo 14
9. Dificultades principales encontradas en el de-
sarrollo
La dificultad principal que encontramos entre miles de l´ıneas de c´odigo es que
al jugar el juego humano versus m´aquina de repente se mataba el programa; si,
de la nada explotaba, nos llev´o dos d´ıas encontrar el error, cuando las esperanzas
estaban por el piso un compa˜nero recordo las palabras sabias de un profesor,
“es importante utilizar fclose”, si es as´ı, por m´as que el sistema operativo se
encarga de cerrar ´estos una vez finalizado el programa, esto no ocurre en el
tiempo de ejecuci´on; el dolor de cabeza de d´ıas era porque se nos olvid´o cerrar
un archivo(el de puntuaci´on), de la nada y sin aviso previo el programa se
cerraba, y la soluci´on era s´olo eso un fclose, as´ı que gracias Carlos Cardozo.
Adem´as de esto hubo inconvenientes menores, como que se llegaba a un
punto en donde se deb´ıa cambiar gran parte de la estructura constru´ıda por no
encontrar una soluci´on, un cambio casi completo de la forma de cargar el tablero
abalone, utilizando los elementos de memoria auxiliar como el archivo de texto
con el cual se logr´o el estilo belgian y standard.
Y vale la pena mencionar que se nos facilit´o la realizaci´on del entorno gr´afico
utilizando el GLADE 2.12 el cual nos ahorr´o miles de l´ıneas de c´odigo, una
amigable interfaz, etc.
Referencias
[1] Master Thesis, Implementing a Computer Player for Abalone using Alpha-
Beta and Monte-Carlo Search, Pascal Chorus.
[2] Abalearn: Eficient Self-Play Learning of the game Abalone, Pedro Campos
and Thibault Langlois.
[3] Multi-Player Games: Algorithms and Approaches, Nathan Reed Sturte-
vant.
[4] Inteligencia Artificial, Un Enfoque Moderno, Stuart J. Russell y Peter
Norvig.
Ultima revisi´on 27 de junio de 2011

More Related Content

What's hot

Dixit (Reglas) - Juego de mesa
Dixit (Reglas) - Juego de mesaDixit (Reglas) - Juego de mesa
Dixit (Reglas) - Juego de mesaGame Mania .es
 
Ajedrez - Nociones elementales
Ajedrez - Nociones elementalesAjedrez - Nociones elementales
Ajedrez - Nociones elementalesEdwin Cuenca
 
Fuga de Colditz (Instrucciones) - Juego de mesa
Fuga de Colditz (Instrucciones) - Juego de mesaFuga de Colditz (Instrucciones) - Juego de mesa
Fuga de Colditz (Instrucciones) - Juego de mesaGame Mania .es
 
Exploradores (Reglamento) - Juego de cartas
Exploradores (Reglamento) - Juego de cartasExploradores (Reglamento) - Juego de cartas
Exploradores (Reglamento) - Juego de cartasGame Mania .es
 
1 curso de iniciación
1 curso de iniciación1 curso de iniciación
1 curso de iniciaciónpezrayo
 
140685350 aperturas-semiabiertas-maestroajedrez
140685350 aperturas-semiabiertas-maestroajedrez140685350 aperturas-semiabiertas-maestroajedrez
140685350 aperturas-semiabiertas-maestroajedrezregistromaestro
 
Carcassone - Posadas y Catedrales (Reglas) - Juego de mesa
Carcassone - Posadas y Catedrales (Reglas) - Juego de mesaCarcassone - Posadas y Catedrales (Reglas) - Juego de mesa
Carcassone - Posadas y Catedrales (Reglas) - Juego de mesaGame Mania .es
 
Las mansiones de la locura (Reglamento)
Las mansiones de la locura (Reglamento)Las mansiones de la locura (Reglamento)
Las mansiones de la locura (Reglamento)Game Mania .es
 
Passing shot (Reglas) - Juego de mesa
Passing shot (Reglas) - Juego de mesaPassing shot (Reglas) - Juego de mesa
Passing shot (Reglas) - Juego de mesaGame Mania .es
 
Ajedrez y su_ensenanza_libro_de_aperturas-varios_autores
Ajedrez y su_ensenanza_libro_de_aperturas-varios_autoresAjedrez y su_ensenanza_libro_de_aperturas-varios_autores
Ajedrez y su_ensenanza_libro_de_aperturas-varios_autoresregistromaestro
 
Ajedrez. examen
Ajedrez. examenAjedrez. examen
Ajedrez. examenpasoccer
 

What's hot (17)

Dixit (Reglas) - Juego de mesa
Dixit (Reglas) - Juego de mesaDixit (Reglas) - Juego de mesa
Dixit (Reglas) - Juego de mesa
 
Ajedrez - Nociones elementales
Ajedrez - Nociones elementalesAjedrez - Nociones elementales
Ajedrez - Nociones elementales
 
Juego de la Oca ingeniosa
Juego de la Oca ingeniosaJuego de la Oca ingeniosa
Juego de la Oca ingeniosa
 
Fuga de Colditz (Instrucciones) - Juego de mesa
Fuga de Colditz (Instrucciones) - Juego de mesaFuga de Colditz (Instrucciones) - Juego de mesa
Fuga de Colditz (Instrucciones) - Juego de mesa
 
Ajedrez
AjedrezAjedrez
Ajedrez
 
Exploradores (Reglamento) - Juego de cartas
Exploradores (Reglamento) - Juego de cartasExploradores (Reglamento) - Juego de cartas
Exploradores (Reglamento) - Juego de cartas
 
Guía de ajedrez
Guía de ajedrezGuía de ajedrez
Guía de ajedrez
 
1 curso de iniciación
1 curso de iniciación1 curso de iniciación
1 curso de iniciación
 
Reglas san marco
Reglas san marcoReglas san marco
Reglas san marco
 
140685350 aperturas-semiabiertas-maestroajedrez
140685350 aperturas-semiabiertas-maestroajedrez140685350 aperturas-semiabiertas-maestroajedrez
140685350 aperturas-semiabiertas-maestroajedrez
 
Carcassone - Posadas y Catedrales (Reglas) - Juego de mesa
Carcassone - Posadas y Catedrales (Reglas) - Juego de mesaCarcassone - Posadas y Catedrales (Reglas) - Juego de mesa
Carcassone - Posadas y Catedrales (Reglas) - Juego de mesa
 
Las mansiones de la locura (Reglamento)
Las mansiones de la locura (Reglamento)Las mansiones de la locura (Reglamento)
Las mansiones de la locura (Reglamento)
 
Passing shot (Reglas) - Juego de mesa
Passing shot (Reglas) - Juego de mesaPassing shot (Reglas) - Juego de mesa
Passing shot (Reglas) - Juego de mesa
 
Reglas vinci
Reglas vinciReglas vinci
Reglas vinci
 
Ajedrez y su_ensenanza_libro_de_aperturas-varios_autores
Ajedrez y su_ensenanza_libro_de_aperturas-varios_autoresAjedrez y su_ensenanza_libro_de_aperturas-varios_autores
Ajedrez y su_ensenanza_libro_de_aperturas-varios_autores
 
Ajedrez. examen
Ajedrez. examenAjedrez. examen
Ajedrez. examen
 
Ajedrez BáSico
Ajedrez BáSicoAjedrez BáSico
Ajedrez BáSico
 

Viewers also liked

The king’s day
The king’s dayThe king’s day
The king’s daycorbiiris
 
Eclat Alto de Pinheiros
Eclat Alto de PinheirosEclat Alto de Pinheiros
Eclat Alto de PinheirosSergio Pripas
 
Adictos a la aprobación_PSICOLOGÍA PRÁCTICA
Adictos a la aprobación_PSICOLOGÍA PRÁCTICAAdictos a la aprobación_PSICOLOGÍA PRÁCTICA
Adictos a la aprobación_PSICOLOGÍA PRÁCTICAAna Martín
 
2.parola di vita luglio2012 - villa d'adige
2.parola di vita    luglio2012 - villa d'adige2.parola di vita    luglio2012 - villa d'adige
2.parola di vita luglio2012 - villa d'adigeParrocchia Menà
 
Metodos de estudio
Metodos de estudioMetodos de estudio
Metodos de estudiodongero0530
 
Cómo se si el video se subió a youtube
Cómo se si el video se subió a youtubeCómo se si el video se subió a youtube
Cómo se si el video se subió a youtubeMiriam Español
 
WordPress with Non Profits
WordPress with Non ProfitsWordPress with Non Profits
WordPress with Non ProfitsJason Tucker
 
Top Ten Learning Theories for Digital and Collaborative Learning
Top Ten Learning Theories for Digital and Collaborative LearningTop Ten Learning Theories for Digital and Collaborative Learning
Top Ten Learning Theories for Digital and Collaborative LearningThe Mind Lab
 
From individual’s digital competence to digitally competent learning organisa...
From individual’s digital competence to digitally competent learning organisa...From individual’s digital competence to digitally competent learning organisa...
From individual’s digital competence to digitally competent learning organisa...Riina Vuorikari
 
REFERENCIAS WORD
REFERENCIAS WORDREFERENCIAS WORD
REFERENCIAS WORDcompuent
 
Presentacion adicciones
Presentacion adicciones Presentacion adicciones
Presentacion adicciones Fer Muro
 
Técnicas de estudio
Técnicas de estudioTécnicas de estudio
Técnicas de estudiodaegog
 

Viewers also liked (20)

Presentation1
Presentation1Presentation1
Presentation1
 
CMC-bjorn Uijens (Trendlab)
CMC-bjorn Uijens (Trendlab)CMC-bjorn Uijens (Trendlab)
CMC-bjorn Uijens (Trendlab)
 
Book store 3.4
Book store 3.4Book store 3.4
Book store 3.4
 
The king’s day
The king’s dayThe king’s day
The king’s day
 
Eclat Alto de Pinheiros
Eclat Alto de PinheirosEclat Alto de Pinheiros
Eclat Alto de Pinheiros
 
W Paulista
W PaulistaW Paulista
W Paulista
 
Adictos a la aprobación_PSICOLOGÍA PRÁCTICA
Adictos a la aprobación_PSICOLOGÍA PRÁCTICAAdictos a la aprobación_PSICOLOGÍA PRÁCTICA
Adictos a la aprobación_PSICOLOGÍA PRÁCTICA
 
2.parola di vita luglio2012 - villa d'adige
2.parola di vita    luglio2012 - villa d'adige2.parola di vita    luglio2012 - villa d'adige
2.parola di vita luglio2012 - villa d'adige
 
Metodos de estudio
Metodos de estudioMetodos de estudio
Metodos de estudio
 
Cómo se si el video se subió a youtube
Cómo se si el video se subió a youtubeCómo se si el video se subió a youtube
Cómo se si el video se subió a youtube
 
WordPress with Non Profits
WordPress with Non ProfitsWordPress with Non Profits
WordPress with Non Profits
 
Preentrega sisuniukanamaria
Preentrega sisuniukanamariaPreentrega sisuniukanamaria
Preentrega sisuniukanamaria
 
web 2.0: youtube
web 2.0: youtubeweb 2.0: youtube
web 2.0: youtube
 
Top Ten Learning Theories for Digital and Collaborative Learning
Top Ten Learning Theories for Digital and Collaborative LearningTop Ten Learning Theories for Digital and Collaborative Learning
Top Ten Learning Theories for Digital and Collaborative Learning
 
Augusta 953
Augusta 953Augusta 953
Augusta 953
 
From individual’s digital competence to digitally competent learning organisa...
From individual’s digital competence to digitally competent learning organisa...From individual’s digital competence to digitally competent learning organisa...
From individual’s digital competence to digitally competent learning organisa...
 
REFERENCIAS WORD
REFERENCIAS WORDREFERENCIAS WORD
REFERENCIAS WORD
 
Signature silk curtains
Signature silk curtainsSignature silk curtains
Signature silk curtains
 
Presentacion adicciones
Presentacion adicciones Presentacion adicciones
Presentacion adicciones
 
Técnicas de estudio
Técnicas de estudioTécnicas de estudio
Técnicas de estudio
 

Similar to AbaloneR: Simulador de juego Abalone en C

Presentación de proyecto adaptativos
Presentación de proyecto adaptativosPresentación de proyecto adaptativos
Presentación de proyecto adaptativosdani
 
Cuadernos practicos de_ajedrez_-_03_-_gude_antonio_-_problemas_de_estrategia
Cuadernos practicos de_ajedrez_-_03_-_gude_antonio_-_problemas_de_estrategiaCuadernos practicos de_ajedrez_-_03_-_gude_antonio_-_problemas_de_estrategia
Cuadernos practicos de_ajedrez_-_03_-_gude_antonio_-_problemas_de_estrategiassuserad20fc
 
Cuadernos practicos de_ajedrez_-_01_-_gude_antonio_-_problemas_de_apertura
Cuadernos practicos de_ajedrez_-_01_-_gude_antonio_-_problemas_de_aperturaCuadernos practicos de_ajedrez_-_01_-_gude_antonio_-_problemas_de_apertura
Cuadernos practicos de_ajedrez_-_01_-_gude_antonio_-_problemas_de_aperturassuserad20fc
 
Lingualatina tertium lillo
Lingualatina tertium lilloLingualatina tertium lillo
Lingualatina tertium lilloJoanetprofe
 
Juego por conceptos drive and kick joan plaza
Juego por conceptos  drive and kick joan plazaJuego por conceptos  drive and kick joan plaza
Juego por conceptos drive and kick joan plazacastroverdes
 
Reglamento del voleibol
Reglamento del voleibolReglamento del voleibol
Reglamento del voleibolcaluju
 
Teoria y problemas del calculo de probabilidades cp525 ccesa007
Teoria y problemas del calculo de probabilidades cp525  ccesa007Teoria y problemas del calculo de probabilidades cp525  ccesa007
Teoria y problemas del calculo de probabilidades cp525 ccesa007Demetrio Ccesa Rayme
 
Apuntes de Tenis 3ºESO 3º Trimestre
Apuntes de Tenis 3ºESO 3º TrimestreApuntes de Tenis 3ºESO 3º Trimestre
Apuntes de Tenis 3ºESO 3º Trimestreefcunqueiro
 
Algoritmo del ajecrez
Algoritmo del ajecrezAlgoritmo del ajecrez
Algoritmo del ajecrezLetto Charris
 
Juegos numéricos
Juegos numéricosJuegos numéricos
Juegos numéricosdanielBetas
 
Investigacion acerca del juego de buscaminas
Investigacion acerca del juego de buscaminasInvestigacion acerca del juego de buscaminas
Investigacion acerca del juego de buscaminasput0amo
 
Iniciacion2
Iniciacion2Iniciacion2
Iniciacion2eVarela2
 
Memoria inicial
Memoria inicialMemoria inicial
Memoria inicialsinchan607
 

Similar to AbaloneR: Simulador de juego Abalone en C (20)

Presentación de proyecto adaptativos
Presentación de proyecto adaptativosPresentación de proyecto adaptativos
Presentación de proyecto adaptativos
 
Molina perez rosa laura
Molina perez rosa lauraMolina perez rosa laura
Molina perez rosa laura
 
Juego de damas
Juego de damasJuego de damas
Juego de damas
 
Cuadernos practicos de_ajedrez_-_03_-_gude_antonio_-_problemas_de_estrategia
Cuadernos practicos de_ajedrez_-_03_-_gude_antonio_-_problemas_de_estrategiaCuadernos practicos de_ajedrez_-_03_-_gude_antonio_-_problemas_de_estrategia
Cuadernos practicos de_ajedrez_-_03_-_gude_antonio_-_problemas_de_estrategia
 
Proyecto
ProyectoProyecto
Proyecto
 
Cuadernos practicos de_ajedrez_-_01_-_gude_antonio_-_problemas_de_apertura
Cuadernos practicos de_ajedrez_-_01_-_gude_antonio_-_problemas_de_aperturaCuadernos practicos de_ajedrez_-_01_-_gude_antonio_-_problemas_de_apertura
Cuadernos practicos de_ajedrez_-_01_-_gude_antonio_-_problemas_de_apertura
 
Lingualatina tertium lillo
Lingualatina tertium lilloLingualatina tertium lillo
Lingualatina tertium lillo
 
Juego por conceptos drive and kick joan plaza
Juego por conceptos  drive and kick joan plazaJuego por conceptos  drive and kick joan plaza
Juego por conceptos drive and kick joan plaza
 
Reglamento del voleibol
Reglamento del voleibolReglamento del voleibol
Reglamento del voleibol
 
Teoria y problemas del calculo de probabilidades cp525 ccesa007
Teoria y problemas del calculo de probabilidades cp525  ccesa007Teoria y problemas del calculo de probabilidades cp525  ccesa007
Teoria y problemas del calculo de probabilidades cp525 ccesa007
 
Apuntes de Tenis 3ºESO 3º Trimestre
Apuntes de Tenis 3ºESO 3º TrimestreApuntes de Tenis 3ºESO 3º Trimestre
Apuntes de Tenis 3ºESO 3º Trimestre
 
Algoritmo del ajecrez
Algoritmo del ajecrezAlgoritmo del ajecrez
Algoritmo del ajecrez
 
Algoritmo del ajecrez
Algoritmo del ajecrezAlgoritmo del ajecrez
Algoritmo del ajecrez
 
Juegos numéricos
Juegos numéricosJuegos numéricos
Juegos numéricos
 
Revista
RevistaRevista
Revista
 
Investigacion acerca del juego de buscaminas
Investigacion acerca del juego de buscaminasInvestigacion acerca del juego de buscaminas
Investigacion acerca del juego de buscaminas
 
Iniciacion2
Iniciacion2Iniciacion2
Iniciacion2
 
45 92-1-sm
45 92-1-sm45 92-1-sm
45 92-1-sm
 
Juegos matematicos
Juegos matematicosJuegos matematicos
Juegos matematicos
 
Memoria inicial
Memoria inicialMemoria inicial
Memoria inicial
 

More from SNPP

RR00X_RESUMEN.pdf
RR00X_RESUMEN.pdfRR00X_RESUMEN.pdf
RR00X_RESUMEN.pdfSNPP
 
RR_TAYI.pdf
RR_TAYI.pdfRR_TAYI.pdf
RR_TAYI.pdfSNPP
 
1. panel de le ds
1. panel de le ds1. panel de le ds
1. panel de le dsSNPP
 
7. incubadora de huevos
7. incubadora de huevos7. incubadora de huevos
7. incubadora de huevosSNPP
 
6. visualizacion remota de consumo de agua en tiempo real
6. visualizacion remota de consumo de agua en tiempo real6. visualizacion remota de consumo de agua en tiempo real
6. visualizacion remota de consumo de agua en tiempo realSNPP
 
5. alimentador de animales domesticos smart feeder
5. alimentador de animales domesticos smart feeder5. alimentador de animales domesticos smart feeder
5. alimentador de animales domesticos smart feederSNPP
 
3. radar medidor de velocidad
3. radar medidor de velocidad3. radar medidor de velocidad
3. radar medidor de velocidadSNPP
 
2. soft starter monofasico
2. soft starter monofasico2. soft starter monofasico
2. soft starter monofasicoSNPP
 
Operadores y expresiones
Operadores y expresionesOperadores y expresiones
Operadores y expresionesSNPP
 
6.2 cadenas de caracteres
6.2 cadenas de caracteres6.2 cadenas de caracteres
6.2 cadenas de caracteresSNPP
 
6.1 vectores
6.1 vectores6.1 vectores
6.1 vectoresSNPP
 
5.5 instruccion for
5.5 instruccion for5.5 instruccion for
5.5 instruccion forSNPP
 
5.4 instruccion do-while
5.4 instruccion do-while5.4 instruccion do-while
5.4 instruccion do-whileSNPP
 
5.3 instruccion while
5.3 instruccion while5.3 instruccion while
5.3 instruccion whileSNPP
 
5.2 instruccion switch
5.2  instruccion switch5.2  instruccion switch
5.2 instruccion switchSNPP
 
5.1 instruccion if-else
5.1 instruccion if-else5.1 instruccion if-else
5.1 instruccion if-elseSNPP
 
4. entrada y salida de datos
4. entrada y salida de datos4. entrada y salida de datos
4. entrada y salida de datosSNPP
 
3.6 funciones de biblioteca
3.6 funciones de biblioteca3.6 funciones de biblioteca
3.6 funciones de bibliotecaSNPP
 
3.5 operador condicional
3.5 operador condicional3.5 operador condicional
3.5 operador condicionalSNPP
 
2.10 entrada y salida
2.10 entrada y salida2.10 entrada y salida
2.10 entrada y salidaSNPP
 

More from SNPP (20)

RR00X_RESUMEN.pdf
RR00X_RESUMEN.pdfRR00X_RESUMEN.pdf
RR00X_RESUMEN.pdf
 
RR_TAYI.pdf
RR_TAYI.pdfRR_TAYI.pdf
RR_TAYI.pdf
 
1. panel de le ds
1. panel de le ds1. panel de le ds
1. panel de le ds
 
7. incubadora de huevos
7. incubadora de huevos7. incubadora de huevos
7. incubadora de huevos
 
6. visualizacion remota de consumo de agua en tiempo real
6. visualizacion remota de consumo de agua en tiempo real6. visualizacion remota de consumo de agua en tiempo real
6. visualizacion remota de consumo de agua en tiempo real
 
5. alimentador de animales domesticos smart feeder
5. alimentador de animales domesticos smart feeder5. alimentador de animales domesticos smart feeder
5. alimentador de animales domesticos smart feeder
 
3. radar medidor de velocidad
3. radar medidor de velocidad3. radar medidor de velocidad
3. radar medidor de velocidad
 
2. soft starter monofasico
2. soft starter monofasico2. soft starter monofasico
2. soft starter monofasico
 
Operadores y expresiones
Operadores y expresionesOperadores y expresiones
Operadores y expresiones
 
6.2 cadenas de caracteres
6.2 cadenas de caracteres6.2 cadenas de caracteres
6.2 cadenas de caracteres
 
6.1 vectores
6.1 vectores6.1 vectores
6.1 vectores
 
5.5 instruccion for
5.5 instruccion for5.5 instruccion for
5.5 instruccion for
 
5.4 instruccion do-while
5.4 instruccion do-while5.4 instruccion do-while
5.4 instruccion do-while
 
5.3 instruccion while
5.3 instruccion while5.3 instruccion while
5.3 instruccion while
 
5.2 instruccion switch
5.2  instruccion switch5.2  instruccion switch
5.2 instruccion switch
 
5.1 instruccion if-else
5.1 instruccion if-else5.1 instruccion if-else
5.1 instruccion if-else
 
4. entrada y salida de datos
4. entrada y salida de datos4. entrada y salida de datos
4. entrada y salida de datos
 
3.6 funciones de biblioteca
3.6 funciones de biblioteca3.6 funciones de biblioteca
3.6 funciones de biblioteca
 
3.5 operador condicional
3.5 operador condicional3.5 operador condicional
3.5 operador condicional
 
2.10 entrada y salida
2.10 entrada y salida2.10 entrada y salida
2.10 entrada y salida
 

Recently uploaded

Arquitectura Moderna Walter Gropius- Frank Lloyd Wright
Arquitectura Moderna  Walter Gropius- Frank Lloyd WrightArquitectura Moderna  Walter Gropius- Frank Lloyd Wright
Arquitectura Moderna Walter Gropius- Frank Lloyd Wrightimariagsg
 
Normas de convivencia para imprimir gratis
Normas de convivencia para imprimir gratisNormas de convivencia para imprimir gratis
Normas de convivencia para imprimir gratisbrasilyamile
 
diseño de plantas agroindustriales unidad
diseño de plantas agroindustriales unidaddiseño de plantas agroindustriales unidad
diseño de plantas agroindustriales unidaddabuitragoi
 
Arquitectura moderna / Nazareth Bermúdez
Arquitectura moderna / Nazareth BermúdezArquitectura moderna / Nazareth Bermúdez
Arquitectura moderna / Nazareth BermúdezNaza59
 
Arquitectura Moderna Le Corbusier- Mies Van Der Rohe
Arquitectura Moderna Le Corbusier- Mies Van Der RoheArquitectura Moderna Le Corbusier- Mies Van Der Rohe
Arquitectura Moderna Le Corbusier- Mies Van Der Roheimariagsg
 
Guía de actividades y rúbrica de evaluación - Unidad 3 - Escenario 4 - Rol de...
Guía de actividades y rúbrica de evaluación - Unidad 3 - Escenario 4 - Rol de...Guía de actividades y rúbrica de evaluación - Unidad 3 - Escenario 4 - Rol de...
Guía de actividades y rúbrica de evaluación - Unidad 3 - Escenario 4 - Rol de...MayerlyAscanioNavarr
 
Jesus Diaz afiche Manierismo .pdf arquitectura
Jesus Diaz afiche Manierismo .pdf arquitecturaJesus Diaz afiche Manierismo .pdf arquitectura
Jesus Diaz afiche Manierismo .pdf arquitecturajesusgrosales12
 
guia de talles de camitas cucciolos 2024.pdf
guia de talles de camitas cucciolos 2024.pdfguia de talles de camitas cucciolos 2024.pdf
guia de talles de camitas cucciolos 2024.pdfcucciolosfabrica
 
Proceso de percepción visual y de reconocimiento
Proceso de percepción visual y de reconocimientoProceso de percepción visual y de reconocimiento
Proceso de percepción visual y de reconocimientoJorge Fernandez
 
TIPOS DE LINEAS utilizados en dibujo técnico mecánico
TIPOS DE LINEAS utilizados en dibujo técnico mecánicoTIPOS DE LINEAS utilizados en dibujo técnico mecánico
TIPOS DE LINEAS utilizados en dibujo técnico mecánicoWilsonChambi4
 
2024-EL CAMBIO CLIMATICO Y SUS EFECTOS EN EL PERÚ Y EL MUNDO.pdf
2024-EL CAMBIO CLIMATICO Y SUS EFECTOS EN EL PERÚ Y EL MUNDO.pdf2024-EL CAMBIO CLIMATICO Y SUS EFECTOS EN EL PERÚ Y EL MUNDO.pdf
2024-EL CAMBIO CLIMATICO Y SUS EFECTOS EN EL PERÚ Y EL MUNDO.pdfcnaomi195
 
Presentacion de 100 psicologos dijeron.pptx
Presentacion de 100 psicologos dijeron.pptxPresentacion de 100 psicologos dijeron.pptx
Presentacion de 100 psicologos dijeron.pptxbarbaracantuflr
 
clase_11_introduccion_a_los_mecanismos_y_a_la_cinematica.pdf
clase_11_introduccion_a_los_mecanismos_y_a_la_cinematica.pdfclase_11_introduccion_a_los_mecanismos_y_a_la_cinematica.pdf
clase_11_introduccion_a_los_mecanismos_y_a_la_cinematica.pdfFABIOANDRESPALLARESP
 
Brochure Tuna Haus _ Hecho para mascotas.pdf
Brochure Tuna Haus _ Hecho para mascotas.pdfBrochure Tuna Haus _ Hecho para mascotas.pdf
Brochure Tuna Haus _ Hecho para mascotas.pdfhellotunahaus
 
CERTIFICACIÓN DE CAPACITACIÓN PARA EL CENSO - tfdxwBRz6f3AP7QU.pdf
CERTIFICACIÓN DE CAPACITACIÓN PARA EL CENSO - tfdxwBRz6f3AP7QU.pdfCERTIFICACIÓN DE CAPACITACIÓN PARA EL CENSO - tfdxwBRz6f3AP7QU.pdf
CERTIFICACIÓN DE CAPACITACIÓN PARA EL CENSO - tfdxwBRz6f3AP7QU.pdfasnsdt
 
plantilla-de-messi-1.pdf es muy especial
plantilla-de-messi-1.pdf es muy especialplantilla-de-messi-1.pdf es muy especial
plantilla-de-messi-1.pdf es muy especialAndreaMlaga1
 
Geometrías de la imaginación: Diseño e iconografía de Querétaro
Geometrías de la imaginación: Diseño e iconografía de QuerétaroGeometrías de la imaginación: Diseño e iconografía de Querétaro
Geometrías de la imaginación: Diseño e iconografía de QuerétaroJuan Carlos Fonseca Mata
 
LAMODERNIDADARQUITECTURABYBARBARAPADILLA.pdf
LAMODERNIDADARQUITECTURABYBARBARAPADILLA.pdfLAMODERNIDADARQUITECTURABYBARBARAPADILLA.pdf
LAMODERNIDADARQUITECTURABYBARBARAPADILLA.pdfBrbara57940
 
APORTES Y CARACTERISTICAS DE LAS OBRAS DE CORBUSIER. MIES VAN DER ROHE
APORTES Y CARACTERISTICAS DE LAS OBRAS DE  CORBUSIER. MIES VAN DER ROHEAPORTES Y CARACTERISTICAS DE LAS OBRAS DE  CORBUSIER. MIES VAN DER ROHE
APORTES Y CARACTERISTICAS DE LAS OBRAS DE CORBUSIER. MIES VAN DER ROHEgonzalezdfidelibus
 

Recently uploaded (20)

Arquitectura Moderna Walter Gropius- Frank Lloyd Wright
Arquitectura Moderna  Walter Gropius- Frank Lloyd WrightArquitectura Moderna  Walter Gropius- Frank Lloyd Wright
Arquitectura Moderna Walter Gropius- Frank Lloyd Wright
 
Arte textil: Tejidos artesanos en la frontera hispano-lusa
Arte textil: Tejidos artesanos en la frontera hispano-lusaArte textil: Tejidos artesanos en la frontera hispano-lusa
Arte textil: Tejidos artesanos en la frontera hispano-lusa
 
Normas de convivencia para imprimir gratis
Normas de convivencia para imprimir gratisNormas de convivencia para imprimir gratis
Normas de convivencia para imprimir gratis
 
diseño de plantas agroindustriales unidad
diseño de plantas agroindustriales unidaddiseño de plantas agroindustriales unidad
diseño de plantas agroindustriales unidad
 
Arquitectura moderna / Nazareth Bermúdez
Arquitectura moderna / Nazareth BermúdezArquitectura moderna / Nazareth Bermúdez
Arquitectura moderna / Nazareth Bermúdez
 
Arquitectura Moderna Le Corbusier- Mies Van Der Rohe
Arquitectura Moderna Le Corbusier- Mies Van Der RoheArquitectura Moderna Le Corbusier- Mies Van Der Rohe
Arquitectura Moderna Le Corbusier- Mies Van Der Rohe
 
Guía de actividades y rúbrica de evaluación - Unidad 3 - Escenario 4 - Rol de...
Guía de actividades y rúbrica de evaluación - Unidad 3 - Escenario 4 - Rol de...Guía de actividades y rúbrica de evaluación - Unidad 3 - Escenario 4 - Rol de...
Guía de actividades y rúbrica de evaluación - Unidad 3 - Escenario 4 - Rol de...
 
Jesus Diaz afiche Manierismo .pdf arquitectura
Jesus Diaz afiche Manierismo .pdf arquitecturaJesus Diaz afiche Manierismo .pdf arquitectura
Jesus Diaz afiche Manierismo .pdf arquitectura
 
guia de talles de camitas cucciolos 2024.pdf
guia de talles de camitas cucciolos 2024.pdfguia de talles de camitas cucciolos 2024.pdf
guia de talles de camitas cucciolos 2024.pdf
 
Proceso de percepción visual y de reconocimiento
Proceso de percepción visual y de reconocimientoProceso de percepción visual y de reconocimiento
Proceso de percepción visual y de reconocimiento
 
TIPOS DE LINEAS utilizados en dibujo técnico mecánico
TIPOS DE LINEAS utilizados en dibujo técnico mecánicoTIPOS DE LINEAS utilizados en dibujo técnico mecánico
TIPOS DE LINEAS utilizados en dibujo técnico mecánico
 
2024-EL CAMBIO CLIMATICO Y SUS EFECTOS EN EL PERÚ Y EL MUNDO.pdf
2024-EL CAMBIO CLIMATICO Y SUS EFECTOS EN EL PERÚ Y EL MUNDO.pdf2024-EL CAMBIO CLIMATICO Y SUS EFECTOS EN EL PERÚ Y EL MUNDO.pdf
2024-EL CAMBIO CLIMATICO Y SUS EFECTOS EN EL PERÚ Y EL MUNDO.pdf
 
Presentacion de 100 psicologos dijeron.pptx
Presentacion de 100 psicologos dijeron.pptxPresentacion de 100 psicologos dijeron.pptx
Presentacion de 100 psicologos dijeron.pptx
 
clase_11_introduccion_a_los_mecanismos_y_a_la_cinematica.pdf
clase_11_introduccion_a_los_mecanismos_y_a_la_cinematica.pdfclase_11_introduccion_a_los_mecanismos_y_a_la_cinematica.pdf
clase_11_introduccion_a_los_mecanismos_y_a_la_cinematica.pdf
 
Brochure Tuna Haus _ Hecho para mascotas.pdf
Brochure Tuna Haus _ Hecho para mascotas.pdfBrochure Tuna Haus _ Hecho para mascotas.pdf
Brochure Tuna Haus _ Hecho para mascotas.pdf
 
CERTIFICACIÓN DE CAPACITACIÓN PARA EL CENSO - tfdxwBRz6f3AP7QU.pdf
CERTIFICACIÓN DE CAPACITACIÓN PARA EL CENSO - tfdxwBRz6f3AP7QU.pdfCERTIFICACIÓN DE CAPACITACIÓN PARA EL CENSO - tfdxwBRz6f3AP7QU.pdf
CERTIFICACIÓN DE CAPACITACIÓN PARA EL CENSO - tfdxwBRz6f3AP7QU.pdf
 
plantilla-de-messi-1.pdf es muy especial
plantilla-de-messi-1.pdf es muy especialplantilla-de-messi-1.pdf es muy especial
plantilla-de-messi-1.pdf es muy especial
 
Geometrías de la imaginación: Diseño e iconografía de Querétaro
Geometrías de la imaginación: Diseño e iconografía de QuerétaroGeometrías de la imaginación: Diseño e iconografía de Querétaro
Geometrías de la imaginación: Diseño e iconografía de Querétaro
 
LAMODERNIDADARQUITECTURABYBARBARAPADILLA.pdf
LAMODERNIDADARQUITECTURABYBARBARAPADILLA.pdfLAMODERNIDADARQUITECTURABYBARBARAPADILLA.pdf
LAMODERNIDADARQUITECTURABYBARBARAPADILLA.pdf
 
APORTES Y CARACTERISTICAS DE LAS OBRAS DE CORBUSIER. MIES VAN DER ROHE
APORTES Y CARACTERISTICAS DE LAS OBRAS DE  CORBUSIER. MIES VAN DER ROHEAPORTES Y CARACTERISTICAS DE LAS OBRAS DE  CORBUSIER. MIES VAN DER ROHE
APORTES Y CARACTERISTICAS DE LAS OBRAS DE CORBUSIER. MIES VAN DER ROHE
 

AbaloneR: Simulador de juego Abalone en C

  • 1. Universidad Cat´olica “Nuestra Se˜nora de la Asunci´on” Sede Regional Asunci´on Facultad de Ciencias y Tecnolog´ıa Departamento de Ingenier´ıa Electr´onica e Inform´atica Lenguajes de Programaci´on I Ing. Carlos Cardozo Ing. Rodrigo Villalba Ing. Vicente Gonz´alez Colm´an, Alberto <albertocolman81@gmail.com> Ram´ırez, Pedro <pedroramirez22@gmail.com> Trabajo Final AbaloneR 1 · 0 27 de junio de 2011
  • 2. ´INDICE 2 ´Indice 1. Introducci´on 3 2. Abalone 4 2.1. Conceptos b´asicos . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.2. Movimientos posibles . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.3. Jugadas Sumito y Situaciones Especiales . . . . . . . . . . . . . . 5 3. Algoritmo de juego utilizado 8 3.1. Parte l´ogica de la soluci´on . . . . . . . . . . . . . . . . . . . . . . 8 3.2. Movimiento de l´ınea . . . . . . . . . . . . . . . . . . . . . . . . . 8 3.3. Movimiento de lado . . . . . . . . . . . . . . . . . . . . . . . . . 9 4. Elaboraci´on del entorno gr´afico 10 4.1. Entorno gr´afico y l´ogica . . . . . . . . . . . . . . . . . . . . . . . 10 4.2. Manejo de se˜nales y eventos . . . . . . . . . . . . . . . . . . . . . 11 4.3. Ilusi´on o que cosa . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 5. Inteligencia Artificial 12 5.1. B´usqueda Monte Carlo . . . . . . . . . . . . . . . . . . . . . . . . 12 5.2. Implementaci´on de la IA . . . . . . . . . . . . . . . . . . . . . . . 12 6. Implementaci´on M´aquina versus M´aquina 13 7. Puntos fuertes del algoritmo 13 8. Puntos d´ebiles del algoritmo 13 9. Dificultades principales encontradas en el desarrollo 14
  • 3. 1 Introducci´on 3 1. Introducci´on Por m´as de 3000 a˜nos los juegos de mesa se juegan por los seres humanos. Ellos juegan el uno contra el otro, una de las maneras de divertirse y formar su pensamiento estrat´egico.Uno de estos juegos es abalone. Fue inventado en 1987 por Laurent Levi y Lalet Michel. Abalone pertenece al grupo de los cl´asicos jue- gos de mesa. Hoy en d´ıa es muy popular. Los torneos se celebran regularmente, pero hasta ahora no hay muchas investigaciones realizadas en este juego. Hoy en d´ıa los juegos de tablero son a´un famosos. La variedad de juegos diferentes aumenta m´as y m´as y va desde los juegos de cartas y juegos con dados de m´as extenso juego de sal´on que puede contener peones, azulejos, dados y cartas. Para jugar estos es para divertirse en grande, pero tambi´en es una competencia entre los jugadores. Una meta es desafiar a los oponentes y ganarles por trabajo estrategias sofisticadas e inteligentes. A menudo, el juego contiene los aspectos del azar, por ejemplo, tirar los dados o tomar una carta de una baraja. Uno no puede prever exactamente lo que suceder´a. As´ı, el juego puede ser m´as emocionante. Una categor´ıa especial de juegos son los juegos cl´asicos, llamada placa. Estos son juegos para dos jugadores en el que ambos jugadores tienen informaci´on perfecta, es decir, no hay cartas ocultas o alguna informaci´on oculta a otros. Otro aspecto importante es que no contienen ning´un tipo de acciones basadas en la suerte. Por lo tanto, los jugadores tienen un control absoluto sobre sus acciones. Sobre todo, el juego puede ser descrito en algunas frases. Las reglas son simples. Sin embargo, el n´umero de diferentes movimientos posibles es alto, lo que hace que el juego se vuelva complejo y un reto. Ejemplos famosos de estos juegos son el ajedrez y Go y por supuesto el abalone.
  • 4. 2 Abalone 4 2. Abalone En esta secci´on el juego ser´a explicado en detalle. En primer lugar, se da alguna informaci´on b´asica. Despu´es los posibles movimientos y luego en el juego, situaciones especiales se discuten. 2.1. Conceptos b´asicos El abalone es un juego de dos jugadores estrat´egico. El tablero de juego tiene una forma hexagonal con 61 campos. Cada jugador tiene 14 canicas. Un jugador tiene el rojo los, el otro las azules. Los dos jugadores tienen que moverse en las curvas. El jugador rojo comienza el juego. El objetivo del juego es para expulsar canicas del oponente en el juego bordo. El jugador que primero expulsa 6 canicas del oponente gana el juego. Hay varias formaciones de inicio de los m´armoles. Los dos m´as populares cu´ales son la formaci´on est´andar que se propone por los inventores del juego. El segundo se llama Daisy belga. Esta es una formaci´on de uso frecuente en torneos, porque las posiciones son m´as bien ofensiva a principios del juego. Estas dos formaciones se ilustran en las figuras de abajo. (a) Standard (b) Belgian Daisy Figura 1: Formaciones de inicio del abalone 2.2. Movimientos posibles En cada turno el jugador puede mover uno, dos o tres canicas de su col- or. M´ultiples canicas s´olo se puede mover si est´an adyacentes. Adem´as, todas las canicas se deben mover en la misma direcci´on. Es posible mover en l´ınea m´armoles, lo que significa que a lo largo de el eje de su posici´on actual (v´ease la figura 2.3). Otra posibilidad es hacer un paso de costado, es decir, una decisi´on que no a lo largo del eje de las canicas, pero hacia los lados (V´ease la figura 2.4).
  • 5. 2.3 Jugadas Sumito y Situaciones Especiales 5 (a) L´ınea (b) Lado Figura 2: Movimientos posibles Independiente de si un movimiento en l´ınea o un movimiento de costado se lleva a cabo el jugador s´olo puede mover los m´armoles un campo m´as. Un movimiento que se sigue permitiendo incluso si una fila de canicas del mismo color se divide por el movimiento. S´olo se mueve si los campos de las canicas que se mueven est´an vac´ıas. El movimiento en l´ınea es posible con una de las dos condiciones siguientes de requisito: O bien el campo detr´as de la canica ´ultima est´a vac´ıa o el jugador es capaz de realizar un movimiento Sumito. El movimiento Sumito es aquel en los que las canicas del oponente son empujadas. 2.3. Jugadas Sumito y Situaciones Especiales Un movimiento Sumitoes un movimiento en donde unas cuantas canicas del oponente son impulsados por los m´armoles del propio jugador. Una situaci´on Sumito se alcanza en caso de que hay una fila de canicas, donde en un lado s´olo hay m´armoles negros y en otro lado hay m´armoles blancos. Entre los m´armoles no debe haber una brecha. Si el n´umero de canicas de un jugador supera el n´umero de la otra m´armoles jugador se encuentra en una situaci´on de Sumito. Para determinar esta situaci´on para cada jugador a lo sumo tres canicas de cada jugador se tienen en cuenta ya que un jugador no puede moverse m´as de tres canicas por turno. En realidad, hay s´olo existen tres diferentes situaciones Sumito: √ dos canicas contra uno √ tres bolas contra uno √ tres canicas en contra de dos En la figura 3 todas las posibles situaciones de Sumito se ilustran. El jugador negro puede elegir uno de ellos moviendo una fila de sus canicas a la derecha.
  • 6. 2.3 Jugadas Sumito y Situaciones Especiales 6 Figura 3: Situaciones Sumito Otro t´ermino importante en el abalone es la situaci´on llamada Pac. En esa situaci´on de ninguno de los jugadores es capaz de realizar un movimiento Sumito, porque el n´umero de canicas del mismo color son iguales. Por lo tanto, existen tres diferentes situaciones Pac: √ una canica contra una √ dos canicas en contra de dos √ tres canicas contra tres En la figura 4 algunas situaciones y pac-pac, como se ilustra: Figura 4: Situaciones Pac Los m´armoles en la parte superior del tablero se disponen en una situaci´on pac simple de 2 contra 2. Los m´armoles en el centro se encuentran en una situaci´on Pac tambi´en. Aunque hay 4 canicas negro contra 3 bolas blancas es una situaci´on Pac. Esto se debe a que a un jugador se le permite mover 3 canicas como m´aximo. Por lo tanto, es una situaci´on Pac de 3 en 3.
  • 7. 2.3 Jugadas Sumito y Situaciones Especiales 7 La configuraci´on de canicas en el fondo hay situaci´on Sumito, porque no hay no hay espacio libre detr´as del m´armol blanco. Para lograr el objetivo del juego, se debe expulsar seis canicas del oponente fuera del tablero, el jugador tiene que realizar un movimiento Sumito en una posici´on en donde el oponente est´a en el borde del tablero de juego. Despu´es de este movimiento una de las canicas del oponente se pierde. Figura 5: Situaci´on de ataque, muestra un movimiento de expulsi´on
  • 8. 3 Algoritmo de juego utilizado 8 3. Algoritmo de juego utilizado Primeramente explicaremos la parte l´ogica de nuestro juego, como se real- iz´o una divisi´on o abstracci´on de la parte l´ogica y la interfaz gr´afica el cual fue realizado en GTK+. 3.1. Parte l´ogica de la soluci´on B´asicamente se utiliz´o una matriz donde se representaban mediante carac- teres las bolillas rojas(R) , azules(A), espacios vacios(O) y las posiciones inv´ali- das( ); se realiza la carga de la matriz mediante un archivo de texto, con el cual se puede elegir el inicio tipo Standard y tipo Belgian Daisy descrito anterior- mente, una vez concretado esto lo que se realiza es buscar la manera de que se cumplan los movimientos que se realizan en el abalone. 3.2. Movimiento de l´ınea En esta parte del trabajo lo que realizamos es definir un inicio y un final, con el cual acotabamos la zona de an´alisis, por lo tanto al tener un inicio o sea alguna bolilla roja o azul(representado por “R” y “A” en nuestra matriz respectivamente) y un destino(optamos siempre que el destino es un espacio vac´ıo “O”) se podr´ıa analizar lo intentado y ejecutar o no tal movimiento. La l´ogica utilizada se podr´ıa resumir en un lenguaje sencillo de la siguiente manera: 1. Capturo posici´on inicial, toda vez que sea“R” o “A”. 2. Capturo posici´on final o destino toda vez que sea un lugar vac´ıo “O”. 3. Llamo a la funci´on que analiza si se encuentra dentro de los l´ımites acept- ables, es decir como m´aximo tres bolillas de un color con dos bolillas del otro color, esto hace como m´aximo cinco posiciones incluyendo el destino. 4. Si se encuentra entre los l´ımites, obtengo la zona a analizar, aqu´ı cuento la cantidad de rojos “R”, azules “A” y espacios vac´ıos “O” encontrados, si los rojos y azules est´an todos adyacentes entre s´ı, si la cantidad de espacios vac´ıos encontrados es cero y si la cantidad de la bolilla a querer mover(condicionado por el turno del jugador sea rojo o azul) es mayor ejecuto la jugada. El algoritmo es algo sencillo, inicio, fin, analizador y ejecutor; el anal- izador nos arroja un true o false de acuerdo a lo descrito y el ejecutor tan solo actualiza la matriz logrando el objetivo, adem´as de esto el algoritmo utiliza un tipo de orientaci´on, es decir hacia donde se debe analizar, definida por la zona capturada, esta orientaci´on se da de seis formas, superior, inferior, derecho, izquierdo, y las combinaciones de estas.
  • 9. 3.3 Movimiento de lado 9 3.3. Movimiento de lado Este caso es muy similar a lo descrito anteriormente, s´olo que aqu´ı nos vale- mos de una se˜nal del entorno gr´afico de GTK+, primero ablaremos de la l´ogica, b´asicamente el jugador se posiciona sobre una bolilla(origen) y utiliza el scroll para seleccionar de izquierda a derecha con la cantidad de scroll dados se eje- cuta un contador el cual tiene como l´ımite superior tres e inferior uno, con la cantidad de scroll dados se da la secuencia de selecci´on 1-2-3-2-1-2-3-2-1, es de- cir toda vez que el usuario se posicione sobre una bolilla y haga scroll ver´a que las bolillas se seleccionan con esta secuencia; en el fondo de la l´ogica esto es un movimiento simple(un origen y un destino), s´olo que al obtener la cantidad de scroll dados se analiza la zona a querer mover sean espacios vacios, al hacer scroll sobre la posicion de destino se verifica que el destino sea un espacio vac´ıo, y las adyacencias de izquierda a derecha tambi´en, dadas por la cantidad que el contador tiene. En resumen, se tiene: 1. Capturo inicio toda vez que sea una bolilla “R” o “A” 2. Cuento scroll dados por el usuario, con la secuencia indicada 3. Capturo destino toda vez que sea un espacio vac´ıo “O” 4. Analizo el origen y destino(movimiento simple) y las adyacencias(de izquier- da a derecha) dadas por el valor del contador 5. Realizo o ignoro la jugada a querer realizar con lo devuelto por el item anterior El algoritmo es de vuelta muy sencillo, esta vez vali´endonos del GTK+ y las se˜nales del scroll, se tiene inicio, cantidad de scroll, destino, analizador, ejecutor, de vuelta analizador arroja un true o false aceptando o no la jugada y ejecutor tan s´olo actualiza la matriz.
  • 10. 4 Elaboraci´on del entorno gr´afico 10 4. Elaboraci´on del entorno gr´afico El entorno gr´afico como se comento fu´e realizado en GTK+, es un caso men- cionar que nos valimos de herramientas para la elaboraci´on de esta, comentando y analizando entre el compa˜nero de grupo nos hicimos la siguiente pregunta, al querer crear paginas web nos topamos con editores para ello(introducci´on a la inform´atica), al crear una base de datos sencillo nos topamos con editores para MySql(teor´ıa y aplicaci´on a la inform´atica I), y al querer realizar entornos gr´afi- cos..Es por ello que un primer enfoque fue descargar tutoriales y ejemplos de c´odigos en GTK+, el cual nos ayudo bastante para entender el funcionamento del mismo, como maneja las se˜nales, los eventos, los empaquetamientos ,etc. Pero al intentar realizar esto a gran escala se nos volvi´o algo tedioso escribir tantas l´ıneas de c´odigo para ello, por lo tanto en el tiempo de investigaci´on encontramos a GLADE, es un programa que permite crear, manipular, person- alizar entornos gr´aficos en GTK+, de manera totalmente gr´afica, fue de bastante ayuda para la elaboraci´on de todo el trabajo. As´ı que vale la pena recomendarlo en su versi´on 2.12, pu´es las 3.x utilizan el lenguaje xml para su elaboraci´on si bien es lo mismo porque s´olo se deben utilizar librer´ıas de glade para utilizar- los, se escogi´o los 2.x en donde el c´odigo generado es totalmente en C, una vez obtenido esto tan s´olo resta manejar las se˜nales y los eventos de manera ´optima. 4.1. Entorno gr´afico y l´ogica Bueno una vez concretado la parte l´ogica del juego nos enfocamos al en- torno gr´afico y c´omo “mezclar” de la mejor manera ambas, primero generamos el tablero con gtk table atach, con el cual representamos una matriz de 21*11, y a las posicones v´alidas del juego(bolillas rojas, azules y vacios), relacionamos una caja de eventos, que saltan s´olo con los click y el scroll mencionado, para llevar a cabo movimiento de linea y lado respectivamente, as´ı a cada caja de eventos, relacionamos una posic´on de nuestra matriz, y cada se˜nal generada por el usuario nos sirve para manipular nuestra matriz y utilizarla como material de memoria, en realidad el GTK+ lo manejamos como un vector de 231 elemem- tos, en el c´odigo se ver´a la funci´on mat2celda y la funci´on celda2mat que realizan las conversiones de la matriz al vector de GTK+ y viceversa, adem´as se encontrar´a la funci´on posici´on valida que arroja true o false si la posicion es v´alida o no, es decir como se tienen s´olo 61 celdas v´alidas en el abalone, y utilizamos una matriz de 21*11 que totalizan 231 elementos existe esta funci´on que indica si tal posici´on es del abalone o una parte del entorno gr´afico con- siderado como inv´alido, esto nos sirve para la carga de im´agenes, si es inv´alido carga una imagen gris, si en tal posici´on se encuentra una “R”, se carga una imagen que simula una bolilla roja, si en tal posici´on se encuentra una“A”, se carga una imagen que simula una bolilla azul, y si se encuentra una “O”, se carga una imagen que da la ilusi´on de una posici´on vac´ıa.
  • 11. 4.2 Manejo de se˜nales y eventos 11 4.2. Manejo de se˜nales y eventos Como se mencion´o, mediante la funcion posicion valida se relacion´o los 61 campos del abalone a una caja de eventos, si el usuario hace click sobre una de estas posiciones, se genera una se˜nal que es atrapada y analizada para realizar una jugada de l´ınea, si el usuario realiza scroll’s, estas se˜nales son atrapadas y analizadas para llevar a cabo el movimiento de lado, con esto logramos separar l´ogicamante las jugadas mencionadas para atacar al problema de la forma “di- vide y vencer´as”, entonces se hace click en un campo que contiene la caja de even- tos, luego esto es transformado a las coordenadas de la matriz(celda2mat) y se analiza a la matriz con la l´ogica implementada, si existe algo favorable(jugada aceptada, bolillas seleccionadas, etc) son enviados de vuelta a GTK+ mediante la funci´on mat2celda, es decir estas funciones son el traductor entre GTK+ y nuestra l´ogica ya sea para manipular la matriz o actualizar el GTK+. 4.3. Ilusi´on o que cosa Ahora veremos como el usuario puede darse cuenta c´omo se seleccionan las bolillas, al hacer un click sobre una bolilla, se realiza en el GTK+ un cambio de imagen, que da la ilusi´on que est´a seleccionado, s´olo se cambia la imagen, esto tambi´en se realiza cuando se realiza cualquier tipo movimiento, todo esto sin dejar de lado a nuestro elemento de memoria, la matriz al encontrar una bolilla rojo “R”, se cambia por una imagen verde para dar la ilusi´on de selecci´on, y a la matriz se lo carga con “V” para recordar que esa bolilla est´a seleccionada, lo mismo ocurre para deseleccionar.
  • 12. 5 Inteligencia Artificial 12 5. Inteligencia Artificial La inteligencia artificial que realizamos tiene tres niveles de complejidad, easy, medium, hard, esto se describe a continuaci´on. 5.1. B´usqueda Monte Carlo La idea general es simular un cierto n´umero de juegos a partir de la actual situaci´on real sobre el tablero de juego. Para cada posible movimiento una serie de juegos son simuladas y los resultados de cada uno de estos juegos son puntu- ados. Despu´es de todas simulaciones terminadas, la inteligencia artificial toma la decisi´on con el mayor puntuado ya que es probablemente el movimiento m´as prometedor. Para mayor comodidad en la b´usqueda de Monte-Carlo se explica[1] por medio de seudo c´odigo. 1. Obtener todos los movimientos posibles en la situaci´on actual del juego 2. Para cada uno de estos movimientos: Tomar el movimiento actual Simulaci´on de una serie de juegos con la situaci´on real Evaluar el resultado de cada juego simulado que acumulan ellos 3. Tome la decisi´on con el mayor valor para el juego normal los jugadores que eligen al azar de un movimiento de todos los movimientos posibles se utilizan en la b´usqueda simple de Monte-Carlo. 5.2. Implementaci´on de la IA Con lo mencionado anteriormente se implementa la b´usqueda tipo monte- carlo para que la IA realice su mejor jugada, lo que se hace es sencillamente se punt´ua las bolillas de acuerdo a la distancia del centro del tablero del abalone, as´ı mientras m´as alejado se est´a del mismo esta ser´a la jugada a realizar, pues mientras se aleje del borde del tablero es m´as dif´ıcil hecharlo del tablero, una vez hecho esto se da una puntuaci´on grande a una judada de empuje y una mayor a´un a una jugada para hechar fuera del tablero, es decir, si se tiene una situaci´on de ir al centro, empujar o hechar fuera del tablero, la l´ogica opta por esta ultima, pu´es su objetivo principal es hechar toda vez que pueda las canicas como primera opci´on. Esto se lleva a cabo con un archivo de texto en el cual est´an puntuados radialmente del centro las bolillas, as´ı por cada jugada simula- da se eval´ua las situaciones, se las punt´ua y despu´es de todas las simulaciones se toma una decisi´on.
  • 13. 6 Implementaci´on M´aquina versus M´aquina 13 6. Implementaci´on M´aquina versus M´aquina El juego entre dos ordenadores se llev´o a cabo mediante las especificaciones en xml dadas por los profesores, los parsers para llevar a cabo esto fueron inves- tigados y luego implementados mediante tutoriales encontrados en la web, he aqu´ı nuestra fuente de conocimiento el cual lo explicar´a mejor de lo que nosotros lo har´ıamos, por favor pinche aqu´ı. 7. Puntos fuertes del algoritmo La jugada de l´ınea la realiza una sola funci´on, lo mismo para la jugada de la- do; una buena separaci´on entre los dos tipos de jugadas, un entorno gr´afico bien estudiado y bastante amigable a nuestro criterio, con opciones de elecci´on del tipo de tablero que desea jugar(standard, belgian), opciones de reinicio de juego, opciones de elecci´on del tipo de juego(humano versus humano, humano versus m´aquina y m´aquina versus m´aquina), adem´as una ayuda o help para ayudar a entender el juego al usuario, como tambi´en los acerca de o about de los creadores del juego, efectos de selecci´on y deselecci´on de las bolillas, opciones de nivel de juego sea easy(f´acil), medium(medio) y hard(experto) en el tipo de jugada hu- mano versus m´aquina, mensajes de advertencia al intentar cerrar las ventanas, pantalla de bienvenida al juego abalone(splash), opciones muy amigable de se- lecci´on de turno, carga de nombre de jugador, selecci´on del directorio donde se guardar´an los archivos xml, en el tipo de juego m´aquina versus m´aquina, opci´on de juego humano versus humano que es para una pr´actica del juego, as´ı como se practica el ajedrez contra “uno mismo” esta opci´on est´a disponible en el abalone. 8. Puntos d´ebiles del algoritmo Una no muy buena implementaci´on del tipo de juego m´aquina versus m´aquina, por falta de tiempo para una comprensi´on completa del xml(a profundidad), funciona pero falta mejorar, es lo que se llama the first approx :).
  • 14. 9 Dificultades principales encontradas en el desarrollo 14 9. Dificultades principales encontradas en el de- sarrollo La dificultad principal que encontramos entre miles de l´ıneas de c´odigo es que al jugar el juego humano versus m´aquina de repente se mataba el programa; si, de la nada explotaba, nos llev´o dos d´ıas encontrar el error, cuando las esperanzas estaban por el piso un compa˜nero recordo las palabras sabias de un profesor, “es importante utilizar fclose”, si es as´ı, por m´as que el sistema operativo se encarga de cerrar ´estos una vez finalizado el programa, esto no ocurre en el tiempo de ejecuci´on; el dolor de cabeza de d´ıas era porque se nos olvid´o cerrar un archivo(el de puntuaci´on), de la nada y sin aviso previo el programa se cerraba, y la soluci´on era s´olo eso un fclose, as´ı que gracias Carlos Cardozo. Adem´as de esto hubo inconvenientes menores, como que se llegaba a un punto en donde se deb´ıa cambiar gran parte de la estructura constru´ıda por no encontrar una soluci´on, un cambio casi completo de la forma de cargar el tablero abalone, utilizando los elementos de memoria auxiliar como el archivo de texto con el cual se logr´o el estilo belgian y standard. Y vale la pena mencionar que se nos facilit´o la realizaci´on del entorno gr´afico utilizando el GLADE 2.12 el cual nos ahorr´o miles de l´ıneas de c´odigo, una amigable interfaz, etc. Referencias [1] Master Thesis, Implementing a Computer Player for Abalone using Alpha- Beta and Monte-Carlo Search, Pascal Chorus. [2] Abalearn: Eficient Self-Play Learning of the game Abalone, Pedro Campos and Thibault Langlois. [3] Multi-Player Games: Algorithms and Approaches, Nathan Reed Sturte- vant. [4] Inteligencia Artificial, Un Enfoque Moderno, Stuart J. Russell y Peter Norvig. Ultima revisi´on 27 de junio de 2011