lunes, 26 de noviembre de 2012

Proyecto Final Entregable


 Descripción del Proyecto



El Adaptacuario se define como un ambiente/ecosistema donde existen diferentes especies/agentes los cuales deberán reproducir las acciones de los elementos que representan por ejemplo la lista de los agentes involucrados:


Elemento: la comida del pez y de donde se heredan los demás elementos para poder representarse en la interfaz gráfica.
Pez: este sera el depredador primario del acuario pero el mas esencial ya que si no esta ningún elemento de esta especie el juego terminara muy probablemente en cuanto a los siguientes elementos en la cadena alimenticia les de hambre y estos no tendrán alimento alguno y morirán
Pez malo: sera el depredador del pez así como presa del monstruo.
Pez mama: se encargara de proveer de peces al acuario, no tendrá la necesidad de comer y solo sera presa del monstruo
Monster: depredador principal de esta pequeña cadena alimenticia, aparecerá en el juego desde que inicie la partida pero su necesidad de hambre sera mas prolongada que la de los demás elementos
Recolector: aun no se define bien la función de este elemento, aun así se contempla que sea el encargado de las ganancias del acuario... cada elemento dará una ganancia al jugador el cual tendrá que recojer con este componente se espera que sean monedas y así se definirá la mejor puntuación el jugador que haya recolectado la mayor cantidad de monedas.


Corridas del acuario BETA :3





Código Completo 26/11/12

Bosquejo de  solución

La solución planteada en este problema se define en agentes inteligentes mediante Acuerdos y Cooperación entre agentes la función principal de los elementos es alimentarse ya que es una utilidad propia si no realizaran esto los agentes morirán y con esto se comprende que su principal objetivo o meta es su propio beneficio, y también llegar a cooperar en el caso de amenaza por parte del depredador principal, y poder combatir contra el en equipo trabajando en conjunto para lograr un común objetivo.

Diagrama UML


Diagrama de Gantt 


Lista Actualizada de los Recursos y Herramientas 

(En los links se podra encontrar el repositorio o el paquete a descargar.)

Los Recursos utilizados fueron Umbrello para los diagramas UML
Editor de Textos Emacs 
Lenguaje Java  modulos mas importantes:
Se intento Implementar JADE  Java Agent Development Framework pero no se concreto.

Versión del Sistema 

 modulos mas importantes:


/**
     *Metodo run maneja el hilo del juego para los metodos de dibujar y mover
     */
    public void run()
    {
 int t=0;
 while (true) 
     {
     Iterator<elemento> i = this.elementos.iterator();
     if(i.next().getvida()==true)
     {
     while (i.hasNext()) 
  {
      elemento e_e = i.next();
      e_e.mueve();
      Iterator<elemento> jt = this.elementos.iterator();
      while (jt.hasNext()) {
   e_e.interactua(jt.next());
      }
      System.out.println(e_e);
      /*
      Timer timer = new Timer (4000, new ActionListener () 
   { 
       public void actionPerformed(ActionEvent e) 
       { 
    e_e.comer(e_e.interactua(jt.next()));
    System.out.println(e);
       } 
   });
      
   timer.start();*/
  }
     this.repaint();
      }
     try 
  {
      Thread.sleep(250);
  } catch (Exception e) { }
     }
    }



Que es lo que falta ?

Implementar el método comer, y cooperar 

Que es lo que se piensa hacer?

Investigar un poco mas acerca de  threads y la implementación de ellos 

Como se han resuelto los problemas?

Se ah intentado implementar jade sin éxito y se decidió ejecutar las funcionalidades de un agente sin necesidad de la plataforma, también se logro implementar las interacciones en el mismo hilo de actualizar.
public elemento interactua(elemento C)//comida
    {                      
 if(C.equals (this))
     {
  //para que no se compare con si mismo
     }
 if (this.distancia(C) < C.getCerca())
     {
  //mueve(hacia C)
  System.out.println(this + " y " + C  + " estamos cerca.");
     }                      
 // estoy cerca de comida *-*                              
 return C;                         
    }
    public void comer(elemento C)
    {
 
 this.mueve();
 if(C.gety()>this.y ||C.getx() >this.x )
     {
  this.y += 1.0 - this.altura;
  this.x += 1.0-this.ancho;
     }
 else{
     if(C.gety()<this.y && C.getx() < this.x) 
  {
      this.y -= 1.0 - this.altura;
      this.x -= 1.0 - this.ancho;
  }
 }
 if(this.x == C.getx() &&this.y == C.gety())
     {
  C.setvida(false);
     }
    }


Video


Conclusiones 

En este proyecto se utilizaron varias técnicas vistas en clase de Programación de Sistemas Adaptativos las cuales podríamos implementar en ciertos casos donde se requiere simular un ambiente inteligente o crearlos de tal forma que se encuentren diversos tipos de resultados y reacciones e implementar auto-ajustes de parámetros algoritmos heúristicos, clustering, lógica difusa , agentes inteligentes así como redes neuronales.

Referencias

Insaquarium
Flying Bear Entertainment

PopCap Games
Version 1.1 (January 23, 2008)
Platform(s) Java, Palm OS, Windows Mobile, Windows
Link: Insaquarium



Herramientas para la publicacion: 
drive.google.com/    pastebin.com     Umbrello Modelador UML   HTML Encoder





No hay comentarios:

Publicar un comentario