Java Y Robocode

7.868 visualizaciones

Publicado el

Publicado en: Tecnología, Empresariales
1 comentario
1 recomendación
Estadísticas
Notas
  • Muy buen artículo: mis felicitaciones y muchas gracias por el aporte
       Responder 
    ¿Estás seguro?    No
    Tu mensaje aparecerá aquí
Sin descargas
Visualizaciones
Visualizaciones totales
7.868
En SlideShare
0
De insertados
0
Número de insertados
658
Acciones
Compartido
0
Descargas
141
Comentarios
1
Recomendaciones
1
Insertados 0
No insertados

No hay notas en la diapositiva.

Java Y Robocode

  1. 1. Raúl Espinola Estudiante de Ing. En Sistemas UTN FRRe www.robocode-argentina.com.ar Robocode: Un Juego Para Aprender
  2. 2. Temario <ul><li>Introducción a Java </li></ul><ul><li>Robocode </li></ul><ul><li>Revolución de la Educación </li></ul><ul><li>Conclusión </li></ul>
  3. 3. Lenguaje de Programación Java <ul><li>Lenguaje de Programación Orientado a Objetos </li></ul><ul><li>C y C++ </li></ul><ul><li>Maquina Virtual </li></ul><ul><ul><li>Cada Programa debía ser reescrito y recompilado para corren en diferentes plataformas </li></ul></ul><ul><ul><li>Un programador puede escribir un programa en el lenguaje de la maquina virtual y correrlo en cualquier computadora . </li></ul></ul><ul><ul><li>La maquina virtual lee e interpreta el programa y entonces lo traduce en el lenguaje del sistema operativo y el hardware. </li></ul></ul>
  4. 4. Cualidades principales de Java <ul><li>Universalidad (transportabilidad, o independencia de plataforma ) </li></ul><ul><li>Sencillez (no se trabajan con punteros, y tiene un mecanicismo conocido como Garbage Collector) </li></ul><ul><li>Orientación a objetos (un programador no puede obviar la orientación a objetos cuando escribe un programa en Java ) </li></ul><ul><li>Seguridad (La VM de Java posee un verificador de los bytecodes , que antes de ejecutarlos analiza su formato comprobando que no existen punteros en ellos) </li></ul>
  5. 5. Entornos de funcionamiento <ul><li>En dispositivos móviles y sistemas empotrados (J2ME) </li></ul><ul><li>En el navegador Web ( Applets ) </li></ul><ul><li>En sistemas de servidor </li></ul><ul><li>En aplicaciones de escritorio </li></ul>
  6. 6. Compilación y Ejecución
  7. 7. Robocode Robocode Robocode es un juego donde cada uno escribe código Java para controlar el comportamiento de un tanque. Estos tanques se enfrentan en un campo de batalla cuyo objetivo es ser el único sobreviviente. <ul><li>Robocode se creo para enseñar java, ya sea a adolescente como para graduados que deseen experimentar con inteligencia artificial. </li></ul>
  8. 8. Robocode en General <ul><li>Desarrollado por Mathew Nelson de IBM (2001) </li></ul><ul><li>Escrito en Java. </li></ul><ul><li>Libre </li></ul><ul><li>Versión Actual: 1.6 Pagina Principal: http://robocode.souceforge.net </li></ul><ul><li>Un archivo de Instalación (JAR file) </li></ul>
  9. 9. Interfaz Grafica de Robocode Campo de Batalla Editor de Codigo
  10. 10. Código en Robocode package rocky; import robocode.*; public class Rocky extends Robot { public void run() { while(true) { ahead(100); turnGunRight(360); back(100); turnGunRight(360); } } public void onScannedRobot(ScannedRobotEvent e) { fire(1); } public void onHitByBullet(HitByBulletEvent e) { turnLeft(90 - e.getBearing()); } } Cada Robot se codifica por paquetes Los Bots son subclases de la clase JuniorRobot, Robot o AdvanceRobot El Método run es invocado para iniciar el robot El bucle while contiene comportamiento repetitivo y es el que se ejecutara durante toda la vida del robot Métodos Complementarios o Manejadores de Eventos que agregan acciones adicionales
  11. 11. Partes del Robot El Radar del robot utilizado para escanear otros tanques puede girar 360 grados La Torreta utilizada para disparar a los enemigos puede girar 360 grados independientemente de las demás partes El cuerpo del Tanque puede girar 360º y moverse hacia delante y hacia atrás
  12. 12. Conceptos del Mundo de Robocode (1) <ul><li>Acciones: Movimiento, Giro, Disparo </li></ul><ul><li>Disparos: de distinta velocidad según el poder, no se puede dispara continuamente </li></ul><ul><li>Sensor: Son los ojos del robot, detectan velocidad, posición, orientación y energía. </li></ul><ul><li>Basado en Turnos </li></ul>
  13. 13. Conceptos del Mundo de Robocode (2) <ul><li>Acontecimientos que pueden ocurrir : </li></ul><ul><li>- ver al adversario </li></ul><ul><li>- ser alcanzado por una bala </li></ul><ul><li>- chocar con un adversario </li></ul><ul><li>- etc. </li></ul><ul><li>Los tanques comienzan con una determinada cantidad de energía, que se va perdiendo por : </li></ul><ul><li>- recibir un disparo </li></ul><ul><li>- chocar contra algo (otro robot o una pared) </li></ul><ul><li>- por disparar a balas </li></ul>
  14. 14. Conceptos del Mundo de Robocode (3) <ul><li>Sólo se gana energía de una manera: </li></ul><ul><li>- Si una bala da a su enemigo después, algo de energía se le devuelve. </li></ul><ul><li>Inhabilitado </li></ul><ul><li>Si un robot se queda sin energía debido a su tiroteo, o por moverse, se inhabilita. </li></ul><ul><li>Muerte </li></ul><ul><li>Si un robot se queda sin energía por alguna otra razón, (como ser alcanzado por una bala o por chocar contra la pared) entonces, muere. </li></ul>
  15. 15. Batalla 1 vs 1 <ul><li>Class JuniorRobot </li></ul><ul><ul><ul><li>La mas sencilla de todas para crear un robot, cuyo propósito es enseñar programación básica </li></ul></ul></ul><ul><ul><ul><li>Con sencillas sentencias se puede crear un robot competitivo </li></ul></ul></ul><ul><li>Demostración de Ejemplo </li></ul>
  16. 16. Clases <ul><li>Clase Robot: </li></ul><ul><ul><li>Es Mucho mas completa que JuniorRobot y mas sencilla que AdvanceRobot, permite la creacion de Robots basicos con la posibilidad de implementar estrategias de combate, y control del usuario </li></ul></ul><ul><li>Clase AdvanceRobot: </li></ul><ul><ul><li>Permite la creacion de bots muy inteligentes, aplicando conceptos de matematica avanzada y técnicas de inteligencia artificial. </li></ul></ul>
  17. 17. Combates por Equipos <ul><li>Juego en equipo </li></ul><ul><li>En Robocode un equipo es una colección de robots que trabajan juntos para derrotar al enemigo. </li></ul><ul><li>Se extienden de la clase TeamRobot para proporcionar la comunicación entre ellos, pues esta clase contiene los métodos para enviar y recibir mensajes entre robots, de forma similar a la clase Agent de Jade. </li></ul><ul><li>Es posible enviar mensajes de difusión (broadcast, método broadcastMessage ), </li></ul><ul><li>Los mensajes directos llegan a un solo compañero de equipo (y se enviarían con el método sendMessage ). </li></ul><ul><li>La clase TeamRobot también permite comprobar si otro robot es un compañero de equipo o no mediante el método isTeammate y para tratar los mensajes entrantes tenemos los métodos onMessageReceived y getMessageEvents </li></ul><ul><li>Base para Programación basada en Agentes (JADE) </li></ul>
  18. 18. Inteligencia Artificial <ul><li>Programación genética: Se podría decir que es una forma de programar en la que partimos de programas simples, seleccionamos los mejores o tomamos las mejores características de cada uno y las mezclamos. Para conseguir un programa final mejor. Sería utilizar la teoría de la evolución donde el más fuerte sobrevive en programas y en este caso en robots. </li></ul><ul><li>1. Representación del genoma. Como vamos a guardar las características que determinan como se comporta nuestro robot. Para después poder realizar la evolución. </li></ul><ul><li>2. Seleccionar el mejor Para seleccionar los mejores robots podemos enfrentarlos con los propios robots que nos ofrece robocode o con los que encontramos en los repositorios que existen en la Web. Podemos simular diferentes escenarios donde nuestro robot puede enfrentarse a más de un rival o contrincantes que se comporten de diferente manera. Según el tiempo que se disponga y lo que queramos conseguir. </li></ul><ul><li>3. Evolución Una vez que tenemos a los mejores robots, los que producen mejores resultados tenemos que combinar su genoma. </li></ul>
  19. 19. Proyectos y Futuro de Robocode <ul><li>Robocode NG: Modificación hecha solo para Linux, donde se pueden realizar todo tipo de cambios a los tanques, como nuevos tipos de disparos, movimientos, skins, etc. </li></ul><ul><li>Robocode 3D: Basado en Robocode pero con un motor Grafico basado en Java 3D. </li></ul><ul><li>Robocode 2: Posible Segunda version de este juego para un futuro cercano, aunque existen dudas por parte de sus creadores en continuar con el proyecto al liberarse el codigo, varios fueron los ofrecidos en continuar con el mismo. </li></ul><ul><li>Robocode para C, PHP, Visual Basic y otros lenguajes : Exiten varias implementaciones del concepto de Robocode que fueron (Visual) o serán implementadas para la enseñanza de otros lenguajes. </li></ul>
  20. 20. Revolución de la Educación <ul><li>Introducción: </li></ul><ul><li>En este momento se presenta a la Educación como un carga para los alumnos que deben capacitarse por obligación y miedo al futuro, mientras que la misma debería pasar a ser un placer por no solo alcanzar ciertos logros intelectuales sino por como fueron alcanzados , este nuevo tipo de herramientas educacionales permiten explotar lo que al niño o joven mas le apasiona, como un videojuego, un programa de pintura, un software musical o dar vida a seres computacionales en una simple animación, utilizando el arte, las matemáticas, y las ciencias. </li></ul>
  21. 21. Herramientas Educativas <ul><li>Robocode </li></ul><ul><li>Robocup </li></ul><ul><li>Squeak </li></ul><ul><li>Scratch </li></ul>Robocode y las herramientas presentadas aquí son un medio y no un fin en si mismo, que deben ser utilizadas para producir esta revolución educativa .
  22. 22. Robocup <ul><li>Juego de futbol, basado en la programacion de agentes, cada alumno debe programar su equipo de futbol </li></ul>
  23. 23. Scratch <ul><li>Aplicación desarrollado por el MIT, desarrollado en Squeak </li></ul><ul><li>Dedicado para niños. </li></ul><ul><li>Define un lenguaje de programación con reducida instrucciones utilizando graficas y colores. </li></ul><ul><li>Permite la enseñanza de conceptos básicos de Programación y Orientación a Objetos (objetos y eventos) </li></ul>
  24. 24. Ejemplo
  25. 25. Squeak <ul><li>Es una implementacion open-source del lenguaje Smalltalk , el cual es: </li></ul><ul><li>Extramadamente Portable como en SO (Linux/Unix, Windows, Mac,Acorn, BeOS) asi como palms y handhelds (Winsdows CE, Zaurus, etc) y consolas de juegos (Sony Playstation) e inclusive puede utilizarse en hardware sin ningún sistema operativo. </li></ul><ul><li>Un lugar donde convivan todos los medios de expresión conocidos hasta la fecha (texto, video, sonido, música, gráficos 2D, gráficos 3D, TextToSpeech, etc) y que sirva, a su vez, como soporte para el desarrollo de nuevos medios. Esta característica, sumada a la capacidad de simulación , posicionan al Squeak como una herramienta muy poderosa. </li></ul><ul><li>Implementado en escuelas primarias de España con éxito orientado para niños pequeños como para realizar desarrollos en si mismo </li></ul><ul><li>Es una plataforma de desarrollo para aplicaciones educativas </li></ul><ul><li>El Gobierno de Extremadura llamo a licitación para desarrollos educativos en Squeak por la suma de 400.000 Euros </li></ul><ul><li>Demostracion </li></ul>
  26. 26. Presentacion de Proyecto <ul><li>A principios de este año el grupo DB2 UG y el grupo de Robocode presentaron al ministerio de Educacion de la Provincia del Chaco un proyecto para la enseñanza de las bases de la algoritmia y programacion a alumnos de escuelas secundarias. </li></ul><ul><li>Utilizando estas herramientas educativas. </li></ul><ul><li>Uno de los objetivos era tambien ayudarlos para el ingreso a la Universidad, ya que el mismo posee un modulo de Algoritmia. </li></ul><ul><li>Ejemplo: Universidad Globant </li></ul>
  27. 27. Conclusión <ul><li>Hemos Presentado 3 Áreas: Java , Robocode , Educación </li></ul><ul><li>El Robocode un Medio . </li></ul><ul><li>La Educación el Objetivo para el que enseña. </li></ul><ul><li>Java el Objetivo para el que aprende </li></ul><ul><li>Si sos educador, esto te va a servir . Si queres aprender a programar, con robocode lo podes lograr, y si ya sabes Java u otro lenguaje , existen muchos desarrollos educativos y desafíos tecnológicos que implementar con el objetivo de hacer educación y dar algo a nuestra comunidad. </li></ul>

×