IFD:SvenSomKU/Spielplan

From Medien Wiki

In vereinfachter Form wird ein Spielplan so erstellt:


### 1) erstelle Array ($array_teams) mit allen teilnehmenden Teams einer Liga

[...]

while($row = mysql_fetch_object($qry))
{
    $i++;
    $array_teams[$i] = $row->ID_team;
}

### 2) durchlaufe fortan die Schleife: 

for ($round = 1; $round < $num_teams; $round++) 
{
    ### Es wird 13 Mal die Schleife durchlaufen. 
    ### Grund dafür ist die Anzahl (14) der Teams ($num_teams), 
    ### die in einer Liga antreten. 
    ### Jeder Schleifendurchlauf erstellt einen Spieltag.

    ...

    ### 2.1) erstelle Array ($teams_done)

    $teams_done = array();

    ### 2.2) durchlaufe fortan die Schleife:

    for ($team = 1; $team < $num_teams; $team++) 
    {
        ### Es werden also jedem Team, 
        ### ausser dem Letzten (14. Team), 
        ### eine Zählnummer gegeben.

        ### 2.2.1) Prüfe, ob das Team bereits abgearbeitet ist:

        if (!in_array($team, $teams_done)) 
        {
            ### 2.2.2) Wenn Bedingung false, dann wähle Gegner:

            $opponent = $round - $team;
            $opponent += ($opponent < 0) ? $num_teams : 1;

            ### 2.2.3) Wenn Bedingung 
            ### (Gegner ist nicht das momentan ausgewählte Team) true, 
            ### gehe weiter:

            if ($opponent != $team) 
            {
                ### 2.2.3.1a) Wenn Bedingung true ist, gehe weiter:

                if (($team + $opponent) % 2 == 0 xor $team < $opponent) 
                {
                    ### Das heißt, es muss entweder der Rest der Summe 
                    ### beider Teams durch 2 dividiert 0 ergeben oder 
                    ### (exklusives Oder!) das momentan ausgewählte Team 
                    ### einen kleineren Index als der Gegner haben. 
                    ### Ist dies der Fall, wird die nun feststehende 
                    ### Paarung in die Datenbank eingetragen. 
                    ### Heimrecht hat das ausgewählte Team ($array_teams[$team]),
                    ### auswärts spielt der gewählte Gegner ($array_teams[$opponent]). 
                    ### Es werden die eindeutigen IDs der Vereine in die Datenbank
                    ### geschrieben, welche in Schritt 1) in das Array 
                    ### $array_teams gespeichert wurden.
                } 

                ### 2.2.3.1b) Wenn Bedingung von oben false ist, gehe weiter:
                
                else 
                {
                    ### Der Vorgang ist dem aus 2.2.3.1a) fast identisch. 
                    ### Es werden lediglich Heim- und Auswärtsteams getauscht. 
                    ### Somit bedeutet das: 
                    ### Heimrecht hat der gewählte Gegner ($array_teams[$opponent]), 
                    ### auswärts spielt das momentan ausgewählte Team ($array_teams[$team]).
                }

                ### 2.2.4) Schreibe abgearbeitete Teams in das Array, 
                ### welches in Schritt 2.1) erstellt wurde:

                $teams_done[] = $team;
                $teams_done[] = $opponent;
            }
        }
    }

    ### 2.3a) Wenn Bedingung true ist, gehe weiter:

    if ($round % 2 == 0) 
    {
        ### Das heißt, es muss der Rest der Rundenzahl ($round), 
        ### welche in der Schleife aus Schritt 2) initialisiert wurde, 
        ### durch 2 dividiert 0 ergeben. 
        ### Ist dies der Fall, wird das letzte verbleibende Team (14.),
        ### welches in Schritt 2.2) ausgelassen wurde, 
        ### noch einer Paarung zugeteilt:

        $opponent = ($round + $num_teams) / 2;

        ### Nun werden die Paarungen, wie bereits erläutert, 
        ### in die Datenbank geschrieben.

    }

    ### 2.3b) Wenn Bedingung von oben false ist, gehe weiter:

    else 
    {
        $opponent = ($round + 1) / 2;

        ### Nun werden die Paarungen, wie bereits erläutert, 
        ### in die Datenbank geschrieben. 
        ### Im Unterschied zu 2.3a) wird bei 2.3b) das Heimrecht getauscht.

    }
}