AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Problem : Spieler-Paarungen für Turnierverwaltung...
Thema durchsuchen
Ansicht
Themen-Optionen

Problem : Spieler-Paarungen für Turnierverwaltung...

Ein Thema von Nightshade · begonnen am 8. Sep 2004 · letzter Beitrag vom 10. Sep 2004
Antwort Antwort
Nightshade

Registriert seit: 7. Jan 2003
Ort: Menden
192 Beiträge
 
Delphi 7 Enterprise
 
#1

Problem : Spieler-Paarungen für Turnierverwaltung...

  Alt 8. Sep 2004, 22:17
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 ?
Christian
Killing for peace is like fucking for virginity

Nightshade
  Mit Zitat antworten Zitat
Benutzerbild von fiasko
fiasko

Registriert seit: 10. Dez 2002
Ort: Dresden
506 Beiträge
 
#2

Re: Problem : Spieler-Paarungen für Turnierverwaltung...

  Alt 8. Sep 2004, 23:04
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...
Thomas Liske
Posts comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
  Mit Zitat antworten Zitat
bttb930

Registriert seit: 6. Okt 2003
372 Beiträge
 
#3

Re: Problem : Spieler-Paarungen für Turnierverwaltung...

  Alt 8. Sep 2004, 23:05
siehe anlage
Angehängte Dateien
Dateityp: zip ko.zip (16,3 KB, 10x aufgerufen)
  Mit Zitat antworten Zitat
Snoop007

Registriert seit: 15. Jan 2003
331 Beiträge
 
Delphi 6 Personal
 
#4

Re: Problem : Spieler-Paarungen für Turnierverwaltung...

  Alt 9. Sep 2004, 00:35
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 )
  Mit Zitat antworten Zitat
Nightshade

Registriert seit: 7. Jan 2003
Ort: Menden
192 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Problem : Spieler-Paarungen für Turnierverwaltung...

  Alt 10. Sep 2004, 19:04
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:
  private
     Begegnungsliste : TObjectList;
In Begegnungsliste sind alle Begegnungen gespeichert, die stattfinden werden.
Christian
Killing for peace is like fucking for virginity

Nightshade
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:59 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz