Edición de «Captura la bandera»

De OpenDataLab
Saltar a: navegación, buscar

Advertencia: No has iniciado sesión. Tu dirección IP será visible públicamente si haces cualquier edición. Si inicias sesión o creas una cuenta, tus ediciones se atribuirán a tu nombre de usuario, junto con otros beneficios.

La edición puede deshacerse. Antes de deshacer la edición, comprueba la siguiente comparación para verificar que realmente es lo que quieres hacer, y entonces guarda los cambios para así deshacer la edición.
Revisión actual Tu texto
Línea 1: Línea 1:
 
Página de las características de la plataforma CTF-UHU
 
Página de las características de la plataforma CTF-UHU
 +
  
 
== Descripción del proyecto ==
 
== Descripción del proyecto ==
 
El proyecto a desarrollar se puede encajar, principalmente, dentro del proyecto docente del área de de Ciencias de la Computación e Inteligencia Artificial.
 
El proyecto a desarrollar se puede encajar, principalmente, dentro del proyecto docente del área de de Ciencias de la Computación e Inteligencia Artificial.
 
Éste va a consistir en el desarrollo de una plataforma multiagente donde poner en práctica todas las ideas y algoritmos desarrollados durante los estudios de Grado en Ingeniería Informática.
 
Éste va a consistir en el desarrollo de una plataforma multiagente donde poner en práctica todas las ideas y algoritmos desarrollados durante los estudios de Grado en Ingeniería Informática.
 
 
En concreto, para la asignatura de Inteligencia Artificial, los alumnos lo usarán para experimentar con los principales algoritmos de búsqueda estudiados.
 
En concreto, para la asignatura de Inteligencia Artificial, los alumnos lo usarán para experimentar con los principales algoritmos de búsqueda estudiados.
 
 
Para la asignatura Sistemas Inteligentes, los alumnos podrán desarrollar por completo un agente software, o varios, para poner en práctica los conocimientos aprendidos en la asignatura.
 
Para la asignatura Sistemas Inteligentes, los alumnos podrán desarrollar por completo un agente software, o varios, para poner en práctica los conocimientos aprendidos en la asignatura.
 
 
Sobre la plataforma, se desarrollará en Java. Simulará el juego "Capture the Flag". El servidor será un agente sofware JADE. Recibirá jugadores y simulará las partidas. También se desarrollará un agente gráfico, para ver la partida. La comunicación entre agentes se basará
 
Sobre la plataforma, se desarrollará en Java. Simulará el juego "Capture the Flag". El servidor será un agente sofware JADE. Recibirá jugadores y simulará las partidas. También se desarrollará un agente gráfico, para ver la partida. La comunicación entre agentes se basará
 
en la biblioteca JADE. La parte gráfica se desarrollará mediante la biblioteca PROCESSING.
 
en la biblioteca JADE. La parte gráfica se desarrollará mediante la biblioteca PROCESSING.
Línea 14: Línea 12:
 
Objetivos:
 
Objetivos:
 
- Estudio y desarrollo de la plataforma base y arquitectura del sistema.
 
- Estudio y desarrollo de la plataforma base y arquitectura del sistema.
 
 
- Integración con entorno gráfico.
 
- Integración con entorno gráfico.
 
 
- Desarrollo de esquemas de programación.
 
- Desarrollo de esquemas de programación.
 
 
- Elaboración de algunas prácticas "tipo".
 
- Elaboración de algunas prácticas "tipo".
 
 
- Redactar documentación del funcionamiento del sistema.
 
- Redactar documentación del funcionamiento del sistema.
 
 
- Implantación de la plataforma en la web.
 
- Implantación de la plataforma en la web.
 
 
== GitHub ==
 
 
 
https://github.com/Saviatron/Plataforma_CTF_UHU
 
 
 
 
== Vídeo funcionamiento ==
 
 
 
[https://youtu.be/K_xbm8FObIE Demostración funcionamiento Plataforma]
 
 
 
 
== Versión y estado ==
 
 
 
El proyecto está actualmente en la versión 9.1.
 
 
Esta versión es completamente estable y tiene todas las funcionalidades pensadas inicialmente.
 
 
 
El estado de desarrollo es 99%, ya que siempre será posible seguir añadiendo funcionalidades.
 
  
 
== Implementadas ==
 
== Implementadas ==
 
- Agente Servidor inicial. Se han planteado los comportamientos.
 
 
- Agente Monitor inicial. Se han planteado los comportamientos.
 
 
- Agente Jugador inicial. Se han planteado los comportamientos.
 
 
- El Agente Servidor lee los mapas, se han desarrollado los comportamientos básicos.
 
 
- El Agente Servidor recibe y administra Agentes Monitores.
 
 
- Se ha establecido la conexión entre Agente Servidor y Agente Monitor. Se muestra la partida por pantalla.
 
  
 
- Cambiar de JFrame a processing 2, luego a processing 3. Esto implica que PApplet no hereda de Applet, debido a eso, no se puede incrustar en JFrame.
 
- Cambiar de JFrame a processing 2, luego a processing 3. Esto implica que PApplet no hereda de Applet, debido a eso, no se puede incrustar en JFrame.
Línea 73: Línea 29:
  
 
- Dibujar el mapa en 3D con processing.
 
- Dibujar el mapa en 3D con processing.
 
- Agente Jugador básico funcionando.
 
 
- El Agente Servidor ya recibe y gestiona las acciones de los Agentes Jugadores.
 
  
 
- Realizar procesador de lenguajes (Parser) para comunicar mapa:  
 
- Realizar procesador de lenguajes (Parser) para comunicar mapa:  
 
+
         La gramatica finalmente realizada será:  
         La gramática realizada finalmente para el primer mensaje HandleInform será:
+
         Cada línea: token ,equipo ,posX ,posY \n”
       
+
         token: “entrada” | “jugador” | “muerte” | “base” | “bandera”
        handleInform : orientacion "," vision_parcial "," ancho_mapa "," alto_mapa "," posX "," posY "," num_eq "," mapa "\n" (linea)*
+
         equipo: numero
        orientacion : Boolean
+
         posX: numero
        vision_parcial : Boolean
+
         posY: numero
        ancho_mapa : Integer
+
        alto_mapa : Integer
+
        num_eq : Integer
+
        mapa : ( " " | "#" )*
+
        linea : token "," equipo "," posX "," posY "\n"
+
        token : "entrada" | "jugador" | "muerte" | "base" | "bandera"
+
        equipo : Integer
+
        posX : Integer
+
        posY : Integer
+
 
+
        La gramática realizada finalmente para el mensaje de cada Tick será:  
+
          
+
        tick : (linea)*
+
        linea : token "," equipo "," posX "," posY "\n"
+
         token : "entrada" | "jugador" | "muerte" | "base" | "bandera"
+
         equipo : Integer
+
         posX : Integer
+
         posY : Integer
+
 
+
  
 
- Corregir texturas 2D y 3D.
 
- Corregir texturas 2D y 3D.
Línea 120: Línea 53:
  
 
- Archivo Config externo. (API Properties)
 
- Archivo Config externo. (API Properties)
        servidorConfig.cfg: como su nombre indica, es el fichero de configuración del servidor.
 
       
 
        '''NOMBRE_SERVICIO''' = Nombre del servicio que ofrece el agente Servidor (String)
 
        '''TIPO_SERVICIO''' = Tipo de servicio que ofrece el agente Servidor (String) MAPA= Nombre del fichero .txt del mapa (String)
 
        '''CONTENIDO''' = Nombre del fichero .ini de los elementos iniciales del mapa (String)
 
        '''ORIENTACION_RELATIVA''' = Tipo de orientación de la rotación de la acción. true para relativa, false para absoluta (Boolean)
 
        '''TICKS''' = Cantidad de ticks sin enviar acción para ser desconectado (Integer)
 
        '''DESCONEXION''' = Activar o desactivar la desconexión de los jugadores (Boolean)
 
        '''MAX_JUGADORES_EQ''' = Número de jugadores máximo por equipo. Recomendado ~5 (Integer)
 
        '''NUM_EQUIPOS''' = Número de equipos. Recomendado 2 (Integer)
 
        '''TiempoTick''' = Tiempo entre ticks. Recomendado ~500 (Integer)
 
        '''TASA_RECHAZO''' = Probabilidad de rechazo de la conexion. Recomendado ~0.5 (Integer)
 
        '''VISION_PARCIAL''' = Comunicar tablero completo o solo parte visible (Boolean)
 
        '''ALCANCE''' = Número de casillas al frente que verá el jugador con visión parcial (Integer)
 
        '''ANCHO''' = Número de casillas a los lados que verá el jugador con visión parcial (Integer)
 
 
        monitorConfig.cfg: como su nombre indica, es el fichero de configuración del monitor.
 
       
 
        '''SERVIDOR''' = Indicamos true si queremos conectar al servidor, false si queremos leer una partida de fichero (Boolean)
 
        '''PARTIDA''' = Si queremos leer una partida, indicamos su nombre. Si no, este parámetro será ignorado. "Partida.txt" (String)
 
        '''IS3D''' = Indicamos true si queremos visualizar en 3D, false si queremos visualizar 2D. (Boolean)
 
        '''SOUND''' = Indicamos true si queremos música de partida. (Boolean)
 
  
 
- Desconectar monitor
 
- Desconectar monitor
Línea 206: Línea 117:
  
 
- Ordenar librerías externas.
 
- Ordenar librerías externas.
 
 
----
 
  
 
- Beta finalizada.
 
- Beta finalizada.
  
----
+
== Pendientes ==
  
 +
• Poner nombre al equipo.
  
- Poner nombre al equipo. El primer jugador que cambie el nombre del equipo.
+
• Limpiar, ordenar, optimizar, comentar, depurar código.  
  
- Opción para deshabilitar sonido del monitor.
+
• Añadir orientación a jugadores (solo se mueven adelante)
  
- Cámara por jugadores. Más o menos, hay que terminar de cuadrarla por posición. Se elegirá un jugador de la lista de los actuales.
+
Cámara por jugadores
  
- Añadir orientación a jugadores (solo se mueven adelante) .
+
Sombras y luces en processing (Terminar, arreglar fallos)
Orientación relativa o absoluta. Se elige en Servidor.cfg. Se ha creado la clase Accion.java. El servidor recibe: int,String (Absoluta) o int,int (Relativa) -> desplazamiento,orientacion
+
Si (desp>1) -> desp=1
+
Relativa: si (!grados%45) -> INCORRECTA
+
Absoluta: si (¡orientacion==[N,NE,E,SE…]) -> INCORRECTA
+
Si (desp==0) -> NULA
+
Si recibe “ABANDONAR” -> Abandonar
+
Orientación inicial -> 0 == N
+
-45º -> 360-45  ,  405º -> 405%360
+
Deberia rotar si desp==0? Por ahora no.
+
Añadir opción de despl=-1 (atrás)?
+
Se podría quitar opción, ya que se diferencia en int o String?
+
- Sombras y luces en processing (Terminar, arreglar fallos)
+
Por ahora no!
+
  
- Ficheros partida y estadística siempre abiertos. Si el servidor no acaba como es debido se pierde todo. Ultima voluntad o abrir y cerrar siempre?
+
• Redimensionar tablero y casillas a pant. Completa
Java.Util.Logging no sirve, escribe fecha… -> Abrir y cerrar cada vez que escriba.
+
  
- Mapa parcial: Solo se le enviará al jugador una porción del tablero en cada tick. Configurable desde ServidorConfig.
+
Mapa parcial
  
- Hacer esquema rellenable de jugadores (jugador esqueleto) PARA PRACTICA IA LABERINTO
+
• Mejorar jugadores (Hacer jugador rival)
  
- Hacer Agente Jugador con comportamiento basado en Sistema Difuso mediante XFuzzy.
+
Hacer esquema rellenable de jugadores (jugador esqueleto)
 
+
- Agentes Monitores y Agentes Jugadores adaptados a todos los cambios del Agente Servidor.
+
 
+
- Implantación de la Plataforma en Internet. Desarrollo de la Base de Datos inicial.
+
 
+
- Ejecución de la plataforma en la Base de Datos local. Todo correcto, arreglado fallos de finalización.
+
 
+
== Pendientes ==
+
 
+
• Redimensionar tablero y casillas a pant. Completa
+
 
+
• Mejorar jugadores
+
  
 
• Añadir elementos al juego. (Vida, daño, paredes moviles, recursos)
 
• Añadir elementos al juego. (Vida, daño, paredes moviles, recursos)
  
        Vida y daño ya añadidos.
+
• Esquema de clases de cada proyecto y funcionamiento.  
  
 
• Hacer figuras con menos detalles -> eficiencia
 
• Hacer figuras con menos detalles -> eficiencia
Línea 265: Línea 148:
 
== Ideas ==
 
== Ideas ==
  
De cara al futuro, aunque la plataforma se ha desarrollado por completo, cumpliendo todos los objetivos propuestos, aún se puede ampliar:
+
Poner nombre al equipo
 
+
• Cabe la posibilidad de desarrollar otro tipo de juego mediante otro tipo de objetos, acciones, agentes…
+
 
+
• Hasta ahora, en la percepción de los agentes jugadores, solo se percibe el tablero y sus objetos. Con el objetivo de desarrollar una plataforma más completa, se podrían añadir otros tipos de percepción, simulando otros tipos de sensores. Por ejemplo, zonas de temperaturas elevadas, de las que podemos percibir las temperaturas. Además, podríamos percibir sonidos de jugadores alejados.
+
 
+
• La plataforma desarrollada hasta ahora funciona por ticks. Gracias a la libertad que nos ofrece JADE mediante el paso de mensajes asíncronos, se podría desarrollar una lógica de juego en tiempo real que no esté marcada por ticks.
+
 
+
• Respecto al tablero, se ha desarrollado con casillas cuadradas. Se podría desarrollar otro tipo de tablero, por ejemplo, hexagonal, o incluso de campo abierto, sin casillas. Por supuesto, cabe la posibilidad de desarrollar un juego en 3D, cuyo tablero incluya diferentes alturas.
+
 
+
== Autoría==
+
 
+
Autor del proyecto: '''Javier Martín Moreno.'''
+
 
+
Tutor del proyecto: '''Gonzalo Antonio Aranda Corral.'''
+
 
+
  
 +
Poner botones del Play... etc...
  
== Firmado ==
+
Estadísticas.
 +
quien es el ganador
 +
numero de ticks jugados
 +
numero de bajas por equipos.
  
--[[Usuario:Javier.martin816|Javier.martin816]] ([[Usuario discusión:Javier.martin816|discusión]]) 11:49 20 jun 2019 (CEST)
+
lista de jugadores y sus bajas.

Por favor, ten en cuenta que todas las contribuciones a OpenDataLab pueden ser editadas, modificadas o eliminadas por otros colaboradores. Si no deseas que las modifiquen sin limitaciones y las distribuyan libremente, entonces no las pongas aquí.
También nos aseguras que tú escribiste esto y te pertenecen de los derechos de autor, o lo copiaste desde el dominio público u otra fuente libre. (véase OpenDataLab:Derechos de autor para más detalles). ¡No uses escritos con copyright sin permiso!

Cancelar | Ayuda de edición (se abre en una ventana nueva)