Benachrichtigung Gerade eben.

      Gaming

      Diskussionen über Computer-, Video- und Onlinespiele

      Weiß jemand, wie ich einen Ligakampf für 4-Spieler-Spiele für 16 Spieler erstellen kann?

      Erstellt am: , Letzte Antwort: 1. Dezember 2021 21:50

      Weiß jemand, wie ich einen Ligakampf für 4-Spieler-Spiele für 16 Spieler erstellen kann?

      MBGucky
      am 17.09.2021 20:08
      von  MBGucky  am
      Hi,

      ich habe vor kurzem das Spiel "Worms" wiederentdeckt. Dort können ja bis zu 4 Teams gegeneinander spielen und es gibt 16 Teams.
      Jetzt würde ich liebend gerne so eine Art Ligakampf zwischen den 16 Teams veranstalten und suche einen Generator oder irgendwas, was mir dabei hilft, die Gegner vernünftig auszulosen.
      Generatoren dieser Art scheint es viele für 2-Spieler-Spiele zu geben. Aber bei Worms können ja auch 4 Teams gegeneinander spielen.
      Vermutlich werde ich auch nicht jede mögliche Gegnerkombination spielen wollen. Da wäre ich vermutlich jahrelang dran. (gibt es vielleicht eine einfache Möglichkeit auszurechnen, wie viele Spieltage ich dafür spielen müsste?)
      Oder ist das vielleicht sogar gar nicht möglich? Oder zumindest nicht, ohne mal Manschaften 2 Spiele an einem Spieltag spielen zu lassen oder einen Spieltag auszusetzen?

      Hat da jemand eine Idee?
      0
      0
      Folgt mir auf Twitch! Ich streame X-Com, Die Siedler, Schach und manchmal anderes (hauptsächlich Retro)

      Weiß jemand, wie ich einen Ligakampf für 4-Spieler-Spiele für 16 Spieler erstellen kann?

      MBGucky
      am 20.09.2021 19:23
      von  MBGucky  am
      uff....
      Das gibt 455 Spieltage a 4 Spiele....
      Da hab ich mir ja was vorgenommen....

      Aber ich glaube, die eigentliche Problematik wird es wohl sein, für jeden Spieltag 4 Kombinationen zu finden, bei der jedes Team nur 1 Spiel machen muss.
      Der erste Tag geht ja noch. Nennen wir die Teams einfach nach Buchstaben, dann spielen gegeneinander:
      Spiel 1 Teams: ABCD
      Spiel 2 Teams: EFGH
      Spiel 3 Teams: IJKL
      Spiel 4 Teams: MNOP

      Danach wird es aber kompliziert....

      Zuletzt bearbeitet von: MBGucky am 20. September 2021 19:28

      0
      0
      Folgt mir auf Twitch! Ich streame X-Com, Die Siedler, Schach und manchmal anderes (hauptsächlich Retro)

      Weiß jemand, wie ich einen Ligakampf für 4-Spieler-Spiele für 16 Spieler erstellen kann?

      MBGucky
      am 01.12.2021 21:50
      von  MBGucky  am
      Zwischenstand:
      Ich hab mir ein wenig Zeit genommen und ein Script erstellt, welches die möglichen Paarungen auflistet. Der Einfachheit halber habe ich sie nicht A bis P genannt sondern 0 bis f, somit konnte ich mit Hexadezimalwerten arbeiten. Das ist immer eine feine Sache, wenn man von etwas genau 16 hat =)

      Erstaunlicherweise habe ich ein Array mit 1820 möglichen Paarungen erzeugt.
      Jetzt muss ich die nur noch in eine DB packen und immer 4 Paarungen rausbekommen bei denen keine Mannschaft 2 Spiele spielen muss.

      Neuer Zwischenstand 02.12.2021:
      Ich habe ein PHP-Script mit gerade einmal 40 Zeilen geschrieben, welches mir die Paarungen in eine DB schreibt. Herausgekommen sind 528 Spieltage.
      Wer sich jetzt wundert, warum es nicht 1820 : 4 = 455 Spieltage sind: Es kommt leider irgendwann der Punkt, an dem man keine 4 Paarungen mehr zusammenbekommt bei denen alle Teams nur 1 Mal spielen müssen und auch alle Teams spielen. Das scheint für 73 Spieltage der Fall zu sein. Am Ende wird es dann sogar Spieltage geben, an denen nur 1 Spiel stattfindet.

      Aber ich glaube, bei 455 Spieltagen werde ich da ohnehin nie ankommen =)

      Wen es interessiert, hier der Code zum Einfügen der Paarungen in die bereits erstellte Tabelle (man könnte nun stattdessen ein CREATE TABLE IF NOT EXISTS einfügen oder eine Abfrage ob die Tabelle schon existiert und dann direkt mit die("gibts schon"); abbrechen. Aber meine Tabelle ist ja fertig)
       

      <?php
      include('inc/db.inc');
      $erg = [];
      for($i=0x123;$i<=0xcdef;$i++){
          $string = sprintf("%1$04x",$i);
          $array = str_split($string);
          if($array[0]!=$array[1] && $array[0]!=$array[2] && $array[0]!=$array[3] && $array[1]!=$array[2] && $array[1]!=$array[3] && $array[2]!=$array[3]){
              sort($array);
              $make=$array[0].$array[1].$array[2].$array[3];
              if(!array_key_exists($make,$erg)){
                  $erg["$make"] = "1";
              }
          }
      }
      foreach($erg as $key => $value){
          $teams = str_split($key);
          $query = "SELECT * FROM `Worms` WHERE `".$teams[0]."` = 0 AND `".$teams[1]."` = 0 AND `".$teams[2]."` = 0 AND `".$teams[3]."` = 0 LIMIT 1";
          $res = $mysqli->query($query);
          if($daten = $res->fetch_array()){
              $Spieltag = $daten['Spieltag'];
              $highest = 0;
              foreach($daten as $dname => $dvalue){
                  if($dname != 'Spieltag' && $dvalue > $highest){
                      $highest = $dvalue;
                  }
              }
              $highest++;
              $query="UPDATE `Worms` SET `".$teams[0]."` = '".$highest."',`".$teams[1]."` = '".$highest."',`".$teams[2]."` = '".$highest."',`".$teams[3]."` = '".$highest."' WHERE `Spieltag` = '".$Spieltag."'";
              $mysqli->query($query);
          } else {
              $query="INSERT INTO `Worms` (`".$teams[0]."`,`".$teams[1]."`,`".$teams[2]."`,`".$teams[3]."`) VALUES (1,1,1,1)";
              $mysqli->query($query);
              $Spieltag = $mysqli->insert_id;
          }
          echo $key.' hat Spieltag '.$Spieltag.'<br>';
      }
      ?>

      Zuletzt bearbeitet von: MBGucky am 2. Dezember 2021 19:04

      0
      0
      Folgt mir auf Twitch! Ich streame X-Com, Die Siedler, Schach und manchmal anderes (hauptsächlich Retro)

      Taschenrechner