jueves, 19 de marzo de 2009

Programita para organizar pachangas

En la actualización de hoy os enseñaré un pequeño programa (por consola) en Java que creé para organizar pachangas de fútbol 5.

La idea del programa es simple. Existirán unos ficheros en los que se puntuarán a los jugadores. (Del formato hablaremos luego). En teoría, cuanta más gente mande ficheros más reales serán las puntuaciones. De estos ficheros se hace una media por jugador y se sacará un ranking ordenado por puntuación así como se generarán equipos compensados.

Respecto a los ficheros enviados existen dos buenas opciones a considerar, la primera es que después de cada partido se actualice el fichero con las notas, la segunda es que se mande un nuevo fichero con las valoraciones tras cada partido. La segunda opción es, en mi opinión, mejor, ya que la primera puede ser bastante variable de un partido a otro; en cambio, con ésta, a largo plazo podría ocurrir que una persona inicialmente mala mejore mucho y por tener muchas notas como "malo" podría tener una nota mediocre a pesar de ser ahora bueno. Entonces estos ficheros podrían tener una duración de 5 partidos o algo así.

El formato del fichero es muy simple. En cada línea hay un jugador con su valoración. Primero se pondrá el nombre del jugador, luego se utilizará un tabulador y por último la nota, que puede ser entera o decimal separada por un punto. Hay que tener en cuenta que todo el mundo debe nombrar a los jugadores por igual, es decir si hay un jugador que se llama Pablo pero que le llaman Popi y en algunas valoraciones sale como Pablo y otras como Popi, el programa lo contará como 2 personas diferentes. Por esto sería bueno tener una plantilla con los nombres y enviarla antes a todo aquel que vaya a hacer valoraciones. Otro aspecto a tener en cuenta es que da igual el número de personas que se valore, si por ejemplo, siguiendo con lo de la plantilla anterior, no sabes como juega alguien, pues directamente borrar la línea y ya está. Así como también es posible valorar a 10 personas ya que puede que no siempre vaya la misma gente.

Generar equipos compensados:
El programa genera todas los equipos posibles, suma las puntuaciones de todos sus integrantes y saca por pantalla todos aquellos que se distancien del equipo perfectamente compensado en la cantidad que nosotros elijamos. Además podremos elegir algunas condiciones como que por ejemplo ciertos jugadores jueguen juntos o no.

Variables a modificar:
  1. String[] jugadoresPartido: Meteremos aquí los 10 nombres de los juugadores que vaya a jugar el partido.
  2. String[]jugadoresEnEquipo: Meteremos aquí los jugadores que queremos que estén en los equipos que se generan.
  3. String[]jugadoresNoEnEquipo: Meteremos aquí los jugadores que NO queremos que estén en los equipos que se generan. Por ejemplo, yo(Popi) quiero jugar en el equipo de Juan y ser contra Pedro, entonces pondré jugadoresEnEquipo={"Popi","Juan"}; y jugadoresNoEnEquipo={"Pedro"};
  4. private boolean equipoMasEqulibrado: Se pondrá a True si se quiere sacar solamente el equipo más equlibrado, por contra se pondrá a False si se quiere que se saquen todos los equipos cuya diferencia respecto al equipo perfectamente equlibrado sea menor que la variable explicada a continuación.
  5. float diferenciaRespectoEquipoPerfectamenteEqulibrado: será la diferencia máxima que habrá entre los equipos que se muestren y el equipo perfectamente equilibrado. Normalmente serán sólo unas pocas centésimas.
  6. String directorioBase: será la dirección donde se pondrán los ficheros con las puntuaciones. En el método cargarJugadores() se pondrá ya la dirección final de cada fichero.
  7. boolean pruebas: se pondrá a false si no quieres que se saquen por pantalla unos cuantos datos que muestran el seguimiento de la ejecución.
Y no hay mucho más la verdad, el programa lo hice en una mañana y la verdad que no son más que 300 líneas y hechas bastante aprisa y corriendo. No hay ni comentarios y seguramente haya código ineficiente y no sea todo lo mantenible que debiera, pero a veces para programas que sabes que no se van a usar casi, estas propiedades no son del todo obligatorias, aunque siempre es bueno que cualquiera programa que las cumpla.

Sin más adjunto los src y un fichero de puntuación de ejemplo:
Ficheros

2 comentarios:

  1. Tu programa en Java ha demostrado sobradamente lo que se puede esperar de él. La más absoluta nulidad a la hora de hacer los equipos.Jaajajajajaja

    Muahjajajajajaja.

    Emilio

    ResponderEliminar
  2. Pues las 2 veces que utilizamos los equipos que eligió el programa, el partido acabó con victoria por la mínima :P

    ResponderEliminar