Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Turnierbaum

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Gast-Avatar
    Ein Gast erstellte das Thema [Erledigt] Turnierbaum.

    [Erledigt] Turnierbaum

    Hallo zusammen,
    ich bin gerade dabei für eine LANparty ein Turniescript zu schreiben, habe nur bei der Programmierung des Turnierbaums leichte schwierigkeiten und hoffe dass ich hier ein paar lösungsansätze oder ähnliches finde

    meine tabelle sieht folgenderamßen aus:
    team1|team2|team1_punkte|team2_punkte|runde


    ich hatte angefangen und alle werte der tabelle in einen array zu speichern,

    $array_team1[runde][nr-der-paarung]=team1-aus-tabelle

    das gleiche für team2

    jetzt beginnt mein problem, so in der art wie unten beschrieben hab ich mir gedacht das es vom prinzig her funktionieren sollte:

    die paarung aus der letzten runde abgefragen, wo team1 oder team2 dem inhalt des array entspricht

    diese paarung wieder in einen anderen array speichern

    und das so lange bis runde 1 erreicht ist...


    nur leider fehlt mir irgendwie ein weg wie ich das ganze umsetzen kann
    Gruß
    Christian

  • brain_overload
    antwortet
    Hallo Christian,

    Christian_N:
    ich soll alle paarungen pro runde auslesen und diese mit nem zähler versehen [...] und ich weiss in runde 1 noch nicht wer in runde 2 gegen wen spielt[...]
    Ich denke bei deinem Problem immer an unsere WM 2006.
    Dafür gibt es jetzt schon einen Spielplan, der definiert, welche Paarungen(!) stattfinden werden. Diesen Spielplan kann man darstellen.

    Mach dich doch mal frei davon, die "Teams" sortieren zu wollen. Es geht doch bei deinem Darstellungswunsch um die Paarungen; vielleicht ist das der "Knoten" ?
    Eben diesen Paarungen habe ich in meinem Vorschlag einen simplen Zähler verpasst, um Deine Wunschdarstellung einfach ausgeben zu können.

    ...oder hab ich das Problem nicht kappiert...!?


    Ich komme immer wieder zu folgenden Voraussetzungen für die Wunschdarstellung:
    a) Die *Paarungen* müssen schon von vornherein definiert sein !
    b) Darstellung der *Nur* Sieger oder *nur* Verlierer

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    den einfall hatte ich auch schon, nur hab ich eben probleme mit deiner 2. schleife, die wo ich die reinfolge der ergebnisse festlege bekomme ich einfach nicht gebacken

    Einen Kommentar schreiben:


  • Zergling-new
    antwortet
    Du musst eben vor der Ausgabe schon die (am besten) komplette Struktur kennen und dann erst an die Ausgabe gehen. Dann musst du eben in einer Schleife die Ergebnisse holen, dann die Ausgabe/Sortierung errechnen und dann in einer neuen Schleife dein Ergebnis ausgeben. Deine Methodik ist ganz einfach falsch.

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Deshalb würde ich unabhängig deiner Tabellen vorschlagen, alle Spielpaarungen systematisch zu numerieren; vielleicht [runde][zähler] (==> 11 bis 18, 21 bis 24, 31 bis 32)
    Hier ist ersichtlich, dass der Baum sortierbar ist, egal welches team rausfliegt.

    Das "Spiel um Platz 3" muss separat abgebildet werden.


    Grüße; hoffe den Knoten zum Platzen gebracht zu haben !?
    sorry, der knoten ist immer noch drin

    was du mir damit oben jetzt sagen wolltest, ist mir nicht so richtig klar geworden...
    ich soll alle paarungen pro runde auslesen und diese mit nem zähler versehen $array_runde[runde][$schleifenzähler], so in etwa, aber was mir das bringt hab ich nicht so ganz verstanden...


    und ich weiss in runde 1 noch nicht wer in runde 2 gegen wen spielt, da nach jeder runde alle teams, die in der vorherrigen runde gewonnen haben gemischt werden und zufällig neue paarungen erstellt werden

    PHP-Code:
    $lauf=0;
    $lauf2=0:
    while(
    $lauf<$zeilen-aus-datenbank)
    {
    $data=mysql_fetch_array($meineabfrage);

    $array[$lauf]=$data[team1];
    $array[$lauf+1]=$data[team2];
    $lauf2=$lauf2+2;
    $lauf++;
    }

    $neueteams=array_rand($array); 
    so in etwa und in etwas gekürzter form[/php]

    Einen Kommentar schreiben:


  • brain_overload
    antwortet
    Hahaha,
    habe ordentlich lange geknobbelt und bin letztendlich zu einem erstaunlichen Ergebnis gekommen...

    Nochmal kurz Revue passiert:
    -Du hast ein Ausgabe/Darstellungsproblem, das von der Sortierung abhängt.

    -Zergling hat vollkommen Recht, dass Du Deinen Baum ja schon bei der Festlegung der Spielpaarungen kennen musst; also auch fix sortieren könntest:
    Wenn du aber in Runde 2 weißt, dass Sieger von 1-2 gegen 5-6
    spielt, dann müsstest du das in Runde 1 doch auch wissen
    -An deinem Beispiel vom 15.11.2005, 15:19 (8 Teams) hast Du (zumindest mir) klar gemacht, dass "paarung team5 vs. team6 nach oben rutschen" muss.

    ABER: Letzteres ist irrelevant, da in der Baumstruktur nicht das "Spiel um Platz 3" (team7 vs. team4) auftaucht !!!

    Siehe:
    Code:
    team1----\ 
              |----team1----\
    team2----/              |
                            |----team1----\
    team3----\              |             |
              |----team4----/             |
    team4----/                            |
                                          |----winner
    team5----\                            |
              |----team5----\             |
    team6----/              |             |
                            |----team5----/
    team7----\              | 
              |----team7----/ 
    team8----/

    Deshalb würde ich unabhängig deiner Tabellen vorschlagen, alle Spielpaarungen systematisch zu numerieren; vielleicht [runde][zähler] (==> 11 bis 18, 21 bis 24, 31 bis 32)
    Hier ist ersichtlich, dass der Baum sortierbar ist, egal welches team rausfliegt.

    Das "Spiel um Platz 3" muss separat abgebildet werden.


    Grüße; hoffe den Knoten zum Platzen gebracht zu haben !?

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    ich bekomme es einfach nicht hin, ich poste einfach nochmal meine komplette struktur, vielleich hat ja irgendjemand ne idee
    datenbank:

    tabelle turniere: id | name | noch viel unrelevantes zeug

    tabelle turnier_spieler: id | namen_id | name
    namen_id ist die id,die der spieler auf der eigentlichen seite (forum,etc.) hat

    tabelle turnier_teams: id | name | turnier_id | spieler_max | leader_id | pw
    turnier_id ist die id des turniers, wo das team mitspielt

    tabelle turnier_spinteam: spieler_id | team_id
    zuordnung welche spieler sind in welchem team

    tabelle turnier_angemeldet: team_id | turnier_id | verlohren | llrunde
    verlohren=wie oft das team verlohren hat, llrunde=in welcher runde das team verlohren hat

    tabele turnier_paarungen: id | team1 | team2 | team1_punkte | team2_punkte | runde | ok | melder | lb
    ok=ob das ergebnis bestätigt wurde, melder=id des spielers, der das ergebnis gemeldet hat, lb=wenn turniersystem doble elimination und die paarung im looserbracket stattfindet, ist da ne 1 drinne


    wie gesagt eine darstellung in der form
    Code:
    runde1:
    team1    vs.    team2     32:9
    team3    vs.    team4     3:2
    
    runde2
    team1    vs.    team3     8:21
    
    gewinner: team3
    habe ich bereits, was ich aber einfach nicht auf die reihe bekomme ist eine darstellung in folgender form:

    Code:
    runde1:       runde2:         runde3:
    
    team1----\
              |----team1----\
    team2----/               |
                             |_____team3
                             |
    team3----\               |
              |----team3----/
    team4----/
    ich bin für alle lösungsvorschläge, oder ansätze oder auch nur für ne idee dankbar

    gruß
    christian

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    hoffentlich

    Einen Kommentar schreiben:


  • Zergling-new
    antwortet
    Ich verstehe aber nicht ganz die Problematik. Gut du scheinst nicht rechtzeitig zu wissen wer eigentlich gegen wen spielt. Aber kannst du keine Initialisierungs-Funktion schreiben, die einfach beim Erstellen des des Tuniers eine Rangfolge festlegt. Schließlich ist es üblich, zu wissen wer wann aufeinander treffen könnte.

    Ich habe in sofern Schwierigkeiten dir zu helfen, weil ich garnicht weiß, wie deine Programmierung aussieht, denn offenbar hast du bereits eine Idee kannst sie aber nicht anwenden (das kapiere wer will, ist aber offenbar so) und meinen Vorschlag hattest du ja abgelehnt (Aufspaltung in 3 Tabellen).

    Mach morgen weiter, dann wird dir die Lösung zufliegen

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Zitat von Zergling
    Ich meine du zweiteilst ja die Spielpaarungen immer und läßt den selben Index gegeneinander antreten oder?
    ich verstehe jetzt nicht ganz was du damit meinst, aber wenn eine runde vorbei ist generiere ich aus den gewinnern die neue runde, wobei wer gegen wen spielt zufall ist zwecks chancengleichheit

    Einen Kommentar schreiben:


  • Zergling-new
    antwortet
    Wenn du aber in Runde 2 weißt, dass Sieger von 1-2 gegen 5-6 spielt, dann müsstest du das in Runde 1 doch auch wissen.

    Ich meine du zweiteilst ja die Spielpaarungen immer und läßt den selben Index gegeneinander antreten oder?

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    ist richtig, habe ich auch eben ausprobiert, nur jetzt folgendes problem, ich hab diese paarungen:

    Code:
    runde1:
    team1 vs. team2   10:3    (gewinner 1)
    team3 vs. team4   5:23    (gewinner 4)
    team5 vs. team6   6:2      (gewinner 5)
    team7 vs. team8   9:5      (gewinner 7)
    
    runde2:
    team1 vs. team5   3:2      (gewinner 1)
    team7 vs. team4   5:1      (gewinner 7)
    
    runde3:
    team7 vs. team1   5:2 
    
    Gewinner: team7
    weil in runde 2 team1 gegen team5 spielt, müsste in runde 1 die paarung team5 vs. team6 nach oben rutschen, direkt unter die paarung team1 vs. team2 nur als beispiel, damit man den baum vernünftig darstellen kann...

    Einen Kommentar schreiben:


  • Zergling-new
    antwortet
    Zitat von Christian_N
    richtig, vom grundsatz her will ich die ergebnisse nur anders darstellen, nur das problem darin ist halt das ich in runde 1 noch nicht "weiß", wer in runde 2 oder 3 gegen einander gespielt hat (hört sich komisch an )
    Du arbeitest wohl mit Tabellen und Zellen? Schonmal an ein Mehrspalten-Layout mit <div>s gedacht?

    Dann könntest du nämlich zuerst Runde 1 ausgeben und berechnen und dann die nächste Spalte anlegen...

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    richtig, vom grundsatz her will ich die ergebnisse nur anders darstellen, nur das problem darin ist halt das ich in runde 1 noch nicht "weiß", wer in runde 2 oder 3 gegen einander gespielt hat (hört sich komisch an )

    und weil ich das nicht "weiß", wird es höchstwahrscheinlich total unsortiert sein, wenn ich es einfach so ausgeben würde, also muss ich von hinten anfangen mit der überprüfung wer hat in der runde davor gegen wen gespielt und da haperts im moment noch bei mir...

    Einen Kommentar schreiben:


  • Zergling-new
    antwortet
    Und warum rückst du nicht von Anfang an mit allen Infos ran?

    Aber wo liegt denn jetzt das Problem, Darstellung 1 in Darstellung 2 zu bringen?

    Letztlich ist dein Problem doch eher darstellerischer Natur?! Mehr Information steckt zumindest in D2 nicht.

    Einen Kommentar schreiben:

Lädt...
X