![]() |
Problem : Spieler-Paarungen für Turnierverwaltung...
Hallo...
Ich hab ein kleines Denk-Problem :) Ich will für einen Dart-Verein ein Programm Schreiben, daß die Vereins-Rangliste verwaltet und ausrechnet. Folgendes Problem : Ich habe eine Bestimme Anzahl an Spielern (X), diese sollen im Jeder-gegen-Jeden Modus gegeneinander spielen. Nun möchte ich mit dem Programm ermitteln, wer gegen wen spielt. Das hört sich einfacher an als es ist... Beispiel : 7 Spieler : So könnten in der ersten Runde 1 gegen 2 , 3 gegen 4 , 5 gegen 6 spielen, und 7 setzt aus. In der zweiten Runde 2 gegen 3 , 4 gegen 5 , 6 gegen 7 , und 1 setzt aus. Und so weiter... So und diese Blöcke möchte ich nun ermitteln. Ich habe allersings keine Ahnung wie ... Das einzige, was ich weiss, ist die Summe der Spiele die stattfinden : Summe = (Spieler * (Spieler -1) ) / 2 Hat jemand da ne Idee, oder ein änliches Problem ? |
Re: Problem : Spieler-Paarungen für Turnierverwaltung...
Hallo,
ich würde ein Objekt Spieler erstellen, das enthält u.a. eine Liste mit den bereits gespielten Gegnern. Dann einfach für jede Runde eine Runden-Liste nehmen, alle Spieler reintuhen und dann immer einen nehmen und einen passenden dazu rausnhemen (und die Gegenspielerlisten der Spieler aktuallisieren). Ein passender Spieler ist einer gegen den noch nicht gespielt wurde (also einfach durchprobieren mit denen die noch in der Rundenliste enthalten sind). Wer als einziger übrig bleibt setzt aus (oder keinen gültigen Gegner hat). Das einfach solange machen bis man für keinen mehr einen Gegner findet. Das Modell ist sozusagen eine Urne wo die Spieler drinne sind, und man zieht einfach immer einen raus, macht eine Markierung gegen welchen Gegner er spielt oder legt ihn zurück wenn es keinen Gegner gibt. Wenn die Urne leer ist oder man keine Gegner findet schütet man wieder alles zusammen und es geht von vorn los. Hoffe das war verständlich :-) Bin mir jetzt nicht ganz sicher ob nicht auch mal 2 Leute in einer Runde übrigbleiben, die schon gegeneinander gespielt haben... |
Re: Problem : Spieler-Paarungen für Turnierverwaltung...
Liste der Anhänge anzeigen (Anzahl: 1)
siehe anlage
|
Re: Problem : Spieler-Paarungen für Turnierverwaltung...
ich würds so machen
Code:
alle spieler erfassen
reihenfolge beliebig ändern anzahl _spielder / 2 (gibt in deinem fall einen ungeraden wert) diese in liste A und B speichern wenn ungerade solange nimm aus der liste der ungeraden einen spieler beliebigen raus und merke diesen dieser schon gelost wurde wiederhole dies (er kommt automatisch in die nächste runde; muss also wieder angefügt werden -> alle spieler erfassen ) |
Re: Problem : Spieler-Paarungen für Turnierverwaltung...
So, um mal ein bisserl ins Detail zu gehen, zeige ich mal was ich schon habe.
Delphi-Quellcode:
type TBegegnungsState = ( bsPlayAble, bsPlaying, bsPlayed );
type TSpieler = record Name : string; Index : integer; HF : string; SG : string; HS : integer; end; type TBegegnung = class(TComponent) public Spieler1 : TSpieler; Spieler2 : TSpieler; erg1 : Integer; erg2 : Integer; State : TBegegnungsState; constructor Create(AOwner: TComponent); override; destructor destroy; override; procedure ShowErgDialog; end;
Delphi-Quellcode:
In Begegnungsliste sind alle Begegnungen gespeichert, die stattfinden werden.
private
Begegnungsliste : TObjectList; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:28 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz