0% encontró este documento útil (0 votos)
272 vistas12 páginas

Tutorial

Este documento explica los pasos para desarrollar una táctica para participar en la javacup, un torneo de fútbol virtual. Se debe implementar la interfaz Tactica, incluyendo métodos para detalles del equipo, posiciones iniciales, y ejecutar comandos. El documento también describe el asistente para crear equipos y jugadores, configurar alineaciones, y generar código de la táctica.
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
272 vistas12 páginas

Tutorial

Este documento explica los pasos para desarrollar una táctica para participar en la javacup, un torneo de fútbol virtual. Se debe implementar la interfaz Tactica, incluyendo métodos para detalles del equipo, posiciones iniciales, y ejecutar comandos. El documento también describe el asistente para crear equipos y jugadores, configurar alineaciones, y generar código de la táctica.
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Tutorial Javacup 2009

INTRODUCCIN Este tutorial explica los pasos a seguir para desarrollar una tctica y as poder participar en la javacup. La javacup es un torneo de ftbol virtual donde cada participante programa en java el comportamiento de un equipo de ftbol. Luego los cdigos de las tcticas enviadas se medirn en un nico torneo compitiendo por los premios ofertados. En esta tercera versin de la javacup se han aadido caractersticas nuevas, tanto en la grfica, como en el audio, y en la lgica del juego. Pese a esto, se desea mantener la estructura bsica original de las javacup anteriores. Para desarrollar una tctica solo se debe escribir una clase que implemente la interfaz Tactica. Esto quiere decir que deberemos implementar todos los mtodos definidos en dicha interfaz. Los mtodos a implementar son lo siguientes: 1) 2) 3) 4) public public public public TacticaDetalle getDetalle (); Posicion [] getPosicionSaca (); Posicion [] getPosicionRecibe (); List<Comando> ejecutar (Situacin partido sp);

El primer mtodo denominado getDetalle retorna un objeto tipo TacticaDetalle. Este objeto detalla caractersticas de la tctica como son: el nombre del equipo, el pas, el nombre del entrenador, los colores y estilo de la vestimenta (oficial y alternativa); y para cada jugador su nombre, nmero, colores, si es portero, velocidad, fuerza de remate y precisin. Todas estas caractersticas son inmutables durante un partido, y es por eso que getDetalle solo es invocada una vez al principio de cada partido. El segundo y tercer mtodo especifican la ubicacin que deben tomar los jugadores cada vez que se inicie el juego y despus de cada gol. 2) para cuando se inicie sacando y 3) para cuando se inicie recibiendo. El objeto a retornar es un array de objetos Posicion de tamao 11.

La posicin es un aspecto que cambia respecto a las javacup anteriores. Ahora se usara double en vez de int. Esto es para

eliminar alguna complejidad que exista en la estimacin de trayectorias. ASISTENTE PARA LA CREACIN DE EQUIPOS Con el fin de facilitar la creacin de tcticas se ha desarrollado una aplicacin que ayuda en la generacin de cdigo para especificar el objeto TacticaDetalle, para administrar alineaciones, y para simular remates. A continuacin describiremos como usarla. Para ejecutar el asistente debes ubicar en el rbol del proyecto la clase [Link], despus debes presionar el botn derecho del mouse, y luego, para eclipse seleccionar el men (Run as) -> (Java Aplication), y para netbeans seleccionar el men (Ejecutar Archivo). El asistente consta de tres pestaas: Equipo, Jugadores y Alineaciones y simulacin de Remate.

En la primera pestaa, se definen caractersticas descriptivas y de visualizacin del equipo. Los datos obligatorios a ingresar son el nombre del equipo, el pas y el nombre del entrenador. El botn Al Azar te permitir generar vestimentas al azar.

En la segunda pestaa se definen las caractersticas de los jugadores. Estn las caractersticas de descripcin (nombre y nmero), las visuales (color piel, color pelo y si es portero) y las aptitudes (velocidad, remate y error). Con respecto a las aptitudes de los jugadores y a diferencia con las javacup anteriores, se ha agregado el factor de error como una aptitud configurable para cada jugador. Cada aptitud posee un valor mnimo y otro mximo, el valor mnimo esta a la izquierda y equivale a 0 crdito usado, por otro lado, el valor mximo esta a la derecha y equivale a 1 crdito usado. La manera de configurar esto es distribuyendo a gusto los crditos disponibles entre los jugadores y sus aptitudes. Las unidades en las aptitudes son: [metros x iteracin] para la velocidad del jugador y para la velocidad mxima de remate; el error se refiere a un error angular expresado en porcentaje. Por ejemplo un 15% de error significa un 15% sobre 180, es decir 180*0.15, que equivale a 27 grados. Ahora si el remate esta dirigido hacia los 90, el ngulo final puede variar entre 90-27/2 y 90-27/2, sea entre 76.5 y 103.5.

Las alineaciones se configuran en la tercera pestaa. Recordemos que la interfaz Tactica, nos exige definir 2 alineaciones, una para cuando se inicia sacando y otra para cuando se inicia recibiendo. En el campo de juego que se muestra en la figura se pueden ubicar los jugadores y as configurar alineaciones. Se tienen 3 tipos de alineaciones: un tipo de alineacin para ser usada durante el juego, otro tipo para cuando se inicie sacando, y otro cuando se inicie recibiendo. El tipo de alineacin se configura en el segundo comboBox. El primer comboBox mantiene la lista de alineaciones guardadas, los botones siguientes sirven para crear una nueva alineacin, para eliminar la alineacin seleccionada y para subir o bajar una alineacin. Los controles de la zona derecha nos permiten simular remates, indicando la fuerza (0-1), el ngulo de remate (0-360) y el ngulo vertical (0-Constantes.ANGULO_VERTICAL_MAX ). Luego con el botn > se simula el remate indicando las alturas del baln segn la leyenda de colores ubicada en la zona inferior derecha.

Por defecto al iniciar la aplicacin se dispone de 6 alineaciones: 1 para iniciar sacando, 1 para iniciar recibiendo y 4 alineaciones para usarlas durante la ejecucin de partidos.

Con el men podemos abrir una tctica, guardar una tctica, generar cdigo y validar una tctica. Para generar cdigo se tienen diversas alternativas: 1. La primera alternativa genera el cdigo de la clase que implementa la interfaz Tactica y como clase interna se incluye la clase que implementa TacticaDetalle. 2. La segunda opcin solo genera la clase que implementa Tactica. 3. La tercera opcin solo genera la clase que implementa TacticaDetalle. 4. la cuarta alternativa solo nos muestra el cdigo de las alineaciones. La opcin de validacin nos muestra errores que podemos estar cometiendo, como por ejemplo que no estn definidos nombres para el equipo o entrenador, o que dos jugadores tengan el mismo nmero, o que se ocupen mas de los crditos disponibles, etc. FRAMEWORK BSICO El framework se compone de varios paquetes, siendo el paquete [Link] el ms importante. Esta es una lista de las clases principales ubicadas dicho paquete: Comando: Clase abstracta, que representa un comando que puede ejecutar un jugador. ComandoIrA: Extiende de Comando e indica a un jugador hacia donde dirigirse.

ComandoGolpearBalon: Extiende de Comando e indica cmo un jugador puede rematar. Constantes: Clase usada para guardar todas las constantes. Partido: Clase usada para ejecutar partidos, si se tienen dudas de cmo se ejecuta un comando, o cmo se mueve el baln, etc. es necesario mirar el cdigo de esta clase, en especial el mtodo iterarJuego(), y dentro de este mtodo la ejecucin del mtodo ejecutarComandos(). Posicin: coordenadas espaciales con tipo primitivo double. SituacionPartido: Retorna en que estado se encuentra el partido. Tactica: La interfaz que debers implementar. TacticaDetalle: La interfaz que genera el asistente. LGICA DE UNA TCTICA public List<Comando> ejecutar(SituacionPartido sp); En la implementacin del mtodo ejecutar de la interfaz Tactica, es donde se programa la lgica que modelar el comportamiento de tu equipo. ejecutar recibe como parmetro un objeto SituacionPartido. Este objeto viene a reemplazar el antiguo SituacinJugadores, dado que contiene la informacin del estado en que se encuentra el partido, por ahora esta es la informacin que nos provee: double alturaBalon() Retorna la altura del baln. Posicion balon() Retorna la posicin del baln. JugadorDetalle[] detalleJugadoresRivales() Retorna el detalle (nombre, numero, velocidad, remate y precisin) de los jugadores rivales. JugadorDetalle[] detalleJugadores() Retorna el detalle (nombre, numero, velocidad, remate y precisin) de mis jugadores. int golesPropios() Retorna la cantidad de goles convertidos. int golesRival() Retorna la cantidad de goles convertidos por el rival.

int iteracion() Retorna el numero de iteraciones cursadas en el partido. int[] iteracionesParaRematar() Indica cuantas iteraciones deben pasar para que mis jugadores puedan volver a rematar. int[] iteracionesParaRematarRival() Indica cuantas iteraciones deben pasar para que los jugadores rivales puedan volver a rematar. Posicion[] misJugadores() Array de posiciones de mis jugadores. int[] puedenRematar() Array de ndices de jugadores mos que estn en condicin de rematar. Posicion[] rivales() Array de posiciones de rivales. int[] puedenRematarRival() Array de ndices de jugadores rivales que estn en condicin de rematar. boolean sacaRival() Retorna true si el rival realizara un saque, hasta que el rival no saque, mis jugadores se apartan de la posicin de saque y no corre el tiempo. boolean saco() Retorna true si tengo que realizar un saque, hasta que yo no saque, el rival se aparta de la posicin de saque y no corre el tiempo. Estos mtodos nos entregan informacin til para tomar decisiones, y as poder indicar qu acciones debern realizar los jugadores. Estas acciones sern la lista de comandos que retornara el mtodo ejecutar. Slo se tienen dos comandos disponibles; ComandoIrA y ComandoGolpearBalon. Algunos Ejemplos de uso: new ComandoIrA(0,new Posicin(0,0)); /*Se le indica al jugador de ndice 0 que debe dirigirse a la posicin de coordenadas 0,0. Los ndices de los jugadores van de 0 hasta 10. La posicin 0,0 corresponde al centro del campo de juego.*/ new ComandoGolpearBalon(6, new Posicin(60,30), 1, true); /*Se le indica al jugador de ndice 6 que remate con direccin destino a las coordenadas (60;30), con fuerza 1, y que el remate sea por alto. La fuerza que corresponde al tercer parmetro y acepta valores double entre 0 y 1, cuando sea 1 el remate se realizara a la velocidad mxima que puede rematar el jugador de ndice 6. El ultimo parmetro al ser true indica que el remate se realizara por alto. (El

remate por alto se realiza con un ngulo vertical igual a Constantes.ANGULO_VERTICAL */

new ComandoGolpearBalon(6, 15, 1, true); /* Otra forma de indicar el destino es informar directamente cual es ngulo de remate, en este caso es 15 */ new ComandoGolpearBalon(6, 1.5, 1, 25); /* Otra forma es indicar explcitamente el ngulo vertical, 25 grados en este caso. El ngulo vertical puede estar entre 0 y Constantes.ANGULO_VERTICAL_MAX. */ new ComandoGolpearBalon(6); /* Este constructor se usa para simular la accin de avanzar con el baln.*/ DATOS TILES SOBRE LA LOGICA DE UN PARTIDO En cada partido se ejecutaran n iteraciones, en cada iteracin se enviara a las tcticas la situacin del partido, y seguido a esto las tcticas retornaran la lista de los comandos que especifiquen el mtodo ejecutar. De acuerdo a esto se modificar el estado del partido para la siguiente iteracin. En especifico se ejecutarn [Link] iteraciones. Un jugador slo puede ir a una direccin y slo puede rematar de una forma durante la iteracin. Es decir, se ejecutar slo un comando ir a y slo un comando golpear baln para cada jugador en cada iteracin. Cuando ocurra que en una misma iteracin se indique ms de un ComandoIrA para el mismo jugador, los primeros comandos se ignorarn y slo se considerar el ltimo. Anlogo sucede con el comando ComandoGolpearBalon. Es importante comprender que todos los comandos actan sobre el mismo instante de tiempo. Por esto no es valido pensar que primero ejecuto un comando IrA para acercarme al baln y luego que estoy cerca ejecuto golpear el baln. Un jugador est en condiciones de rematar si se encuentra a una distancia menor o igual al baln que Constantes.DISTANCIA_CONTROL_BALON y adems que el baln se encuentre a una altura menor o igual que Constantes.ALTURA_CONTROL_BALON.

Dentro de los jugadores propios y rivales que estn en condiciones de rematar se seleccionar uno al azar y slo es ese quien rematar. Al remate se le aplicara un error angular que depender de la precisin del jugador que rematara. Para evitar excesivos rebotes, un jugador que ya remat, slo podr volver a rematar en Constantes.ITERACIONES_GOLPEAR_BALON iteraciones despus. Cuando el baln se desliza sobre el csped, en cada iteracin se reduce su velocidad en un factor igual a Constantes.FACTOR_DISMINUCION_VEL_BALON_SUELO. Cada vez que el baln sale del campo de juego, deber sacar el equipo rival del que lanz el baln, en la posicin donde sali el baln. Si un equipo lanza el baln por detrs de su propio arco se produce un tiro de esquina, que no es ms que un saque normal pero en la posicin de corner. Durante las iteraciones entre que sale el baln y cuando se realiza el saque el tiempo no avanzar, y los jugadores del equipo que no saca se alejaran en un radio Constantes.DISTANCIA_SAQUE desde la posicin de saque. Sin embargo, si pasa un tiempo excesivo y no se realiza el saque, se multara al equipo que no saco, permitiendo sacar al otro equipo. Cuando se remata por alto, cada iteracin que pasa la velocidad en el eje z es afectada por la gravedad (Contanstes.G). Adems la velocidad horizontal es reducida en Constantes.FACTOR_REDUCCION_VELOCIDAD_POR_REMATE_ALTO. Para clarificara el movimiento del baln, en la aplicacin asistente se pueden simular remates.

A continuacin se muestra un cdigo ejemplo de implementacin del mtodo ejecutar:

VISOR DE PARTIDOS

Para Ejecutar el visor de partidos o programa principal debes ubicar en el rbol del proyecto la clase [Link], despus debes presionar el botn derecho del mouse, y luego, para eclipse seleccionar el men (Run as) -> (Java Aplication), y para netbeans seleccionar el men (Ejecutar Archivo). A continuacin se detallan los pasos para agregar tcticas al visor y visualizar los partidos. 1. Presionar el botn Configurar Directorios, e ingresar los directorios donde se ubican las tcticas compiladas. (En netbeans es DirProyecto/build/classes, y en eclipse es DirProyecto/bin). 2. El visor actualizar la lista de tcticas cargadas 3. Se selecciona una tctica y se le asigna como local, anlogo se selecciona otra y se le asigna como visita.

4. Se puede configurar la dimensin de la pantalla, el tipo de visor y varios parmetros ms. 5. Al presionar Ejecutar Partido se iniciar el juego. Durante el juego al presionar + y se activa el zoom. Al presionar F1 se activa o desactiva el estadio Al presionar F2 se activa o desactiva el entorno Al presionar F3 muestra los frames por segundo Al presiona F4 activa o desactiva los nmeros y nombres.

También podría gustarte