Spielplangenerator für ein „Hollandturnier“

Wir haben vor einigen Jahren regelmäßig ein „Hollandturnier“ als Saisonabschluss unserer Kleinfeldmannschaften ausgerichtet.

Bei einem „Hollandturnier“ spielen auf mehreren kleinen Spielfeldern immer wieder neu zufällig zusammengestellte Mannschaften gegeneinander. Diese Felder müssen nicht gleich groß sein und auch die Anzahl der Spieler pro Team kann von Feld zu Feld variieren. Jeder Spieler sammelt individuell Punkte durch Siege und erzielte Tore seines Teams. Am Ende gewinnt der Spieler mit den meisten Punkten.

Um lange Pause durch händisches Losen zwischen den Spielen zu vermeiden, empfiehlt es sich vorab einen Spielplan generieren zu lassen. Das kann händisch ziemlich kompliziert werden, wenn es darum geht 50+ Kinder für mehrere Spiele in immer wieder neuen Konstellationen zusammen spielen zu lassen. Insbesondere dann, wenn man vermeiden möchte, dass zufällig drei D-Junioren gegen drei G-Junioren antreten. Zudem weiß man meist erst kurz vor Beginn des Turniers, welche Anzahl von Spielern es jetzt unterzubringen gilt.

Um dies zu vereinfachen habe ich damals ein Script in Ruby geschrieben, welches sich parametrisieren lässt und einen Spielplan als csv-Datei ausgibt, der dann in Excel weiter genutzt werden kann.

Ich stelle das Script hier mal (ohne Gewähr) zur Verfügung, auch wenn es (noch) etwas unkomfortabel zu bedienen ist.

https://drive.google.com/file/d/0B5oxvJ7z4z0SOU5YdWRuM2JDVTA/view?usp=sharing

Die Datei turnier.rb kann man in einem Text-Editor öffnen und folgenden Bereich anpassen:

########################### USER INPUTS ################################
# use this scheme [(team0,team1), (team2,team3), (team4,team5) ... ]
catOnePerTeam = Array[2,2,2,2,2,2,2,2,2,2]	
catTwoPerTeam = Array[2,2,2,2,2,2,2,2,1,1]	
games = 5 		# number of games for each team

catOnePerTeam und catTwoPerTeam sind unterschiedliche Leistungs- oder Altersklassen, die bei Bedarf genutzt werden können um sicher zu stellen, dass keine besonders ungerechten Konstellationen entstehen. Mit den Zahlen in den Klammern wird gesteuert, wie viele Spieler aus der jeweiligen Kategorie in einem Team spielen. Dabei bestimmt die Position in der Klammer, um welches Team es sich handelt. Position 0 spielt gegen Position 1 auf Feld 1, Position 2 gegen Position 3 auf Feld 2 usw. die Anzahl der Zahlen in der Klammer entspricht also der Anzahl der Teams im Turnier. Die Zahl hinter games gibt die Anzahl der Spiele pro Spieler im Turnier an.

Wenn man die Parameter entsprechend den eigenen Wünschen angepasst hat, kann man die Datei speichern, auf der Kommandozeile in das Verzeichnis der Datei wechseln und eine funktionierende Ruby-Installation auf dem Rechner vorausgesetzt, wie folgt ausführen:

ruby turnier.rb

Es wird im gleichen Verzeichnis eine Datei namens test.csv generiert, die sich dann in Excel öffnen lässt. Hier ein Ausschnitt der Datei:

[...]
a17,2,7,6,1,8
a18,0,9,2,7,4
a19,0,2,0,9,5
b0,7,5,4,5,7
b1,8,3,7,1,0
b2,2,8,6,3,7
b3,5,6,2,7,4
[...]

In der ersten Spalte steht der Spieler (a = Kategorie 1, b = Kategorie 2), dahinter für jedes der Spiele die Nummer des Teams, zu dem er in diesem Spiel gehört.

Falls Bedarf besteht, kann ich das Ganze bei Gelegenheit mal mit einer GUI versehen, die die Einstellungen etwas komfortabler macht.