Jump to content


Photo

Juego de damas hecho con Delphi


  • Please log in to reply
12 replies to this topic

#1 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4945 posts
  • LocationMéxico

Posted 25 June 2014 - 12:17 PM

Pues me he encontrado este video recien publicado y me ha parecido muy interesante:

q2jWaSn4u7w
  • 0

#2 Jhonny

Jhonny

    Member

  • Miembros
  • PipPip
  • 29 posts

Posted 25 June 2014 - 02:43 PM

Que interesantes son los juegos que le dan cierta "Inteligencia" a la maquina, muy interesante.
  • 0

#3 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4945 posts
  • LocationMéxico

Posted 25 June 2014 - 03:03 PM

Que interesantes son los juegos que le dan cierta "Inteligencia" a la maquina, muy interesante.


Coincido. A mi me emociona todo lo que viene en temas de inteligencia artificial.
  • 0

#4 cram

cram

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 832 posts
  • LocationMisiones, Argentina

Posted 28 June 2014 - 06:41 AM

Hace unos años me pasó por la cabeza crear un motor de IA para ajedrez, pero distinto, algo así como lo que puede hacerse con las damas y otros juegos.
Interesante el hecho que las reglas para ganar al ajedrez hacen a una computadora victoriosa con metodología propia. Pero no así con el ajedrez, ya que la computadora no gana con táctica, sino más bien con memoria y un tablero jugado de antemano desde la posición.
Hace poco me enteré que el único juego que actualmente una computadorano puede ganar a un humano es las damas chinas (no recuerdo bien el nombre, si es yin-yang, u otro). Se trata de un juego de estrategia, en el cual hay que dominar por color y tiene la pizca necesaria de rareza como para no dejar que se gane solo por lógica.

  • 0

#5 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6301 posts
  • LocationArgentina

Posted 28 June 2014 - 01:37 PM

Hace unos años me pasó por la cabeza crear un motor de IA para ajedrez, pero distinto, algo así como lo que puede hacerse con las damas y otros juegos.
Interesante el hecho que las reglas para ganar al ajedrez hacen a una computadora victoriosa con metodología propia. Pero no así con el ajedrez, ya que la computadora no gana con táctica, sino más bien con memoria y un tablero jugado de antemano desde la posición.
Hace poco me enteré que el único juego que actualmente una computadorano puede ganar a un humano es las damas chinas (no recuerdo bien el nombre, si es yin-yang, u otro). Se trata de un juego de estrategia, en el cual hay que dominar por color y tiene la pizca necesaria de rareza como para no dejar que se gane solo por lógica.

El juego al que te refieres se llama Go.
No lo he jugado nunca, es más no le conozco las reglas.
Se dice que es sencillamente complicado  ;) por tener reglas sencillas pero su complejidad táctica lo hace un gran desafío.
Si no recuerdo mal, a los generales chinos se los obligaba aprenderlo con maestría. Requisito indispensable para tener el grado.

Saludos,

  • 0

#6 cram

cram

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 832 posts
  • LocationMisiones, Argentina

Posted 29 June 2014 - 01:22 PM

¡Eso !, Go, gracias Delphius. Apareció en una noticia ligada a uno de estos post, en una revista, o algo parecido.
Pero la idea es esa. ¿alguien se anima a crear las reglas para que un juego gane a un humano en las damas?
Si lo agrego a desafíos, quizá alguien le encuentre el punto.

No quiero irme del tema, pero, por ejemplo para "solucionar" un laberinto se utiliza el método de back tracking, para ganar al ajedrez una máquina recurre a inmensas búsquedas y la mejor entrada para la situación actual, y así... pero ninguno de los programas hace uso de IA pura, es decir dotar a la máquina de reglas para que "razone" según la circunstancia. Marcar el objetivo, poner reglas y jugar ciertos movimientos adelantados pero generados por su propio juego (conocimiento ganado empíricamente) y no del de grandes maestros. Creo que esto sería un avance interesante en materia de IA.

  • 0

#7 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6301 posts
  • LocationArgentina

Posted 30 June 2014 - 08:31 AM

¡Eso !, Go, gracias Delphius. Apareció en una noticia ligada a uno de estos post, en una revista, o algo parecido.
Pero la idea es esa. ¿alguien se anima a crear las reglas para que un juego gane a un humano en las damas?
Si lo agrego a desafíos, quizá alguien le encuentre el punto.

A mi los temas de Sistemas Expertos e IA me fascinan. De hecho la cátedra de Sistemas Expertos ha sido una de mis favoritas... a pesar de hacerse sufrir un poco.  :)
Pero lamentablemente no dispongo de los recursos y del tiempo como para sumarme. En lo que si quisiera puntualizar es que es muy posible que la "inteligencia" dada a un sistema de juego como las damas descanza en el mismo principio y algoritmo que se emplea en casi todos los juegos de adversario/tablero: A*.
Trataré de profundizar esto luego.

No quiero irme del tema, pero, por ejemplo para "solucionar" un laberinto se utiliza el método de back tracking, para ganar al ajedrez una máquina recurre a inmensas búsquedas y la mejor entrada para la situación actual, y así... pero ninguno de los programas hace uso de IA pura, es decir dotar a la máquina de reglas para que "razone" según la circunstancia. Marcar el objetivo, poner reglas y jugar ciertos movimientos adelantados pero generados por su propio juego (conocimiento ganado empíricamente) y no del de grandes maestros. Creo que esto sería un avance interesante en materia de IA.

Según tengo entendido el algoritmo de Thremos es una de las técnicas de resolución de laberintos. Desconozco si Back Tracking es el mismo o similar.
El algoritmo original, Thremos, se vale de un principio muy básico: la regla de la mano derecha. Se coloca la mano derecha contra la pared y se empieza a recorrer el lugar... tarde o temprano vas a encontrar la salida mientras no despegues la mano de la pared y sigas ese sentido.
Una modificación, y mejora inmediata, al algoritmo de Thremos es que se puede aprovechar un poco la computación paralela y distribuir el trabajo por varios agentes predictivos, aquel que encuentre el camino (o en su defecto un camino abierto) es elegido y se mueve hacia allí. Luego se repite este algoritmo de nuevo desde este nuevo punto. Es como si una persona tuviera habilidad ninja y se multiplica, cada uno toma una dirección y el llega a un punto muerto muere... el primero que encuentra camino libre avisa. Luego todos se fusionan y de nuevo a comenzar. Esta técnica implica el uso de memoria para no volverse sobre sus pasos y no terminar desde el comienzo.

El juego del ajedrez, como dije antes, por lo general se resuelve por medio de A* (se lee A Estrella). En parte lo que has dicho es cierto, consiste en una búsqueda dentro de un árbol la mejor jugada. Pero justamente lo que lo diferencia de un recorrido de árbol tradicional es lo que lo hace llamar A*. Se emplean heurísticas que le permiten puntuar y tomar decisiones y evitar búsquedas enormes. Las heurísticas son específicas a cada juego. La parte general, invariante, es la búsqueda y recorrido por el árbol. La heurísticas no son todo, se complemente además de un algoritmo de análisis predictivo llamado Poda Alfa-Beta. En líneas simples, lo que hace la poda es justamente podar el árbol y cortar ramas que ya se saben que no tiene sentido recorrer debido a que el puntaje por dicho lugar es negativo al jugador.
Lo difícil de hacer, como puede entenderse, es justamente definir la mejor heurística que puntua cada movimiento tanto del adversario como del propio jugador. Para el ajedrez se han propuesto muchas... y actualmente son tan complejas y requieren de más de 40 parámetros o variables.

A* es un algoritmo genérico, y es bastante empleado para tomas de decisiones. Y esa es la idea. Sirve para múltiples cosas, no solamente para juegos de adversarios, aunque es de allí donde nació.
Esta técnica no tiene reglas, per se.... puesto que en realidad no es Sistema Experto. Pero si se le puede añadir, via heurísticas, la posibilidad que tome una decisión en base a las circunstancias.

En el área de IA, los sistemas se clasifican en función de las técnicas empleadas para simular inteligencia. Existen variadas ramas, cada una diseñada para trabajar de ciertas formas y con sus pros y contras. No las recuerdo a todas, me falla la memoria al repasar los años de cátedra, pero voy a tratar de puntualizarlas:
* Sistemas Expertos
* Agentes inteligentes
* Redes Neuronales
* Robótica

Pero por el otro lado también se clasifica a la IA en inteligencia artificial convencional y en la inteligencia artificial computacional o subsimbólica-inductiva. En la primera podremos encontrar los sistemas expertos por ejemplo; en la segunda los algoritmos interactivos.

De allí en más, cada rama también tiene sus ramitas... y hasta creo que hay ciertas conexiones entre ramas.

En lo que si me voy a detener a aclarar es justamente en los Sistemas Expertos. Tema que si tengo fresco y estudié dentro de todo bastante bien a lo largo de la cátedra anual.
Los Sistemas Expertos se basan en dos conjuntos, por un lado la base de hechos y por el otro la base de reglas o motor de reglas.
Este por si, si cuenta con reglas; reglas que va evaluando cada vez que se encuentra un hecho (la acción). Son sistemas con IA dividida pero conectadas. Para ejecutar una acción evalúa ciertas reglas pero a su vez tal acción hará que aparezcan nuevas reglas (incorpora nuevas acciones y conocimiento), o volver a emplear algunas viejas que ya había usado o seguir empleando las mismas.
Las reglas y las acciones son definidas de antemano por el contexto.

Aunque en realidad, para ser muy precisos un Sistema Experto contiene:
* Base de conocimientos
* Base de hechos
* Motor de inferencia
* módulo de justificación
* Interfaz Hombre-Máquina

Además, naturalmente se debe contar con los especialistas del conocimiento (que depende del contexto; por ejemplo para un S.E de medicina especializado en cancer son los oncólogos) que son los que asisten al equipo informático encargado de diseñar el sistema y alimentan al sistema con sus conocimientos.
Algunos Sistemas Expertos se complementan con Ontologías, pero eso ya es otro cantar.

Decir que los Sistemas Expertos, o los Agentes (categoría en la que entrarían por ejemplos los Sistemas basados en A*) no poseen "IA pura" es algo a lo que ya me estoy cansado de aguantar. Todos en su medida son inteligentes. La expresión "IA pura" es una contradicción... no tiene sentido lógico ni semántico alguno. Y voy a empezar a gritarlo si es necesario a que por favor no sigan intentando confundir las cosas. Lo vengo notando desde hace tiempo.

Que ustedes confundan la IA con una de sus propias rama, como la robótica y más aún con la Inteligencia Emocional hace que luego se pierda de lo que en verdad implica el término. Ya es hora de que varios de ustedes se saquen ese pre-concepto. La IA lleva años de estudio y mucho más abarcativa que la visión dada por las películas.

Saludos,
  • 0

#8 cram

cram

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 832 posts
  • LocationMisiones, Argentina

Posted 01 July 2014 - 07:17 AM

Delphius.
Gracias una vez más por las aclaraciones y la cátedra.
Por "IA Pura" me refiero a aquellas técnicas que utilizan más procesos complejos que se ajustan utilizando aprendizaje empírico a aquellos de fuerza bruta que utilizan la potencia de cálculo y una base de conocimiento ajena (caso de Deep Blue en Ajedrez). Te aclaro que es un término que lo utilicé al vuelo y no sabía ni pensé que se podría entender de una manera extraña.
Te comento que tengo modelos de resolución de laberintos que los guardé de cuando programaba en la Talent DPC-200 (¡qué época!, estaba en la secundaria). Pero más bien son persecución en laberinto, porque la resolución de laberinto aún siendo una tarea humana, no requiere de inteligencia, sino de incansable búsqueda (Teseo, Ariadna, el hilo, etc.). Ese mismo método que mencionas, el de Thremos lo llaman "lame-paredes" lo utilizaban las mariposas en el juego Boulderdash para MSX. Y los métodos utilizados en Pac-Man eran bastante diferentes, los laberintos no eran dinámicos y sólo uno de ellos (el rojo) era el que perseguía PacMan realmente.
Respecto de la persecución: Los pondré, apenas pueda en el foro que más vea adecuado.
Aclaro que mi visión respecto de IA, es bastante personal, ya que es un tema muy polémico y disiento en muchos aspectos de muchos trabajos realizados. Es obvio que existen muchas características humanas que de ser "implementadas en un robot" no tendría sentido el esfuerzo, pues resultarían robots mañosos y hasta torpes. La idea de la IA (yo la llamaría pseudo-inteligencia) es obtener respuestas concretas a problemas utilizando las características positivas de las máquinas. Pero, más allá de todo eso, no me gustan los algoritmos de fuerza bruta (En ordenación todo se vé más claro: Burbuja, QuickSort).
Aquello impecable, es lo que se mueve hacia la solución y evita el ruido. En otras palabras una curva definida por una función de aproximación y aquellos puntos que la definen.
Yo no tuve IA en la facultad, eso fue un desastre. Cuando se me ocurrió ese tema para mi tesis, un ex-alumno, me dijo que lo cambie, porque no sería aceptado (pues era un modelo teórico). En su lugar opté por un diccionario, una aplicación. Aun tengo apuntes del inicio de ese trabajo, en el cual estudié mucho a la mente humana en todo lo que pude (la mía y respuesta de los demás). Te cuento, aunque te parezca gracioso o una locura, develé misterios como el sueño al menos diez años antes de ver la noticia de revelación (que no se contradecía) en las revistas científicas. Por eso, mi visión de la IA es muuuuy distinta. Actualmente (hace unos años) pude comprender el tema del Yo y SuperYo, de modo sistemático, que creo es la base de la conciencia (Cosa que no se busca en una máquina). Y sí, me fui del tema. Pero apenas me sobre tiempo pondré algo sobre lo que pienso de las damas, ajedrez, etc.

Saludos
  • 0

#9 cram

cram

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 832 posts
  • LocationMisiones, Argentina

Posted 05 July 2014 - 07:35 AM

Hoy es sábado y me puse a ver algunas cosas que me agradan más de lo que debería hacer.
Estuve viendo las reglas y modalidades de las damas y me entero que ese tablero de 8x8 no es el internacional (Federación Mundial de Juego de Damas) que tiene 10x10 y usa 20 fichas por jugador.
El tema es que el juego con 12 fichas es simple y tiene una solución matemática viable propuesta por Jhonathan Schaeffer, luego que un algorimo ganó al en ese entonces campeón mundial. Según dice el artículo (Wikipedia) un juego de Damas de 20 fichas en un tablero de 10x10 es tan complejo matemáticamente como uno de Ajedrez.

En fin, empezaré las bases de uno de 12 x 12 y su motor de "inteligencia" a ver que pasa. La idea ya la tengo bien clara.
La computadora jugará con ella misma al menos una cantidad X de jugadas hasta tener algo de "experiencia" para poder jugar con una persona, a medida que vaya jugando con una persona ajustará sus parámetros. Lo único que me termina rompiendo el "coco" es el tema de las damas, o sea los peones que llegan a la última fila, ya que éstas pueden realizar movimientos más complicados. En este sentido el ajedrez es más estable.

  • 0

#10 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4945 posts
  • LocationMéxico

Posted 05 July 2014 - 08:48 AM

Hola amigo cram, ¿consideras que valdría la pena iniciar un hilo en proyectos dedicado exclusivamente a crear un juego de damas?

Saludos.
  • 0

#11 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6301 posts
  • LocationArgentina

Posted 05 July 2014 - 09:25 AM

Hoy es sábado y me puse a ver algunas cosas que me agradan más de lo que debería hacer.
Estuve viendo las reglas y modalidades de las damas y me entero que ese tablero de 8x8 no es el internacional (Federación Mundial de Juego de Damas) que tiene 10x10 y usa 20 fichas por jugador.
El tema es que el juego con 12 fichas es simple y tiene una solución matemática viable propuesta por Jhonathan Schaeffer, luego que un algorimo ganó al en ese entonces campeón mundial. Según dice el artículo (Wikipedia) un juego de Damas de 20 fichas en un tablero de 10x10 es tan complejo matemáticamente como uno de Ajedrez.

En fin, empezaré las bases de uno de 12 x 12 y su motor de "inteligencia" a ver que pasa. La idea ya la tengo bien clara.
La computadora jugará con ella misma al menos una cantidad X de jugadas hasta tener algo de "experiencia" para poder jugar con una persona, a medida que vaya jugando con una persona ajustará sus parámetros. Lo único que me termina rompiendo el "coco" es el tema de las damas, o sea los peones que llegan a la última fila, ya que éstas pueden realizar movimientos más complicados. En este sentido el ajedrez es más estable.

Desonocía que había tableros de damas más grandes. Yo siempre jugué el de 8x8.. el de toda la vida. También he jugado a su versión china pero mi cabeza en ese hace brain explote.
Y del ajedrez... soy malísimo. Se jugarlo pero nada bien. No me llama mucho la atención los juegos de tablero.

Suerte en el proyecto.

Saludos,
  • 0

#12 genriquez

genriquez

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 539 posts
  • LocationCali, Colombia

Posted 05 July 2014 - 10:08 AM

Se utiliza el de 8x8 por facilidad comercial, ya que es el mismo del ajedrez
  • 0

#13 cram

cram

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 832 posts
  • LocationMisiones, Argentina

Posted 06 July 2014 - 09:15 AM

Hola amigo cram, ¿consideras que valdría la pena iniciar un hilo en proyectos dedicado exclusivamente a crear un juego de damas?

Saludos.


Supongo que sí, no por tratarse de las Damas que en verdad es un juego que no me llama mucho la atención (sí el Ajedrez).
El tema es que es interesante la riqueza de algoritmos que pueden crearse a partir del problema de resolver jugadas o incluso jugar una partida.engo muy bien definido el procedimiento a utilizar para que una computadora juegue contra un humano con mínimo recurso de memoria. Lo que me falta es ponerme a trabajar en los algoritmos.

Mi idea es que el motor aprenda de ensayo error y coteje sus resultados ponderándolos y así tener una base de datos propia que irá creciendo cada vez que juegue una partida. ¿la primera? es simple solo jugar lo que es posible contra sí misma (en realidad otra personalidad del motor).


  • 0




IP.Board spam blocked by CleanTalk.