Proyecto Pacman-Clips

49
Proyecto Pacman-Clips Realizado por: Juan A. Romero García Dirigido por: Lawrence Mandow Andaluz Málaga, Diciembre 2013

description

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.

Transcript of Proyecto Pacman-Clips

Page 1: Proyecto Pacman-Clips

Proyecto Pacman-ClipsRealizado por: Juan A. Romero García

Dirigido por: Lawrence Mandow Andaluz

Málaga, Diciembre 2013

Page 2: Proyecto Pacman-Clips

Pacman-Clips

• Introducción• El juego del Pacman• Tecnologías• Comportamientos• La aplicación Pacman-Clips• Demo• Conclusiones

Page 3: Proyecto Pacman-Clips

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)

Page 4: Proyecto Pacman-Clips

Introducción

PRÓLOGO• Situación personal

– La familia aumenta: esposa y 3 hijos

• No se puede dejar más: Plan Bolonia y delicada situación laboral actual

Page 5: Proyecto Pacman-Clips

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.

Page 6: Proyecto Pacman-Clips

IntroducciónANTECEDENTES• 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.

Page 7: Proyecto Pacman-Clips

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 Pacmanpor parte del jugador/a.

Page 8: Proyecto Pacman-Clips

IntroducciónAPORTACIÓ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.

Page 9: Proyecto Pacman-Clips

Pacman-Clips

• Introducción• El juego del Pacman• Tecnologías• Comportamientos• La aplicación Pacman-Clips• Demo• Conclusiones

Page 10: Proyecto Pacman-Clips

El juego del Pacman

Page 11: Proyecto Pacman-Clips

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 Pacmano 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.

Page 12: Proyecto Pacman-Clips

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.

Page 13: Proyecto Pacman-Clips

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/30th-anniversary-of-pac-man

Page 14: Proyecto Pacman-Clips

Pacman-Clips

• Introducción• El juego del Pacman• Tecnologías• Comportamientos• La aplicación Pacman-Clips• Demo• Conclusiones

Page 15: Proyecto Pacman-Clips

Tecnologías

ESTUDIO PREVIO• Esquema básico de la aplicación:

Visual Basic CLIPSDLL

Page 16: Proyecto Pacman-Clips

Tecnologías

• La clave de la aplicación es la integraciónentre 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.

Page 17: Proyecto Pacman-Clips

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.

Page 18: Proyecto Pacman-Clips

TecnologíasCLIPS• 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).

Page 19: Proyecto Pacman-Clips

TecnologíasCLIPS• 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.

Page 20: Proyecto Pacman-Clips

Tecnologías

CLIPS• Arquitectura de un Sistema Experto:

Page 21: Proyecto Pacman-Clips

TecnologíasCLIPSLa 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)

Page 22: Proyecto Pacman-Clips

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)

)

Page 23: Proyecto Pacman-Clips

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.

Page 24: Proyecto Pacman-Clips

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.

Page 25: Proyecto Pacman-Clips

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.

Page 26: Proyecto Pacman-Clips

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.

Page 27: Proyecto Pacman-Clips

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.

Page 28: Proyecto Pacman-Clips

TecnologíasEjemplo:

En un módulo llamado HLLdecl.bas) tenemos las funciones:

Declare Function HLL_RUN Lib “CLIPSHLL.DLL” (ByValIterations As Long) As Long

…….

Que se llama así:Retval = HLL_RUN(-1) Donde Retval obtiene el número de iteraciones realizadas

en CLIPS.

Page 29: Proyecto Pacman-Clips

Tecnologías

Page 30: Proyecto Pacman-Clips

Pacman-Clips

• Introducción• El juego del Pacman• Tecnologías• Comportamientos• La aplicación Pacman-Clips• Demo• Conclusiones

Page 31: Proyecto Pacman-Clips

Comportamientos2 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)

Page 32: Proyecto Pacman-Clips

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

Page 33: Proyecto Pacman-Clips

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

Page 34: Proyecto Pacman-Clips

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

Page 35: Proyecto Pacman-Clips

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

Page 36: Proyecto Pacman-Clips

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.

Page 37: Proyecto Pacman-Clips

Pacman-Clips

• Introducción• El juego del Pacman• Tecnologías• Comportamientos• La aplicación Pacman-Clips• Demo• Conclusiones

Page 38: Proyecto Pacman-Clips

La aplicación Pacman-Clips

Page 39: Proyecto Pacman-Clips

La aplicación Pacman-Clips

Personalización del juego con los menús:• Juego• Configuración• Ayuda

Page 40: Proyecto Pacman-Clips

La aplicación Pacman-Clips

Menú Configuración• Sonido (sí/no)• Elección de los fantasmas

Page 41: Proyecto Pacman-Clips

La aplicación Pacman-Clips

Menú Configuración• Sonido (sí/no)• Elección de los fantasmas • Elección personalidad fantasmas

Page 42: Proyecto Pacman-Clips

La aplicación Pacman-Clips

Menú Configuración• Sonido (sí/no)• Elección de los

fantasmas• Elección

personalidad de los fantasmas

• Ficheros Clips

Page 43: Proyecto Pacman-Clips

Pacman-Clips

• Introducción• El juego del Pacman• Tecnologías• Comportamientos• La aplicación Pacman-Clips• Demo• Conclusiones

Page 44: Proyecto Pacman-Clips

Demo

Page 45: Proyecto Pacman-Clips

DemoEjecuciones 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)

Page 46: Proyecto Pacman-Clips

Pacman-Clips

• Introducción• El juego del Pacman• Tecnologías• Comportamientos• La aplicación Pacman-Clips• Demo• Conclusiones

Page 47: Proyecto Pacman-Clips

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)

Page 48: Proyecto Pacman-Clips

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).

Page 49: Proyecto Pacman-Clips

Proyecto Pacman-Clips

GRACIAS