jueves, 6 de diciembre de 2012

PROYECTO IA: JUEGO TRES EN RAYA


“AÑO DE LA INTEGRACIÓN NACIONAL Y EL RECONOCIMIENTO DE NUESTRA DIVERSIDAD"

  
“INTELIGENCIA ARTIFICIAL”
PROYECTO: JUEGO DE TRES EN RAYA
INTEGRANTES:
·         ARENAZA CURI, EDGAR
      BALTAZAR LICAS, NEAL
CHAVEZ SHICA, PERCY
ENRRIQUEZ VALVERDE, LENIN

DOCENTE: SAUL MATEO PEREZ VEGA
TURNO: NOCHE                        
CICLO: VII
ESCUELA: INGENIERÍA DE SISTEMAS 

LIMA – PERU
2012


ESTRUCTURA DEL MODELO DEL INFORME FINAL

1.   RESUMEN……………………………………………………………3
2.   INTRODUCCIÓN………………………………………………….....4
3.   OBJETIVOS…………………………………………………………5
4.   PROBLEMA………………………………………………………….5
5.   MARCO TEÓRICO………………………………………………….7
6.   METODOLOGÍA…………………………………………………...13
7.   RECURSO HUMANOS…………………………………………….15
8.   CONCLUSIÓN………………………………………………………16
9.   REFERENCIAS……………………………………………………..17




1.   RESUMEN

La planificación de nuestro proyecto primeramente comienza en la recolección de información acerca sobre este juego ya que nuestro trabajo de investigación está basado en la creación de un programa implementando el juego de tres en raya, para comenzar a resumir nuestro proyecto comenzaremos con la introducción donde aquí se hablara detalladamente sobre el juego de tres en raya además de los beneficios que nos brindara, también que llevaremos este juego en el programa Visual Prolog que es una herramienta fundamental para crear nuestro juego, después de haber realizado nuestra introducción nos basaremos en los objetivos que son pieza clave para obtener un mejor enfoque a lo que queremos lograr como estudiantes también de innovar nuevos métodos para la creación del proyecto, también se encuentra el problema donde se menciona sobre la realidad de los usuarios que actualmente no alimentan su mente con juegos de calidad como el de tres en raya, que además es un juego muy entretenido, educativo y de experiencia ya que al usuario le tocara jugar con un conocimiento artificial. Después viene el marco teórico donde se detalla la problemática que hay en las empresas o programadores en no innovar juegos sanos y  divertidos a la vez y prefiriendo más esos juegos que llevan hacia la adicción, En la metodología del proyecto utilizaremos aquellos métodos que han servido de enseñanza por nuestro docente del curso de Inteligencia Artificial (IA) como listas, recursividad, etc. Después nos basaremos en los recursos donde se muestra que aporte hiso cada estudiante. Para terminar la estructura de nuestro proyecto acabaremos con las conclusiones hecho  de manera grupal y las importantes referencias.






Tablero tres en raya

2.   INTRODUCCIÓN
El proyecto “programa inteligente para el juego de tres en raya” propone una mejor forma de realizar un proceso mental para las personas que desean jugarlo ya que nuestro propósito es crear este programa en el software “Visual Prolog” para que el usuario pueda jugar de manera cómoda desde su ordenador y pueda utilizar sus propias estrategias en el transcurso del juego, también se busca que los usuarios que utilicen esta aplicación hagan uso de su inteligencia ya que este programa tiene su propia racionalidad y sus propias estrategias o técnicas de juego y pueda darle competitividad al entorno entre el usuario – máquina, de manera que el programa brindará al usuario una forma muy interesante y entretenida de jugar contra este agente inteligente(programa inteligente de juego de tres en raya).
La creación de juegos ha ido en aumento cada vez, hoy por hoy, no sólo existen centenas de estos sino más bien se menciona millones. Lo curioso de la forma en las que fueron creados nos hace pensar muchas veces en la idea de tú mismo crear tus propios juegos, pero muchas veces no se tiene conocimiento sobre cómo hacerlos, pues bien he aquí una forma que construimos para realizar un pequeño juego considerando que estamos inicializando en el estudio de los mismos, y es posible que en base a los aspectos que mencionaremos más adelante Usted podría aplicar diversas herramientas y técnicas más para la creación de otros.
Utilizando como base diferentes conceptos vistos en el curso de Programación Lógica y complementadas con el estudio de algunas técnicas de Inteligencia Artificial en la creación de juegos entre adversarios, hemos realizado el presente juego a utilizar para una pc como modo de entretenimiento y experiencia.
Esperando no sea la última vez que me dirijo hacia Usted haciéndole llegar algún aporte, le presento el Manual de Desarrollo del “Tres en Raya”

  

3.   OBJETIVOS
·         Brindar un  excelente programa para que los usuarios puedan tener una satisfacción al momento de jugar tres en raya
·         Controlar la capacidad de ansiedad sobre el juego
·         Agilizar la inteligencia del usuario.
·         Incentivar al mercado a incorporarse nuevos programas donde incluyan esta clase de juegos racionales y no los juegos de acción.
·         Incentivar a las empresas a implementar este tipo de programas entretenidos.
·         Hacer más competitiva la visión de nuestro proyecto.
·         Crear en los usuarios esa facilidad de manejo y entendimiento con el programa inteligente del juego de tres en raya.
·         Evitar el vicio de los usuarios sobre el juego
·         Crear en los usuario una mayor competitividad mental frente a la maquina en el momento del juego.

4.   PROBLEMA

El juego de 3 en raya, a diferencia de los juegos como el  ajedrez, póker y otros se basa en un juego de competencia requiriendo la presencia de dos o más competidores. La solución o victoria del agente no se da en cuestión de segundos, pues requiere de los datos que el humano ingrese al juego, pudiendo durar un tiempo considerable la finalización del juego. Por esta razón el trabajo consiste en buscar una estrategia de plantear este problema considerando los métodos de búsquedas estudiados y presentes en la bibliografía para su desarrollo. También lograr en los usuarios una mejor capacidad mental, de manera que cuando el usuario este frente al conocimiento artificial y pueda lograr su competitividad además que si el usuario tiene una duración de mayor tiempo durante el transcurso del juego nos dará a entender que el nivel de inteligencias del usuario es de una persona con habilidades mentales ya que jugar frente un conocimiento virtual que tiene sus propias estrategias de como vencer al usuario no es nada sencillo.
 Hoy en día los usuarios están hastiados de jugar en sus computadoras esas aplicaciones que vienen con su sistema operativo como por ejemplo Windows que incluye juegos de póker, de ajedrez, etc. de manera que muchos de los usuarios ya no desean jugar estas aplicaciones y por esa causa prefieren juegos menos educativos como los  que actualmente hay en cada cabina de internet de nuestro país, otro de estos motivos es que las empresas o programadores ya no diseñan nuevas aplicaciones donde incluyan juegos entretenidos y educativos a la vez para los usuarios. Actualmente hay muchas personas que desean entretenerse con juegos educativos además que el usuario puede hacer gran uso de su capacidad mental frente a nuevos programas que incluyan un conocimiento lógico y racional. Pero actualmente  hay programadores y empresas que diseñan juegos de acción y de aventura u otra categoría y lo que no se han percatado es que ocasionan un daño a la mentalidad de los usuarios porque esta clase de juegos llevan hacia la adicción y generan un cambio de conducta y disminución de capacidad mental, de manera que los usuarios decaen con el tiempo al utilizar estos juegos.
De esta manera nosotros nos hemos propuesto en la creación de un programa inteligente que es el juego de tres en raya siempre y cuando sea un juego entretenido y educativo para la parte mental del usuario. También en incentivar en las cabinas de internet y empresas sobre la implementación de este programa para que las personas puedan entretenerse y a la vez aumentar su nivel de inteligencia de todas las personas que requieren de este juego.
1        Se desarrollará un software que trata de un popular juego: “Tres en Raya”, que será capaz de interactuar con el usuario y divertirlo por intermedio de una jugada desde la misma computadora.
2        El software tendrá 2 opciones de juego: que la máquina empiece o el usuario empiece; a la vez el software tiene que validar las posibles jugadas, tanto del participante (usuario) como de él mismo, así como mostrar cuando hay ganador y cuando hay empate.
3        Todo lo anterior presentado será implementado utilizando las técnicas de programación lógica con algunas de inteligencia artificial y un esquema de diseño de un buen software.

5. MARCO TEORICO

5.1. VISUAL PROLOG
Visual Prolog es un lenguaje de programación multi paradigma basado en el lenguaje Prolog lógico. El objetivo de Visual Prolog es facilitar soluciones programáticas de problemas de conocimiento complejos hincapié.
Visual Prolog es un potente con seguridad de tipos lenguaje de programación de alto nivel que combina las mejores características de los paradigmas lógicos de programación funcional y orientada a objetos de una manera coherente y elegante.
Con Visual Prolog puede crear aplicaciones para Microsoft Windows 32/64 plataformas.Es compatible con soluciones avanzadas de cliente-servidor y de tres niveles. Visual Prolog es especialmente adecuado para abordar los conocimientos complejos.
Al utilizar el sistema de objetos poderosos son capaces de diseñar su aplicación muy rígida y al mismo tiempo beneficiarse de acoplamiento muy flojo. Esto le permitirá reducir los costes de desarrollo y mantenimiento aún más.

5.2. Características de Visual Prolog:
·         conceptos lógicos de programación (retroceso, búsqueda de patrones)
·         tipos de datos algebraicos
·         un sistema único objeto
·         multi-threading (apoyado en la edición comercial)
·         polimorfismo paramétrico
·         Soporte Unicode
·         gestión automática de memoria (recolección de basura)



5.3. INTRODUCCIÓN:
Prolog es un lenguaje de programación diseñado para representar y utilizar el conocimiento que se tiene sobre un determinado dominio. Los programas en Prolog  responden preguntas sobre el tema del cual tienen conocimiento.  Forma parte de lo que se conoce como programación declarativa. En lenguajes tradicionales se indica cómo resolver un problema, en la programación lógica se establecen hechos reales y reglas para así no saber cómo resolver el problema, sino que hacer para resolverlo. La popularidad de este lenguaje se debe a su capacidad de deducción y además es un lenguaje fácil de usar por su semántica y sintaxis. Sólo busca relaciones entre los objetos creados, las variables y las listas, que son su estructura básica. En este artículo se dará una reseña histórica, para entender los orígenes del Prolog, una pequeña descripción del programa, así como las estructuras básicas y algunos operadores. También se mencionaran algunas ventajas y desventajas de Prolog, así como casos de uso. Por último se mostrarán tres ejemplos para mostrar la sintaxis y funcionamiento de Prolog.


5.4. HISTORIA
Los inicios de la programación lógica se dan gracias a los primeros trabajos de inteligencia artificial. Los cuales originaron el primer lenguaje de programación que contempla los mecanismos de inferencia necesarios para la demostración automática de teoremas. El lenguaje de programación Prolog se originó del trabajo hecho por Robert A. Kowalski en la Universidad de Edinburgh  y Alain Colmeraur en la Universidad de Aix-Marseille (Francia) en los años 70. La investigación de Kowolski en el área de deducción automatizada, llevó al desarrollo con Colmerauer al uso formal de lógica como un lenguaje de programación. Kowolski proporcionó la base teórica y Colmerauer inició la programación de Prolog. Colmeraur y Phillipe Roussel desarrollaron el primer intérprete, y David Warren de la Universidad de Edinburgh desarrolló el primer compilador Prolog. La mayoría de las implementaciones comerciales de Prolog usan la misma sintaxis desarrollada en Edinburgh. Su nombre proviene de las palabras en inglés “Programming in Logic”.  Desde su creación, Prolog ha crecido en popularidad en Europa, América y Japón.

5.5. DESCRIPCIÓN:
Prolog es un lenguaje de programación simple, pero poderoso. Se basa en nociones matemáticas de relaciones de inferencia. Es un lenguaje declarativo e interpretado, esto quiere decir que el lenguaje se usa para representar conocimientos sobre un determinado dominio y las relaciones entre objetos de ese dominio. Un programa en Prolog consiste de una base de datos de relaciones lógicas y detalles que se cumplen para la aplicación. Dicha base de datos no tiene una estructura impuesta, ni un procedimiento o clase principal. Los datos y relaciones de un programa en Prolog se escriben en un  único archivo, el cual es consultado por el programa cuando se le hace una pregunta.
Escribir un programa en Prolog consiste en declarar el conocimiento disponible acerca de los objetos, además de sus relaciones y sus reglas. En lugar de correr en un programa para obtener una solución, se hace una pregunta, el programa revisa la base de datos para encontrar la solución a la pregunta. Si existe más de una solución, Prolog hace backtracking para encontrar soluciones distintas. El propio sistema es el que deduce las respuestas a las preguntas que se le plantean, dichas respuestas las deduce del conocimiento obtenido por el conjunto de reglas dadas. La ejecución de Prolog consiste en una búsqueda  en profundidad de un árbol conteniendo todas las posibles soluciones. Para cada una de ellas se evaluará su validez. Más adelante se explicará el funcionamiento  de un árbol de deducción relacionado con un ejemplo. La estructura de un programa en Prolog es lógica y directa. Se explican cada una de sus partes y operadores disponibles a continuación.


5.6.  ESTRUCTURA DE UN PROGRAMA EN PROLOG 

La sintaxis Prolog incluye:
Hechos: es un hecho del lenguaje cotidiano. En lenguaje normal, una proposición puede ser “hace calor”. 
Reglas: las capacidades del programa. Estas son consultadas al hacer una consulta para verificar su validez o invalidez.
Variables: Representan objetos que el mismo Prolog determina. Una variable puede estar instanciada o no instanciada.
Consultas: es la acción de hacerle una pregunta al programa sobre la información contenida en la base de datos. 


5.7. VENTAJAS Y DESVENTAJAS 

5.7.1  Ventajas
Una ventaja desde el punto de vista del usuario es la facilidad para programar ya que se   pueden escribir programas rápidamente, con pocos errores originando programas claramente legibles, aun si no se conoce muy bien el lenguaje. 
Otra ventaja de este tipo de lenguajes frente a otros, como Java o C++, es que no hay que pensar demasiado en la solución del problema, ya que Prolog infiere sus respuestas basándose en las reglas declaradas dentro del programa.

5.7.2. Desventajas
La resolución automática no siempre es eficiente, por lo que eventualmente se podría dar una respuesta incorrecta a una consulta.
Ciertos problemas están ligados a la representación del conocimiento, que Prolog no posee.
Prolog es algunas veces es incapaz de reconocer  que un problema es (para su propio conocimiento) inaplicable o insuficiente. Si el programa no contiene suficiente información para contestar una consulta, es incapaz de reconocerlo.

5.8.   Inteligencia artificial

La IA es un campo de la ciencia y la ingeniería que se ocupa de la comprensión, desde un punto de vista informático, de lo que denomina comúnmente comportamiento inteligente. También se ocupa de la creación de artefactos que exhiben este comportamiento.
En ciencias de computación se denomina inteligencia artificial (IA) a la capacidad de razonar de un agente no vivo.
Es la ciencia e ingeniería de hacer máquinas inteligentes, especialmente programas de cómputo inteligentes.

5.9.   Los Juegos.

Una definición sencilla sería lo siguiente: " Los juegos son es el ejercicio recreativo sometido a reglas, y en el cual se gana o se pierde" (RAE).

En inteligencia artificial los juegos  son bastante utilizados en la teoría de Juegos, ya que da posibilidad a un conjunto infinito de evaluaciones.

"La naturaleza abstracta de los juegos los hacen un tema atractivo de estudiar. El estado de un juego es fácil de representar y los agentes están restringidos, por lo general, a un pequeño número de acciones y cuyos resultados están definidos por reglas precisas." (Russell y Norvig)


5.10. Clasificación de los Juegos 

Los Juegos se clasifican según ciertas propiedades presentes en todos ellos, facilitando así la decisión de qué algoritmo utilizar para vencer.
La primera de las propiedades a tener en cuenta será el número de jugadores, la segunda será el orden de los movimientos, saber si por ejemplo los jugadores mueven alternativamente o por azar

5.11. Juego Tres en Raya

El tres en línea, también conocido como tres en raya, es un juego, en nuestro caso desarrollado en Visual prolog, entre dos jugadores: X y Y, que marcan los espacios de un tablero de 3×3 alternadamente. Un jugador gana si consigue tener una línea de tres de sus símbolos: la línea puede ser horizontal, vertical o diagonal.


5.12. Estrategia a seguir

La idea básica cuando buscas vencer computacionalmente un adversario es intentar predecir todos los posibles movimientos, todas las posibles situaciones desde tu turno hasta el final de la partida, y elegir la que prometa mejores resultados. Esta idea se la conoce como la de “generar todo el árbol de búsqueda”.

6. METODOLOGÍA
6.1.     Instrucciones del juego


7. RELACIÓN DE RECURSOS HUMANOS
71. Roles y actividades de los integrantes:
Nuestro grupo está conformado por 2 estudiantes, a continuación los integrantes y los aportes de cada uno de ellos en la elaboración del proyecto:

§     ARENAZA CURI, EDGAR
Se encargó de la recolección de información sobre el marco teórico y las conclusiones del proyecto.

§     BALTAZAR LICAS, NEAL
El alumno se encargó de la documentación del proyecto y en la creación de listas para el programa inteligente del juego de tres en raya.

·                    CHAVEZ SHICA, PERCY
Se encargó de la codificación y creación de listas del proyecto además además que también el alumno aportará en la documentación del presente trabajo.

·                    ENRRIQUEZ VALVERDE, LENIN WILLIAM
Se encargó de la codificación y creación de listas del proyecto además que también el alumno aportará en la documentación del presente trabajo.

     7.2. Software y Hardware:
              Para el desarrollo del proyecto se hará uso de:
·         Un Computador Dual Core con SO Windows 7.
·         Microsoft Office Word 2010.
·         Visual Prolog.                         
·         Memoria USB                 
                           
8. CONCLUSIÓN


·         La metodología empleada en el juego es la más idóneo puesto que nos permite realizar los flujos de trabajo en varias iteraciones.

·         El desarrollo del software en su fase de construcción se logró llevar a cabo gracias  a la flexibilidad del  manejo del visual.

9. REFERENCIAS
Ø  RUSSELL, Stuart y NORVIG Peter. Inteligencia Artificial – Un Enfoque Moderno 2ª.edición.España: Pearson Educación S. A, 2006. 1240 p.
ISBN 84-205-4003-X
Ø  ESCOLANO, Francisco, CAZORLA, Miguel, GALIPIENSO, Isabel. Inteligencia Artificial – Modelos, Técnicas y áreas de aplicacion2ª.edición.España: International Thomson Ediciones Spain, 2003. 367 p.
ISBN 84-9732-183-9

16 comentarios:

  1. hola q tal amigo... muy bueno sus proyecto,,, me podrias envia el codigo abierto y la aplicacion a mi correo franco_0_16@hotmail.com ya que em gustaria estudiar la logica que emplearon y las tecnicas en ella,, soy estudiante de ing de sistemas y en este semestre estoy viendo el curso de IA... de antemano ,,muchas gracias

    ResponderEliminar
  2. Me parece genial, podrias por favor enviarme tu documentacion y los links de tu app y codigo para explorarlo, tambien soy estudiante de Ing de sistemas. gracias.

    mail: angel_clasic@hotmail.com

    ResponderEliminar
  3. muy bueno el proyecto me podrías enviar el código este es mi correo ximena_2252@hotmail.com te lo agradezco de antemano

    ResponderEliminar
  4. Hola amigo me parecio chevere tu proyecto me podrías enviar el código a jcinteligente@gmail.com para ver como lo realizaste

    ResponderEliminar
  5. Hola amigo me parecio chevere tu proyecto me podrías enviar el código a jcinteligente@gmail.com para ver como lo realizaste

    ResponderEliminar
  6. Hola amigo me parecio chevere tu proyecto me podrías enviar el código a jcinteligente@gmail.com para ver como lo realizaste

    ResponderEliminar
  7. hola podrias ayudarme facilitando el codigo del juego 3 en raya por favor ? es para un proyecto escolar . Mi correo es
    adan_0993@hotmail.com

    ResponderEliminar
  8. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  9. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  10. alguien tiene el codigo enserio lo necesito

    ResponderEliminar
  11. me puede facilitar el codigo del prolog por favor

    ResponderEliminar