Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #13  
Antiguo 28-02-2009
fidel fidel is offline
Miembro
 
Registrado: mar 2005
Posts: 381
Poder: 22
fidel Va por buen camino
Tengo hecho hace tiempo para mí algo parecido, es para torneos internos en las horas de recreo del instituto, lo que pasa es que mis condiciones son algo diferentes de lo que tu necesitas. Yo tengo varias categorías (grupos), y solo juega un equipo de cada categoría por día, siempre que el nº de campos lo permita, si no hay que ir turnandose y descansando algun grupo algún día.

Alguna idea
-----------

- Supongo que tienes un solo grupo de equipos (también se puede hacer con más)
- Primero se hacen los cruces a una vuelta.
- Si se necesitan una segunda vuelta simplemente se copian los mismos partidos invirtiendo el orden de los equipos.
- Luego se distribuye en cada fecha el máximo nº de partidos posibles con arreglo a los horarios y campos disponibles.

Ejemplo con 4 equipos (es válido para cualquier nº de equipos)
Para hacer los cruces de la primera vuelta, es muy simple, 1-2, 1-3, 1-4, 2-3, 2-4, 3-4, pero esto hace que un equipo juegue todos los partidos seguidos y luego este ocioso, o esta ocioso y luego tiene todos seguidos.

Para hacer los cruces de forma que cada equipo juegue de una manera espaciada durante todo el torneo podemos hacerloa así:

- Supongamos que tienes una tabla EQUIPOS con 4 registros, cada registro tiene un solo campo con el nombre de cada equipo: A, B, C, D
- Creas dos tablas auxiliares AUXEQUIPOS, AUXPARTIDOS
- En la tabla AUXEQUIPOS añades todos los registros de la tabla equipos repetidos tantas veces menos una como equipos hay, en este caso repetidos 3 veces (los 4 equipos repetidos 3 veces) y tendrás en AUXEQUIPOS 12 registros que serán:

A
B
C
D
A
B
C
D
A
B
C
D

Ahora hacemos los partidos:

- Coges en una variable el primer equipo de AUXEQUIPOS que es A como equipo local y lo borras de la tabla.
- Coges en una variable el primer equipo de la tabla (ahora será B) como equipo visitente y guardas en una variable el partido A-B , miras en la tabla AUXPARTIDOS (con locate) si este partido ya existe

... si no existe añades un registro y lo pones como partido y borras el equipo visitante (B en este caso), de AUXEQUIPOS.

... si existe avanzas un registro en AUXEQUIPOS y coges el equipo como visitante y haces el partido y vuelves a mirar si este partido ya existe

Con esto ya tenemos el primer partido y habrán desaparecido los dos equipos que intervienen de la tabla AUXEQUIPOS.

- se sigue haciendo lo mismo para los demás partidos, hasta que la tabla AUXEQUIPOS esté vacia, y en AUXPARTIDOS tendremos todos distribuidos racionalmente:

A-B
C-D
A-C
B-D
A-D
B-C

El equipo a juagará el 1º, 3º y 5º partido, el B el 1º, 4º y 6º, etc.

Si necesitas una segunda vuelta, simplemente añade otros seis registros con los mismos partidos pero invertidos los equipos

A-B
C-D
A-C
B-D
A-D
B-C
B-A
D-C
C-A
D-B
D-A
C-B

Ahora tendrás que asignar fechas a estos partidos que hay que jugar, no es dificil, hazlo en un papel y sigue esos pasos pero programando.

Esto es valido para cuando juegan siempre en campos neutrales. Si es a doble vuelta y cada equipo tiene su campo propio, en el que juega cuando es local, habría que mejorar este sistema.

Quizás sea un poco complicado de entender, pero funciona. Cualquier aclaración sigues preguntando.

Última edición por fidel fecha: 28-02-2009 a las 18:56:51.
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Algún algoritmo para calcular el último día de un mes David OOP 3 06-03-2008 17:13:01
problemas para ejecutar juegos pda lialias Varios 7 20-02-2008 18:18:51
Algoritmo para comparacion de cadenas danilo_candales Varios 8 17-11-2007 17:23:14
Librería para hacer juegos con Pascal Ñuño Martínez Varios 21 28-09-2007 13:13:57
Algoritmo para calcular el BPM turminator Varios 0 29-05-2007 00:19:49


La franja horaria es GMT +2. Ahora son las 06:51:52.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi