...
Een meerkamp competitie wordt over meerdere avonden gespeeld. De groepen binnen de meerkampen zijn meestal gevuld met 4 spelers maar dit kunnen er ook meer zijn. Als er binnen de meerkamp competitie 5 spelers of een andere oneven getal zitten dan moet elke speler één keer een ronde uitzitten. Voor het uitzitten van een ronde ontvangt de speler een punt net als bij een overwinning alleen wordt de rating van de speler niet bijgewerkt. Bij een dubbelronde meerkamp zou dat natuurlijk twee keer per speler zijn.
Hoe krijgen wij dit werkend in onze Java applicatie?
Het meerkampindelingssysteem is een redelijk simpel systeem. Bij een enkelrondige meerkamp met 4 spelers speelt elke speler 3 wedstrijden om tegen iedereen te hebben gespeeld. Bij een dubbelrondige meerkamp met 4 spelers speelt elke speler 6 wedstrijden om tegen iedereen te hebben gespeeld.
...
.
Hoe krijgen wij dit werkend in onze Java applicatie?
Het meerkampindelingssysteem is een redelijk simpel systeem. Bij een enkelrondige meerkamp met 4 spelers speelt elke speler 3 wedstrijden om tegen iedereen te hebben gespeeld. Bij een dubbelrondige meerkamp met 4 spelers speelt elke speler 6 wedstrijden om tegen iedereen te hebben gespeeld.
Voor dit project zal de meerkamp altijd dubbelrondig worden gespeeld. De functie die verantwoordelijk zal zijn voor het aanmaken van de indelingen voor de meerkampen, hoeft alleen te controleren of het aantal spelers oneven is. Als dit is voltooid, kan de functie alle rondes bepalen.
Het belangrijkste is dat elke speler twee keer tegen elke andere speler speelt binnen de gemaakte indeling. Bij een oneven aantal spelers moet er elke ronde een speler zijn die een punt krijgt voor zijn oneven wedstrijd, terwijl dit niks doet voor de rating van de speler.
Zwitsers
Zwitsers is het meest complexe indelingsysteem dat voor door Klukkluk afgehandeld moet kunnen worden. Bij zwitsers is er maar een groep van spelers, en het doel van zwitsers is om mensen in deze groep nooit 2 keer tegen elkaar te laten spelen, en spelers met hogere scores tegen spelers met vergelijkbare sccores te matchen. Een toernooi dat ingedeelt ingedeeld wordt met een zwitserse indeling vind plaats over meerdere sessies, tussen deze sessies moeten de resultaten van de vorige sessie ingevoerd zijn, want deze zijn relevant voor het genereren van een indeling van de volgende ronde.
Voor alle rondes worden de spelers gesorteerd van hoog naar laag. Hierbij wordt eerst gekeken naar score binnen de wedstrijd, daarna naar weerstandspunten, daarna naar SB-punten en daarna een willekeurig nummer. Het aantal rondes dat met zwitsers gespeeld kan worden is gelimiteerd, gezien spelers niet meerdere keren tegen elkaar mogen spelen, maar kan verschillen. Een toernooi met 20 spelers kan maximaal 10 rondes hebben, maar er kunnen bijvoorbeeld ook maar 4 of 6 of 7 rondes in totaal gespeeld worden. Je kan het aantal rondes dus instellen in Klukkluk bij het aanmaken van de competitie.
...
Als een speler uit een puntengroep naar beneden schuift mag deze speler dat niet weer in de volgende ronde krijgenniet weer naar beneden schuiven. Ditzelfde geld voor de persoon met wie deze wordt ingedeeld. Dit heet een float. Een persoon met een float mag niet dezelfde float 2 keer krijgen.
...
Het aantal rondes moet niet hoger worden dan het vooraf bepaalde maximaal aantal rondes.
twee Twee spelers mogen niet twee keer tegen elkaar spelen.
een Een speler mag niet 2 keer in een toernooi een Bye krijgen.
een Een speler mag niet drie keer achter elkaar dezelfde kleur hebben.
een Een speler mag niet een kleursaldo hebben van minder dan -2 of meer dan 2.
...
JaVaFo werkt met het FIDE toernooi report file protocol (trf). En kan aangeroepen worden in een programma als een utility class. Dit kan met streams gedaan worden voor logging redenen, of met Strings, wat voor ons beter is (//TODO AGP notatie of hoe het ook heet idk) https://www.fide.com/FIDE/handbook/C04Annex2_TRF16.pdf
Dit programma kan via een adapter pattern toegevoegd worden aan KlukKlukKlukkluk, zodat de code niet hard gekoppelt gekoppeld is aan JaVaFo. Elke keer dat het aangeroepen wordt moeten alle entiteiten namelijk naar een string vertaald worden.
...
10 Spelers 5 Ronden
Schema 1; het oorspronkelijke met voorgestelde aanpassingen in wit/zwart verdelinghuidige in Rokade
P1 | P2 | P3 | P4 | P5 | ||||
R1 | 1-10 | 2-9-2 | 3-86 | 74-47 | 65-58 | |||
R2 | 10-6 | 7-51 | 8-42 | 9-3 | 10-4 | 6-51-2 | ||
R3 | 5-1 | 2-104 | 3-18 | 10-6 | 74-9 | |||
R4 | 51-83 | 6-72 | R4 | 104-75 | 8-67 | 9-510 | ||
R5 | 1-2 | 42-3 | R5 | 3-10 | 4-2 | 5-19-5 | 6-97 | 78-810 |
Schema 1; het huidige in Rokade2, nieuw
P1 | P2 | P3 | P4 | P5 | ||
R1 | 9-1-10 | 2-96 | 10-3-6 | 4-8 | 7-5-8 | |
R2 | 71-16 | 85-2 | 93-38 | 107-4 | 610-59 | |
R3 | 53-1 | 2-4 | 38-85 | 6-10 | 9-67-9 | |
R4 | 1-4 | 36-2 | 410-5 | 86-7 | 8-9-10 | |
R5 | 5-1 | 2-29 | 47-3 | 9-5 | 6-74-10 | 8-106 |
Schema 23, nieuw
P1 | P2 | P3 | P4 | P5 | |
R1 | 91-18 | 2-610 | 107-3 | 9-4-8 | 75-56 |
R2 | 7-1-6 | 59-2 | 3-8 | 74-45 | 10-96 |
R3 | 1-4 | 3-12-4 | 8-5 | 6-9 | 109-7 |
R4 | 2-1 | 6-3 | 43-210 | 10-56-7 | 8-9 |
R5 | 51-16 | 4-2-9 | 75-3 | 49-107 | 8-610 |
Schema 34, nieuw
P1 | P2 | P3 | P4 | P5 | ||
R1 | 9-1-8 | 2-106 | 73-38 | 94-47 | 10-5-6 | |
R2 | 1-7 | 2-15 | 96-23 | 310-84-510 | 8-69 | |
R3 | 4-1-4 | 3-2 | 85-56 | 67-98 | 10-79 | |
R4 | 1-3 | 2-14 | 68-35 | 46-10 | 5-78-9 | |
R5 | 5-1 | 9-624 | 3-210 | 54-38 | 96-7 | 8-10 |
12 Spelers 5 ronden
Schema 1; het huidige in RokadeSchema 4, nieuw
P1 | P2 | P3 | P4 | P5 | P6 | ||
R1 | 912-1 | 11-2 | 7-63 | 34-9 | 84-75 | 10-56 | |
R2 | 1-7 | 2-510 | 63-311 | 105-4 | 86-12 | 9-8 | |
R3 | 41-18 | 36-2 | 9-3 | 510-64 | 75-812 | 1011-97 | |
R4 | 3-1-3 | 2-5 | 4-6 | 7-9 | 8-511 | 612-10 | 7-9 |
R5 | 5-19-2 | 3-4 | 5-106 | 47-8 | 69-710 | 11-12 |
...
Schema 12, het oorpronkelijkenieuw
P1 | P2 | P3 | P4 | P5 | P6 | ||
R1 | 101-111 | 612-212 | 3-39 | 5-4 | 6-8 | 9-5 | 11-77-10 |
R2 | 8-1-9 | 2-86 | 711-3 | 4-7 | 12-5 | 59-1110-6 | |
R3 | 71-16 | 10-2-10 | 3-117 | 58-4 | 125-69 | 911-812 | |
R4 | 42-1 | 4-3 | 7-25 | 59-6 | 8-712 | 1210-911-10 | |
R5 | 1-5 | 3-2-5 | 610-4 | 76-912 | 811-117 | 109-128 |
Schema 1; het huidige in Rokade3, nieuw
P1 | P2 | P3 | P4 | P5 | P6 | |
R1 | 1210-1 | 2-11-2 | 79-3 | 4-912 | 87-5 | 106-68 |
R2 | 1-78 | 9-2-10 | 3-117 | 510-4 | 611-5 | 129-86 |
R3 | 5-1-8 | 64-2 | 93-36 | 107-411 | 58-12 | 119-710 |
R4 | 31-14 | 2-3 | 5-12 | 46-69 | 10-7-9 | 8-1112-10 |
R5 | 6-1 | 2-25 | 3-8 | 45-67 | 712-89-10 | 11-1210 |
Schema 24, nieuw
P1 | P2 | P3 | P4 | P5 | P6 | |
R1 | 1-1110 | 2-12-2 | 3-11 | 9-4 | 8-5-4 | 6-87-10 |
R2 | 8-1 | 11-2-6 | 1110-3 | 4-7 | 5-12-5 | 9-106 |
R3 | 7-1 | 2-5 | 610-23 | 34-78-4 | 59-911 | 1110-12 |
R4 | 1-2 | 3-14-3 | 75-59 | 96-610 | 812-127 | 1011-118 |
R5 | 1-5 | 3-2 | 104-46 | 67-9 | 12-8 | 11-7109- |
8 Spelers 5 ronden
Schema 31, nieuwhet huidige
P1 | P2 | P3 | P4 | P5 | P6 | ||||
R1 | 1-8 | R1 | 10-1 | 2-117 | 93-35 | 4-12 | 7-5 | 6-8 | |
R2 | 5-1-8 | 96-2 | 7-3-7 | 108-4 | 11-5 | 12-6 | |||
R3 | 54-1 | 43-23 | 8-65 | 7-116 | |||||
R4 | 81-123 | 9-10 | R4 | 1-2-4 | 2-3 | 5-127 | 6-9 | 10-7 | 8-11 |
R5 | 62-12 | 3-6 | 5-4 | 3-84-7 | 12-9 | 11-10 |
Schema 42, nieuw
P1 | P2 | P3 | P4 | P5 | P6 | |
R1 | 6-1 | 5-102 | 27-123-11 | 94-48-5 | 6-7 | |
R2 | 81-17 | 112-28 | 10-34-76 | 5-124 | 9-6 | |
R3 | 71-14 | 2-56-3 | 4-89-115 | 106-127 | ||
R4 | 1-2 | 5-3 | -45-96-10 | 128-7 | 11-8 | |
R5 | 1-5 | 3-21 | 4-62 | 7-95 | 126-8 | 11-10 |
8 Spelers 5 ronden
Schema 1, het huidigeSchema 3, nieuw
P1 | P2 | P3 | P4 | |
R1 | 1-86 | 2-75 | 8-3 | 7-54-6 |
R2 | 57-1 | 68-2 | 76-3 | 84-45 |
R3 | 41-15 | 3-2 | 4-6 | 8-57-6 |
R4 | 2-1 | -32-4 | 5-7 | 6-8 |
R5 | 21-13 | 32-64 | 5-48 | 87-76 |
Schema 24, nieuw
P1 | P2 | P3 | P4 | |
R1 | 6-1 | 5-2 | 73-38 | 4-87 |
R2 | 1-7 | 2-8 | 3-6 | 5-4 |
R3 | 5-1-4 | 2-3 | 86-546 | 7-78 |
R4 | 1-2 | 54-34 | 7-65 | 8-76 |
R5 | 3-1 | 4-2 | 78-5 | 6-8 |
Schema 3, nieuw
...
Schema 4, nieuw
...
7 |
Een periodecompetitie bestaat uit een aantal groepen van spelers. Deze groepen zijn niet noodzakelijk allemaal even groot.
Iedere groep speelt vijf ronden (een ronde per avond). De indeling van alle ronden is bij de start van de periodecompetitie bekend.
Het indelingssysteem Heller heeft vanuit het meegegeven document van UVS
Hoe krijgen wij dit werkend in onze Java applicatie?
Om dit in java te kunnen maken worden in arrays gemaakt waarin de matchups zoals de tabellen hierboven staan. Per ronde moeten de matchups uitgelezen en gesplitst worden op "-". Je weet vervolgens dat het eerste getal de witspeler is en het tweede getal de zwartspeler. Vervolgens moeten er voor deze matchups MatchDTO's gemaakt worden.
...
Een periodecompetitie bestaat uit een aantal groepen van spelers. Deze groepen zijn niet noodzakelijk allemaal even groot.
Iedere groep speelt vijf ronden (een ronde per avond). De indeling van alle ronden is bij de start van de periodecompetitie bekend.
Het indelingssysteem Heller heeft vanuit het meegegeven document van UVS
Implementatie
Strategy pattern