27
Raúl Espinola Estudiante de Ing. En Sistemas UTN FRRe www.robocode-argentina.com.ar Robocode: Un Juego Para Aprender

Java Y Robocode

Embed Size (px)

Citation preview

Page 1: Java Y Robocode

Raúl EspinolaEstudiante de Ing. En Sistemas

UTN FRRewww.robocode-argentina.com.ar

Robocode: Un Juego Para Aprender

Page 2: Java Y Robocode

TemarioTemario

►Introducción a JavaIntroducción a Java►RobocodeRobocode►Revolución de la EducaciónRevolución de la Educación►ConclusiónConclusión

Page 3: Java Y Robocode

Lenguaje de Programación JavaLenguaje de Programación Java

► Lenguaje de Programación Orientado a ObjetosLenguaje de Programación Orientado a Objetos► CC y y C++C++ ► Maquina VirtualMaquina Virtual

Cada Programa debía ser Cada Programa debía ser reescrito y recompiladoreescrito y recompilado para corren en para corren en diferentes plataformas diferentes plataformas

Un programador puede escribir un programa en el lenguaje de la Un programador puede escribir un programa en el lenguaje de la maquina virtual y maquina virtual y correrlo en cualquier computadoracorrerlo en cualquier computadora..

La maquina virtual lee e interpreta el programa y entonces loLa maquina virtual lee e interpreta el programa y entonces lo traducetraduce en el lenguaje del sistema operativo y el hardware. en el lenguaje del sistema operativo y el hardware.

Page 4: Java Y Robocode

Cualidades principales de Cualidades principales de JavaJava

► UniversalidadUniversalidad (transportabilidad, o independencia de (transportabilidad, o independencia de plataforma )plataforma )

► SencillezSencillez (no se trabajan con punteros, y tiene un (no se trabajan con punteros, y tiene un mecanicismo conocido como Garbage Collector)mecanicismo conocido como Garbage Collector)

► Orientación a objetosOrientación a objetos (un programador no puede obviar (un programador no puede obviar la orientación a objetos cuando escribe un programa en la orientación a objetos cuando escribe un programa en Java )Java )

► SeguridadSeguridad (La VM de Java posee un (La VM de Java posee un verificador de los verificador de los bytecodesbytecodes, que antes de ejecutarlos analiza su formato , que antes de ejecutarlos analiza su formato comprobando que no existen punteros en ellos)comprobando que no existen punteros en ellos)

Page 5: Java Y Robocode

Entornos de funcionamientoEntornos de funcionamiento

►En dispositivos móviles y sistemas En dispositivos móviles y sistemas empotrados (J2ME)empotrados (J2ME)

►En el navegador Web (En el navegador Web (AppletsApplets ))►En sistemas de servidor En sistemas de servidor ►En aplicaciones de escritorioEn aplicaciones de escritorio

Page 6: Java Y Robocode

Compilación y EjecuciónCompilación y Ejecución

Page 7: Java Y Robocode

RobocodeRobocode

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.

Robocode se creo para enseñar java, ya sea a adolescente como para graduados que deseen experimentar con inteligencia artificial.

Page 8: Java Y Robocode

Robocode en GeneralRobocode en General

► Desarrollado por Mathew Nelson de IBM Desarrollado por Mathew Nelson de IBM (2001)(2001)

► Escrito en Java.Escrito en Java.► Libre Libre ► Versión Actual: 1.6 Pagina Principal: Versión Actual: 1.6 Pagina Principal:

http://robocode.souceforge.nethttp://robocode.souceforge.net► Un archivo de Instalación (JAR file)Un archivo de Instalación (JAR file)

Page 9: Java Y Robocode

Interfaz Grafica de RobocodeInterfaz Grafica de Robocode

Page 10: Java Y Robocode

Código en RobocodeCó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

Page 11: Java Y Robocode

Partes del RobotPartes 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

Page 12: Java Y Robocode

Conceptos del Mundo de Conceptos del Mundo de Robocode (1)Robocode (1)

►Acciones:Acciones: Movimiento, Giro, Disparo Movimiento, Giro, Disparo►Disparos:Disparos: de distinta velocidad según el de distinta velocidad según el

poder, no se puede dispara continuamentepoder, no se puede dispara continuamente►Sensor:Sensor: Son los ojos del robot, detectan Son los ojos del robot, detectan

velocidad, posición, orientación y energía.velocidad, posición, orientación y energía.►Basado en TurnosBasado en Turnos

Page 13: Java Y Robocode

Conceptos del Mundo de Conceptos del Mundo de Robocode (2)Robocode (2)

► Acontecimientos que pueden ocurrirAcontecimientos que pueden ocurrir::- ver al adversario- ver al adversario- ser alcanzado por una bala- ser alcanzado por una bala

- chocar con un adversario- chocar con un adversario- etc. - etc.

► Los tanques comienzan con una Los tanques comienzan con una determinada cantidad de energía, que se determinada cantidad de energía, que se va perdiendo porva perdiendo por::- recibir un disparo- recibir un disparo- chocar contra algo (otro robot o una - chocar contra algo (otro robot o una pared)pared)- por disparar a balas- por disparar a balas

Page 14: Java Y Robocode

Conceptos del Mundo de Conceptos del Mundo de Robocode (3)Robocode (3)

► Sólo se gana energía de una Sólo se gana energía de una manera: manera:

- Si una bala da a su enemigo - Si una bala da a su enemigo después, algo de energía se le después, algo de energía se le devuelve. devuelve.

► InhabilitadoInhabilitado Si un robot se queda sin energía Si un robot se queda sin energía

debido a su tiroteo, o por moverse, debido a su tiroteo, o por moverse, se inhabilita. se inhabilita.

► MuerteMuerte Si un robot se queda sin energía Si un robot se queda sin energía

por alguna otra razón, (como ser por alguna otra razón, (como ser alcanzado por una bala o por alcanzado por una bala o por chocar contra la pared) entonces, chocar contra la pared) entonces, muere.muere.

Page 15: Java Y Robocode

Batalla 1 vs 1Batalla 1 vs 1

►Class JuniorRobotClass JuniorRobot ►La mas sencilla de todas para crear un robot, cuyo La mas sencilla de todas para crear un robot, cuyo

propósito es enseñar programación básicapropósito es enseñar programación básica►Con sencillas sentencias se puede crear un robot Con sencillas sentencias se puede crear un robot

competitivocompetitivo

Demostración de EjemploDemostración de Ejemplo

Page 16: Java Y Robocode

ClasesClases

► Clase Robot:Clase Robot: Es Mucho mas completa que JuniorRobot y mas sencilla Es Mucho mas completa que JuniorRobot y mas sencilla

que AdvanceRobot, permite la creacion de Robots que AdvanceRobot, permite la creacion de Robots basicos con la posibilidad de implementar estrategias de basicos con la posibilidad de implementar estrategias de combate, y control del usuariocombate, y control del usuario

► Clase AdvanceRobot: Permite la creacion de bots muy inteligentes,

aplicando conceptos de matematica avanzada y técnicas de inteligencia artificial.

Page 17: Java Y Robocode

Combates por EquiposCombates por Equipos► Juego en equipoJuego en equipo► En Robocode un equipo es una colección de robots que trabajan juntos para En Robocode un equipo es una colección de robots que trabajan juntos para

derrotar al enemigo.derrotar al enemigo.► Se extienden de la clase Se extienden de la clase TeamRobotTeamRobot para proporcionar la comunicación entre para proporcionar la comunicación entre

ellos, pues esta clase contiene los métodos para enviar y recibir mensajes 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.robots, de forma similar a la clase Agent de Jade.

► Es posible enviar Es posible enviar mensajes de difusiónmensajes de difusión (broadcast, método (broadcast, método broadcastMessagebroadcastMessage), ),

► Los mensajes directos llegan a un Los mensajes directos llegan a un solo compañero de equiposolo compañero de equipo (y se enviarían con (y se enviarían con el método el método sendMessagesendMessage).).

► La clase TeamRobot también permite comprobar si otro robot es un compañero La clase TeamRobot también permite comprobar si otro robot es un compañero de equipo o no mediante el método de equipo o no mediante el método isTeammateisTeammate y para tratar los mensajes y para tratar los mensajes entrantes tenemos los métodos entrantes tenemos los métodos onMessageReceivedonMessageReceived y y getMessageEventsgetMessageEvents

► Base para Programación basada en Agentes (JADE)Base para Programación basada en Agentes (JADE)

Page 18: Java Y Robocode

Inteligencia ArtificialInteligencia Artificial► Programación genética:Programación genética: Se podría decir que es una forma de programar en la que Se podría decir que es una forma de programar en la que

partimos de programas simples, seleccionamos los mejores o tomamos las mejores 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. 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 Sería utilizar la teoría de la evolución donde el más fuerte sobrevive en programas y en este caso en robots.este caso en robots.

► 1. Representación del genoma.1. Representación del genoma.Como vamos a guardar las características que determinan como se comporta nuestro Como vamos a guardar las características que determinan como se comporta nuestro robot. Para después poder realizar la evolución.robot. Para después poder realizar la evolución.

► 2. Seleccionar el mejor2. Seleccionar el mejorPara seleccionar los mejores robots podemos enfrentarlos con los propios robots que nos 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.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 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 un rival o contrincantes que se comporten de diferente manera. Según el tiempo que se disponga y lo que queramos conseguir.disponga y lo que queramos conseguir.

► 3. Evolución3. EvoluciónUna vez que tenemos a los mejores robots, los que producen mejores resultados Una vez que tenemos a los mejores robots, los que producen mejores resultados tenemos que combinar su genoma.tenemos que combinar su genoma.

Page 19: Java Y Robocode

Proyectos y Futuro de RobocodeProyectos y Futuro de Robocode

Robocode NG:Robocode NG: Modificación hecha solo para Linux, donde se pueden Modificación hecha solo para Linux, donde se pueden realizar todo tipo de cambios a los tanques, como nuevos tipos de realizar todo tipo de cambios a los tanques, como nuevos tipos de disparos, movimientos, skins, etc.disparos, movimientos, skins, etc.

Robocode 3D:Robocode 3D: Basado en Robocode pero con un motor Grafico basado Basado en Robocode pero con un motor Grafico basado en Java 3D.en Java 3D.

Robocode 2:Robocode 2: Posible Segunda version de este juego para un futuro Posible Segunda version de este juego para un futuro cercano, aunque existen dudas por parte de sus creadores en cercano, aunque existen dudas por parte de sus creadores en continuar con el proyecto al liberarse el codigo, varios fueron los continuar con el proyecto al liberarse el codigo, varios fueron los ofrecidos en continuar con el mismo.ofrecidos en continuar con el mismo.

Robocode para C, PHP, Visual Basic y otros lenguajesRobocode para C, PHP, Visual Basic y otros lenguajes:: Exiten varias Exiten varias implementaciones del concepto de Robocode que fueron (Visual) o implementaciones del concepto de Robocode que fueron (Visual) o serán implementadas para la enseñanza de otros lenguajes. serán implementadas para la enseñanza de otros lenguajes.

Page 20: Java Y Robocode

Revolución de la EducaciónRevolución de la Educación

Introducción:Introducción:En este momento se presenta a la Educación En este momento se presenta a la Educación como un carga como un carga para los alumnospara los alumnos que deben capacitarse por obligación y que deben capacitarse por obligación y miedo al futuro, mientras que la misma debería pasar a ser miedo al futuro, mientras que la misma debería pasar a ser un placer por no solo alcanzar ciertos logros intelectuales un placer por no solo alcanzar ciertos logros intelectuales sino por como fueron alcanzadossino por como fueron alcanzados, este nuevo tipo de , este nuevo tipo de herramientas educacionales permiten explotar lo que al niño herramientas educacionales permiten explotar lo que al niño o joven mas le apasiona, como un videojuego, un programa o joven mas le apasiona, como un videojuego, un programa de pintura, un software musical o dar vida a seres de pintura, un software musical o dar vida a seres computacionales en una simple animación, utilizando el arte, computacionales en una simple animación, utilizando el arte, las matemáticas, y las ciencias.las matemáticas, y las ciencias.

Page 21: Java Y Robocode

Herramientas EducativasHerramientas Educativas

►RobocodeRobocode►RobocupRobocup►SqueakSqueak►ScratchScratch

Robocode y las Robocode y las herramientas herramientas presentadas aquí son un presentadas aquí son un mediomedio y no un fin en si y no un fin en si mismo, que deben ser mismo, que deben ser utilizadas para producir utilizadas para producir esta esta revolución revolución educativaeducativa..

Page 22: Java Y Robocode

RobocupRobocup

► Juego de Juego de futbol, basado futbol, basado en la en la programacion programacion de agentes, de agentes, cada alumno cada alumno debe debe programar su programar su equipo de equipo de futbolfutbol

Page 23: Java Y Robocode

ScratchScratch

► Aplicación desarrollado por el MIT, desarrollado en Aplicación desarrollado por el MIT, desarrollado en Squeak Squeak

► Dedicado para niños.Dedicado para niños.► Define un lenguaje de programación con reducida Define un lenguaje de programación con reducida

instrucciones utilizando graficas y colores.instrucciones utilizando graficas y colores.► Permite la enseñanza de conceptos básicos de Permite la enseñanza de conceptos básicos de

Programación y Orientación a Objetos (objetos y Programación y Orientación a Objetos (objetos y eventos)eventos)

Page 24: Java Y Robocode

EjemploEjemplo

Page 25: Java Y Robocode

SqueakSqueak► Es una implementacion Es una implementacion open-sourceopen-source del lenguaje del lenguaje SmalltalkSmalltalk, el cual es:, el cual es:► Extramadamente PortableExtramadamente Portable como en como en SO SO (Linux/Unix, Windows, Mac,Acorn, BeOS) (Linux/Unix, Windows, Mac,Acorn, BeOS)

asi como asi como palms y handheldspalms y handhelds (Winsdows CE, Zaurus, etc) y (Winsdows CE, Zaurus, etc) y consolas de juegos consolas de juegos (Sony Playstation)(Sony Playstation) e inclusive puede utilizarse en hardware sin ningún sistema e inclusive puede utilizarse en hardware sin ningún sistema operativo.operativo.

► Un lugar donde convivan todos Un lugar donde convivan todos los medios de expresiónlos medios de expresión conocidos hasta la fecha conocidos hasta la fecha (texto, video, sonido, música, gráficos 2D, gráficos 3D, TextToSpeech, etc) y (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 que sirva, a su vez, como soporte para el desarrollo de nuevos medios. Esta característica, característica, sumada a lasumada a la capacidad de simulacióncapacidad de simulación, posicionan al Squeak como , posicionan al Squeak como una herramienta muy poderosa.una herramienta muy poderosa.

► Implementado en escuelas primarias de España con éxito orientado para niños Implementado en escuelas primarias de España con éxito orientado para niños pequeños como para realizar desarrollos en si mismopequeños como para realizar desarrollos en si mismo

► Es una plataforma de desarrollo para aplicaciones educativasEs una plataforma de desarrollo para aplicaciones educativas► El Gobierno de Extremadura llamo a licitación para desarrollos El Gobierno de Extremadura llamo a licitación para desarrollos

educativos en Squeak por la suma de educativos en Squeak por la suma de 400.000 Euros400.000 Euros► DemostracionDemostracion

Page 26: Java Y Robocode

Presentacion de ProyectoPresentacion de Proyecto

► A principios de este año el grupo DB2 UG y el grupo de A principios de este año el grupo DB2 UG y el grupo de Robocode presentaron al ministerio de Educacion de la Robocode presentaron al ministerio de Educacion de la Provincia del Chaco un proyecto para la enseñanza de las Provincia del Chaco un proyecto para la enseñanza de las bases de la algoritmia y programacion a alumnos de bases de la algoritmia y programacion a alumnos de escuelas secundarias.escuelas secundarias.

► Utilizando estas herramientas educativas.Utilizando estas herramientas educativas.► Uno de los objetivos era tambien ayudarlos para el ingreso a Uno de los objetivos era tambien ayudarlos para el ingreso a

la Universidad, ya que el mismo posee un modulo de la Universidad, ya que el mismo posee un modulo de Algoritmia.Algoritmia.

► Ejemplo: Universidad GlobantEjemplo: Universidad Globant

Page 27: Java Y Robocode

ConclusiónConclusión

► Hemos Presentado 3 Áreas: Hemos Presentado 3 Áreas: JavaJava, , RobocodeRobocode, , EducaciónEducación

► El Robocode un El Robocode un MedioMedio..► La Educación el Objetivo para el que enseña.La Educación el Objetivo para el que enseña.► Java el Objetivo para el que aprendeJava el Objetivo para el que aprende► Si Si sos educador, esto te va a servirsos educador, esto te va a servir. . Si queres Si queres

aprender a programar, con robocode lo podes aprender a programar, con robocode lo podes lograr,lograr, y si ya y si ya sabes Java u otro lenguajesabes Java u otro lenguaje, existen , existen muchos desarrollos educativos y desafíos muchos desarrollos educativos y desafíos tecnológicos que implementar con el objetivo de tecnológicos que implementar con el objetivo de hacer educación y dar algo a nuestra comunidad.hacer educación y dar algo a nuestra comunidad.