Proyecto Fin de Carrera de Juan Antonio Romero García para la titulación de Ingeniería Técnica en Informática de Gestión.
Fue presentado el 20 de diciembre de 2013 y obtuvo la calificación de Sobresaliente.
3. Introducción
PRÓLOGO
• Anteproyecto aprobado en el 2001.
• El grueso del proyecto se realizó durante ese
año 2001.
• Situación personal
– Incorporación al mercado laboral:
•
•
•
•
Coritel (2001-2004)
Empresa propia (2004-2007)
Política y trabajo en el Ayuntamiento de Pizarra (2007-2011)
Dinamizador de Telecentro (2011 hasta la actualidad)
5. Introducción
OBJETIVOS
• El proyecto consiste en desarrollar un
juego basado en el clásico Pacman o
“comecocos” (en Visual Basic) donde los
fantasmas tendrán un comportamiento
inteligente basado en reglas (Clips).
• El programa resultante puede servir como
base de prácticas para las asignaturas de
Inteligencia Artificial o Sistemas Expertos.
6. Introducción
ANTECEDENTES
• El único antecedente de la
integración entre Visual Basic
y Clips es una aplicación muy
simple sobre los movimientos
que tiene que realizar un
mono para comerse unas
bananas.
• Fue realizado con VB5 y en
este proyecto se ha usado la
versión 6.
7. Introducción
• El programa recibe un
fichero con unas reglas
y un estado inicial y
genera los movimientos
que debe realizar el
mono.
• En nuestro caso
además debemos tener
en cuenta el
movimiento del Pacman
por parte del jugador/a.
8. Introducción
APORTACIÓN DEL PROYECTO
• Demostrar la utilidad de los lenguajes basados
en reglas en problemas cercanos a nosotros
resolviendo situaciones concretas.
• Crear un sistema abierto para que cualquier
alumno/a de la Universidad pueda realizar
pruebas.
• Demostrar que lenguajes de programación con
filosofías diferentes (orientados a objetos vs.
interpretados) pueden utilizarse conjuntamente
para resolver determinados problemas y convivir
dentro de una aplicación mayor.
9. Pacman-Clips
• Introducción
• El juego del Pacman
•
•
•
•
•
Tecnologías
Comportamientos
La aplicación Pacman-Clips
Demo
Conclusiones
11. El juego del Pacman
• El juego del Pacman es el videojuego de
arcade más exitoso de todos los tiempos.
• Fue creado a principios de los años 80.
• El protagonista del juego Pacman
o comecocos es un círculo
amarillo al que le falta un sector
por lo que parece tener boca.
• El juego consiste en comer unos
puntos repartidos por laberintos.
12. El juego del Pacman
• Existen cuatro fantasmas que recorren el
laberinto para tratar de comerse al
Pacman.
• También existen cuatro puntos más
grandes de lo normal situados en las
esquinas del laberinto que proporcionan al
Pacman la habilidad temporal de comerse
a los fantasmas.
13. El juego del Pacman
• Los cuatro fantasmas no son iguales,
además de tener diferente color también
suelen tener diferente personalidad.
• Más información en
http://es.wikipedia.org/wiki/Pac-Man
• Google celebró el 30 aniversario del
Pacman con un Doodle especial:
https://www.google.com/doodles/30thanniversary-of-pac-man
14. Pacman-Clips
• Introducción
• El juego del Pacman
• Tecnologías
•
•
•
•
Comportamientos
La aplicación Pacman-Clips
Demo
Conclusiones
16. Tecnologías
• La clave de la aplicación es la integración
entre dos lenguajes de programación
como son Visual Basic (diseño del juego y
manejo del comportamiento del usuario)
con CLIPS (comportamiento de los
fantasmas) a través de una biblioteca
enlaces dinámicos o DLL’s.
17. Tecnologías
VISUAL BASIC
• Con Visual Basic se crea la interfaz
gráfica del juego
• El diseño se realiza con formularios,
donde uno de ellos es el juego en sí.
• El resto son formularios para personalizar
las diferentes opciones del juego o para
emitir informes.
18. Tecnologías
CLIPS
• CLIPS (C Language Integrated Production
System) es una herramienta de procesado
simbólico utilizada principalmente para el
desarrollo de Sistemas Expertos.
• Los Sistemas Expertos son programas que
manipulan el conocimiento codificado para
resolver problemas en un dominio
especializado que normalmente requieren de
experiencia humana (un experto).
19. Tecnologías
CLIPS
• Son programas que contienen tanto conocimiento
declarativo (hechos acerca de objetos, eventos y
situaciones) como conocimiento de control (información
acerca de los cursos de una acción) para emular el
proceso de razonamiento de los expertos humanos en
un dominio particular o área de experiencia.
• Nuestros fantasmas van a tener conocimiento del
laberinto y van a saber moverse dentro de él para
capturar al Pacman.
21. Tecnologías
CLIPS
La arquitectura de un S.E. está compuesta por:
• Base de Conocimiento (reglas).
• Motor de Inferencia (búsqueda y selección de las
reglas) -> razonamiento
• Memoria de Trabajo (base de hechos)
• Interfaz de Usuario (de CLIPS no, diseño en VB)
• Generador de Explicaciones (inteligente con
seguimiento)
• Subsistema de adquisición de conocimiento (en
la modalidad de juego Inteligente con Seguimiento)
22. Tecnologías
• El constructor fundamental es el “defrule” para
definir reglas, el “deftemplate” para construir
hechos y el “deffacts” para insertar hechos en la
memoria de trabajo.
• Ejemplo de regla:
(defrule cambia-de-fase-dentro-fantasma
"Cambia de la fase comer-pacman a la de buscar-pacman"
(declare (salience 5))
(not (bola-gorda-comida))
(fantasma-no-movido)
?fase <- (fase comer-pacman)
=>
(retract ?fase)
(assert (fase buscar-pacman))
(printout wdisplay "cambia-de-fase-dentro-fantasma" crlf)
)
23. Tecnologías
DLL
¿Qué es una DLL?
• Es una biblioteca de enlaces dinámicos
(Dynamic Library Link), es decir un archivo
que contiene funciones que se pueden llamar
desde aplicaciones o desde otra DLL.
• Son independientes del lenguaje de
programación y no pueden ejecutarse
directamente.
24. Tecnologías
• Las DLL permiten agrupar el código de
nuestro programa en módulos separados.
• Normalmente tienen la extensión .dll aunque
también existen con la extensión .exe
• El sistema operativo Windows ha adoptado el
método de bibliotecas de enlaces dinámicos
como una manera estándar para crear
nuevas funcionalidades que pueda
compartirse en el sistema.
25. Tecnologías
DLL
¿Para qué sirven las DLL?
• Si programas distintos usan la misma DLL,
ésta se abre en memoria sólo una vez.
• Se puede reemplazar una versión distinta de
una DLL sin necesidad de compilar.
26. Tecnologías
DLL
¿Diferencias entre archivos DLL y EXE?
• Una DLL cuando está en la memoria no es
un programa en ejecución sino solamente
una colección de procedimientos y funciones
que otros programas pueden llamar.
• La librería no crea su propia pila en la
memoria sino que utiliza la pila del programa
que la llama.
27. Tecnologías
DLL
¿Cómo usar la DLL de CLIPS?
• Debemos utilizar un módulo de Visual Basic
compuesto por funciones que hacen
llamadas a la DLL y simulan la instrucción en
CLIPS.
• Al ser una función, estas llamadas nos
devuelven un resultado que nos indica si se
ha ejecutado correctamente o no.
28. Tecnologías
Ejemplo:
En un módulo llamado HLLdecl.bas) tenemos las
funciones:
Declare Function HLL_RUN Lib “CLIPSHLL.DLL” (ByVal
Iterations As Long) As Long
…….
Que se llama así:
Retval = HLL_RUN(-1)
Donde Retval obtiene el número de iteraciones realizadas
en CLIPS.
30. Pacman-Clips
• Introducción
• El juego del Pacman
• Tecnologías
• Comportamientos
• La aplicación Pacman-Clips
• Demo
• Conclusiones
31. Comportamientos
2 MODALIDADES DE JUEGO
• Juego Normal
• Juego Inteligente (y con Seguimiento)
CLASIFICACIÓN MOVIMIENTOS FANTASMAS
• Agresivos
• Pasivos
• Según la personalidad (sólo para juego
Inteligente)
32. Comportamientos
MODALIDADES DE JUEGO
• Juego Normal
• Los fantasmas se mueven de forma aleatoria
• Esta modalidad está pensada para crear una base
del juego y poder incorporar funcionalidades
33. Comportamientos
MODALIDADES DE JUEGO
• Juego Normal
• Los fantasmas se mueven de forma aleatoria
• Esta modalidad está pensada para crear una base
del juego y poder incorporar funcionalidades
• Juego Inteligente
• 3 personalidades diferentes de los fantasmas:
– Iguales movimientos que el Pacman
– “Cabezón”
– Directo
34. Comportamientos
JUEGO INTELIGENTE
• Iguales Movimientos
• El fantasma se mueve en la misma dirección que
el Pacman si es posible, en otro caso lo hace de
forma aleatoria
• “Cabezón”
• El fantasma elige un movimiento y no lo cambia.
• Si no puede: Iguales Movimientos
• Directo
• Compara su situación y la del Pacman e intenta
alcanzarlo en el menor nº de movimientos
35. Comportamientos
CLASIFICACIÓN DE MOVIMIENTOS
• Agresivos
• El fantasma trata de comerse al Pacman porque
está a su lado (independientes personalidad)
• Pasivos
• Son movimientos de huida porque el Pacman ha
tomado una bola de energía
• Según la personalidad
• Movimientos que desarrollan la estrategia elegida
por el jugador
36. Comportamientos
JUEGO INTELIGENTE CON SEGUIMIENTO
• Es como si el juego se congelase para poder
consultar la memoria de trabajo de CLIPS
(hechos almacenados y reglas ejecutadas).
• Es la interfaz desarrollada para ver el estado
de nuestra ejecución en CLIPS.
• Se ha incorporado un botón junto al laberinto
de juego para realizar el seguimiento.
41. La aplicación Pacman-Clips
Menú Configuración
• Sonido (sí/no)
• Elección de los fantasmas
• Elección personalidad fantasmas
42. La aplicación Pacman-Clips
Menú Configuración
• Sonido (sí/no)
• Elección de los
fantasmas
• Elección
personalidad de
los fantasmas
• Ficheros Clips
45. Demo
Ejecuciones para la demostración
• Juego Normal (4 fantasmas)
• Juego Inteligente con movimientos iguales (1
fantasma)
• Inteligente con movimiento “cabezón” (1
fantasma)
• Inteligente con movimiento directo (1 fantasma)
• Inteligente con seguimiento y movimiento
directo (1 fantasma)
• Inteligente con seguimiento (4 fantasmas con
personalidades diferentes)
47. Conclusiones
• Proyecto bonito, ameno, útil, ampliable y
mejorable.
• Se han conseguido los objetivos previstos:
– Integración de dos lenguajes de
programación diferentes
– Sistema abierto para desarrollar prácticas
(nuevas personalidades de los fantasmas)
48. Conclusiones
• Posibles mejoras:
– Más personalidades para los fantasmas y
laberintos más difíciles. Además de la
aparición de frutas (puntos extras).
– Reimplementación orientada a objetos del
código
– Utilización de otros lenguajes de
programación como JESS (nuevo CLIPS para
Java).