Buscar
Social
Ofertas laborales ES

Foro de la JavaCup > Reducir tiempo de ejecucion en partido guardado

Buenas compañeros!Me gustaría saber si sería posible ejecutar un partido más rápido y con menos iteraciones y que ese partido guardado luego se reproduzca a una velocidad normal. Me explico, un partido son 3600 iteraciones, entonces si lo bajase a 600 (6 veces menos) y multiplicase la velocidad de los jugadores por 6, en teoría sería lo mismo (o eso creo). El problema viene si grabo un partido a esa velocidad, ¿cómo podría luego reproducirlo a una velocidad más lenta? Gracias!

julio 16, 2012 | Unregistered CommenterrebeN

Hola, RebeN, creo que es posible hacer lo que quieres, pero teniendo en cuenta que sería como si a una película le eliminas algunos fotogramas. Es decir que depende del número de fotogramas tal vez se vea un poco a saltos, además de que si el jugador tiene la posibilidad de alcanzar el balón en una iteracción de las que se eliminan el jugador no recuperará dicho balón. Con lo cual los partidos no serían una copia fiel de los que se ejecuten con todas sus iteracciones.

En cualquier caso si quieres probar yo realizaría los siguientes cambios:

Paquete org.javahispano.javacup.model.engine;

Clase Partido.java

Lineas 657-659:

iteracionReal++;
if (!sacaLocal && !sacaVisita) {
iteracion++;

por:

iteracionReal += 6;
if (!sacaLocal && !sacaVisita) {
iteracion += 6;

de este modo ejecutamos las iteraciones de 6 en 6.

Clase PartidoGuardado.java

Lineas 51-67:

/**Inidica la cantidad de iteraciones del partido*/
public int getIterciones() {
return partido.size();
}

/**Estable la iteracion actual*/
public void setTiempo(int tiempo) {
if (tiempo < 0) {
tiempo = 0;
}
if (tiempo >= partido.size()) {
tiempo = partido.size() - 1;
}
this.tiempo = tiempo;
iteracion = partido.get((int) tiempo);
}

por:

/**Inidica la cantidad de iteraciones del partido*/
public int getIterciones() {
return partido.size()*6;
}

/**Estable la iteracion actual*/
public void setTiempo(int tiempo) {
if (tiempo < 0) {
tiempo = 0;
}
if (tiempo >= partido.size()) {
tiempo = partido.size() - 1;
}
this.tiempo = tiempo;
iteracion = partido.get((int) tiempo) - (tiempo % 6);
}

con este código repetimos la misma iteración 6 veces y aumentamos el numero de iteraciones del partido 6 veces.

Creo que con esto te debería funcionar. No he podido pararme a comprobarlo, pero si te da algún problema me lo dices y ya vemos como se puede solucionar.

Esta modificación la veo más sencilla que la opción que planteabas de aumentar la velocidad de los jugadores, pues habría que modificar también el calculo de la trayectoria del balón.

Saludos

julio 18, 2012 | Unregistered CommenterVictor

Acabo de darme cuenta de que la última modificación que te indique ayer no es correcta en lugar de

iteracion = partido.get((int) tiempo) - (tiempo % 6);

Deberia ser

iteracion = Math.round( partido.get((int) tiempo) / 6 );

julio 19, 2012 | Unregistered CommenterVictor