Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Turnierbaum

Einklappen

Neue Werbung 2019

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

  • [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


  • #2
    Lager die Teams aus und erstell ne Team-Tabelle, ne Ergebnis-Tabelle und eine Runden-Tabelle

    Code:
    // teams
    tid | team
    
    // matches
    mid | home_tid | home_points | guest_tid | guest_points | (evtl noch winner_tid)
    // in home & guest steht jeweils die id des teams
    
    // rounds
    rid | round | mid
    // in mid steht die id des matches
    Im Prinzip musste jetzt nurnoch richtig eintragen und gescheit auslesen.
    In der Ausgabe musste dann praktisch in "Zeile" 1 alle Matches aus Runde 1 ausgeben, darunter dann alle mit round = 2. An welche Stelle die müssen erfährste jeweils über die TID des Gewinners.

    Führ dir gleichmal
    http://de.wikipedia.org/wiki/Normali...28Datenbank%29
    und JOIN-Anweisungen zu Gemüte
    Auf jeden Fall wirds nicht so einfach wie du vielleicht gedacht hast!

    Kommentar


    • #3
      die tabelle teams hab ich, die tabelle matches auch, was joins sind weiss ich auch, nur leider hilft mir das nicht sonderlich weiter...
      nochmal zur verdeutlichung, die ausgabe in der form
      Code:
      runde 1:
      team1 vs. team2   10:8
      team3 vs. team4   4:9
      
      runde 2:
      team1 vs. team4   3:2
      
      gewinner: team1
      hab ich, das war nicht das problem, nur was ich suche ist eine ausgabe in der form:

      Code:
      runde1:   runde2:   runde3:
      team1--
             |---team1--
      team2--           |
       ______________   |---team1
      team3--           |
             |--team4--  
      team4--
      hoffe ihr versteht jetzt besser was ich meine

      Kommentar


      • #4
        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.

        Kommentar


        • #5
          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...

          Kommentar


          • #6
            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...

            Kommentar


            • #7
              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...

              Kommentar


              • #8
                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?

                Kommentar


                • #9
                  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

                  Kommentar


                  • #10
                    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

                    Kommentar


                    • #11
                      hoffentlich

                      Kommentar


                      • #12
                        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

                        Kommentar


                        • #13
                          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 !?

                          Kommentar


                          • #14
                            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]

                            Kommentar


                            • #15
                              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.

                              Kommentar

                              Lädt...
                              X