- Offizieller Beitrag
Ich schreibe gerade an einem Programm zum verwalten eines Turniers.
Jetzt brauche ich eine Funktion, um die Spiele "anzusagen". Nehmen wir mal an, es sind 8 Spieler innerhalb einer Gruppe. Jeder soll einmal gegen jeden aus dieser Gruppe spielen.
Es soll aber so sein, dass reihum alle dran kommen und nicht ein Spieler mehrere Spiele hintereinander macht. Und genau da komme ich nicht weiter.
Die erste und die zweite "Runde" klappt ja noch, aber wie geht's weiter?
Oder kann man das nicht berechnen und muss die Reihenfolge manuell festlegen?
Hier mal ein Testscript:
AutoIt
#include <Array.au3>
Global $aPlayerNames[8] = ['Kathrin', 'Doris', 'Tamara', 'Gabi ', 'Oliver', 'Heinrich', 'Helmut', 'Werner']
Global $iCount = UBound($aPlayerNames)
Global $aGroupA[$iCount][2]
For $i = 0 To $iCount - 1
$aGroupA[$i][0] = 'A' & $i + 1
$aGroupA[$i][1] = $aPlayerNames[$i]
Next
;~ _ArrayDisplay($aGroupA)
For $i = 0 To $iCount - 1 Step 2
ConsoleWrite(StringFormat('%s %s\t-\t%s %s\r\n', $aGroupA[$i][0], $aGroupA[$i][1], $aGroupA[$i + 1][0], $aGroupA[$i + 1][1]))
Next
ConsoleWrite(@CRLF)
For $i = 1 To $iCount - 1 Step 2
ConsoleWrite(StringFormat('%s %s\t-\t%s %s\r\n', $aGroupA[$i][0], $aGroupA[$i][1], $aGroupA[Mod($i + 1, $iCount)][0], $aGroupA[Mod($i + 1, $iCount)][1]))
Next
ConsoleWrite(@CRLF)
For $i = 0 To $iCount - 1 + 2 Step 1
If Not Mod($i, 3) Then
ConsoleWrite(StringFormat('%s %s\t-\t%s %s\r\n', $aGroupA[Mod($i, $iCount)][0], $aGroupA[Mod($i, $iCount)][1], $aGroupA[Mod($i + 2, $iCount)][0], $aGroupA[Mod($i + 2, $iCount)][1]))
EndIf
Next
Alles anzeigen