- Resumen del Proyecto
EL PROYECTO SERÁ UN JUEGO QUE SERÁ CONTRA LA MAQUINA IA, QUE FUNCIONARA CON INTELIGENCIA ARTIFICIAL, SERÁ EL JUEGO POR TURNOS, SERÁ DE DOS JUGADORES UNO CONTRA OTRO (UNO COMANDADO POR LA IA), EL OBJETIVO PRINCIPAL SERÁ DESTRUIR LA BASE DEL CONTRARIO, LA IA SE ADAPTARA A LA FORMA DE JUEGO. CONSTARA DE UN TABLERO EL CUAL SERA SIMILAR AL DE UN JUEGO DE AJEDREZ, PERO QUE ESTARÁ CONSTITUIDO POR MONTAÑAS, CAMPO ABIERTO Y ALGUNOS EDIFICIOS EN EL QUE EL USUARIO Y IA MOVERÁN SUS UNIDADES PARA LLEGAR A LA BASE ENEMIGA.
LAS UNIDADES (SOLDADOS) SERÁN ASIGNADAS AL INICIAR CADA PARTIDA, SE PODRÁ ESCOGER LA CIVILIZACIÓN QUE GUSTE PARA EL USUARIO Y TAMBIÉN PARA LA MAQUINA IA. TAMBIÉN SE PODRÁN ADQUIRIR NUEVAS UNIDADES A CONFORME VAYAN PASANDO LOS TURNOS Y OBTENIENDO PUNTOS POR CADA TURNO.
LA MODIFICACIÓN QUE SE LE HIzO en la entrega pasada ES QUE SOLO SERA DE DOS NIVELES QUE SERIA EL NORMAL Y EL DIFÍCIL, TAMBIÉN QUE SUS ESCENARIOS SERÁN CLASIFICADOS COMO GRANDES, MEDIANO Y PEQUEÑO Y SE MOVERÁN POR BLOQUES CON SU RESPECTIVO LIMITE DE CADA UNIDAD POR TURNO.
En esta entrega tenemos la codificación del diseño de la presentación del juego y el mapa que utilizaremos, posiblemente puedan ser varios mapas dependiendo de como nos vayamos desenvolviendo en el transcurso del desarrollo del juego, también ya tenemos planificado la lógica que utilizaremos y las reglas establecidas del juego ya que queremos que sea un juego sencillo y quitaremos algunas de las características que tienen los juegos ya más desarrollados ya que eso implicaría más tiempo y no queremos un juego que se tome tiempo en entender o aprender a jugar.
- Avance con Respecto a la Planeación
¿Qué se ha hecho?
Se a realizado varias clases con respecto a parte de la interfaz gráfica, edición de imágenes y ventanas las cuales nos servirán para representar mejor nuestra funcionalidad del juego, también nos hemos podido enfocar mas en el área inteligente la cual se realizo con ayuda de la librería JADE que ocuparemos lo que resta del proyecto para el manejo de Agentes Inteligentes. Se a podido investigar mas a fondo sobre este tema y buscar mas tutoriales y ejemplos referentes al uso de Agentes Inteligentes.
¿Qué falta?
Falta gran parte de la programación centrada a lo visual, y un poco a lo adaptativo ya que al tener codificado una parte del manejo de agentes, se podrá codificar con mayor facilidad los otros personajes y parte de la maquina para que pueda ser competencia contra el usuario.
¿Qué problemas se han presentado y cómo los has resuelto / piensas resolverlos?
Se han presentado principalmente el problema de no saber usar o conocer sobre los Agentes Inteligentes, pero por ello nos enfocamos en buscar información sobre su uso y buenos tutoriales para mejorar nuestro manejo de ellos. El tener poca experiencia con este tema, nos hace ir un poco mas lentos pero como mencionamos gracias a información encontrada se ha podido realizar un avance lo cual nos a aclarado en que podemos enfocarnos mas para seguir con el proyecto.
- Lista actualizada de Recursos y Herramientas
El esta entrega presentamos una lista actualizada de recursos y herramientas de lo que hemos investigado conforme a nuestro proyecto, como nuestro proyecto es un juego tipo ‘’Age of Empires’’ pero más sencillo, siguiendo la idea de este juego y analizando los aspectos clave o importantes, nos dimos cuenta que vamos a tener que utilizar o nos ayudaría considerablemente lo que son los ‘’Agentes’’ y ‘’Multiagentes’’ a parte de que ya nos habían advertido que seguramente tendríamos que enfocarnos a estudiar ese tema porque lo utilizaríamos.
Las Librerias que se estan utilizando son las de JADE.
Nos has funcionado bastante bien, ya que en la misma libreria almacena algunos ejemplos de manejo de Agentes, los cuales nos sirvieron mucho. Aunque no sabemos manejarlas a la perfección aun.
Hay tutoriales que nos están ayudando mucho como estos:
El Robot constara de una vida de 100% la cual al recibir 4 ataques (25% cada ataque) el Robot sera destruido y eliminado del mapa (takeDown())
La siguiente fracción de código muestra el primer comportamiento del Agente Inteligente (RobotIA) el cual se refiere al movimiento del Robot después del termino del turno del jugador, al terminar este comportamiento manda a llamar al segundo comportamiento del Robot:
Por ultimo, esta el segundo comportamiento del agente, el cual realizara el ataque si el enemigo de este se encuentra cercas de su rango de ataque. Este comportamiento es llamado por el anterior para cuando se halla movido de posición verifique si puede realizar el ataque o no.
Segundo Comportamiento del agente:
Basándonos en el juego de MarioIA por su uso de Agentes Inteligentes:
Algunas de las características de los agentes inteligentes con las que tenemos que trabajar más son:
- Control del entorno
- Punto de vista incompleto
Hay tutoriales que nos están ayudando mucho como estos:
- Java Game: http://thenewboston.org/list.php?cat=30
- Intermediate Java: http://thenewboston.org/list.php?cat=25
Hemos estado investigando diferente tipo ideas, aún tenemos que orientarnos en algunos aspectos ya que pensamos que podríamos batallar con algunas cosas.
- Primera Versión del Sistema
Aquí mostramos parte del código que se utilizara para el funcionamiento de nuestro juego, en este manejamos Agentes Inteligentes. Los cuales tendrán un comportamiento el cual se accionara en cada uno de los movimientos de el contrincante del usuario (Maquina IA).
La siguiente Clase (RobotIA1.java) contiene entre sus elementos el Setup() y el takedown() para iniciar con los comportamientos:
import jade.core.Agent;
import jade.core.behaviours.Behaviour;
public class RobotIA1 extends Agent{
private Behaviour comp;
private int VidaRobot = 100;
protected void Setup(){
System.out.println("El Robot enemigo es GunLeon#1!
+ getAID().getName());
comp = new comportamientoR1();
addBehaviour(comp);
}
protected void takeDown(){
//Codigo para desaparecer el robot del campo...
System.out.println("El Enemigo ha sido Destruido!");
}
El Robot constara de una vida de 100% la cual al recibir 4 ataques (25% cada ataque) el Robot sera destruido y eliminado del mapa (takeDown())
La siguiente fracción de código muestra el primer comportamiento del Agente Inteligente (RobotIA) el cual se refiere al movimiento del Robot después del termino del turno del jugador, al terminar este comportamiento manda a llamar al segundo comportamiento del Robot:
private class comportamientoR1 extends Behaviour{
public void onStart(){
System.out.println("Turno de la MaquinaIA");
}
public void action() {
//Codigo de movimiento del Robot en el campo
System.out.println("El Robot1 Enemigo se mueve...una celda en el campo");
myAgent.addBehaviour(new comportamientoR1_2());
//Codigo para cuando termine el turno de la MaquinaIA
}
public boolean done() {
return true;
}
}
El movimiento sera en una matriz que se generara con imágenes para formar el campo de batalla.Por ultimo, esta el segundo comportamiento del agente, el cual realizara el ataque si el enemigo de este se encuentra cercas de su rango de ataque. Este comportamiento es llamado por el anterior para cuando se halla movido de posición verifique si puede realizar el ataque o no.
Segundo Comportamiento del agente:
private class comportamientoR1_2 extends Behaviour{
public void action() {
//codigo del RobotIA cuando se dipone a atacar al jugador
System.out.println("El robot verifica si hay enemigos cercas para atacar");
}
public boolean done() {
return true;
}
}
Video donde se explica la funcionalidad del código