AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Neue Komponente mit 2 TEdit Komponenten

Ein Thema von Optiplex · begonnen am 28. Mai 2009 · letzter Beitrag vom 15. Jun 2009
Antwort Antwort
Seite 5 von 5   « Erste     345   
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#41

Re: Neue Komponente mit 2 TEdit Komponenten

  Alt 10. Jun 2009, 09:52
Hi optiplex,

och, so schwer ist das nicht. Man muss das nur berücksichtigen. Im Grunde heist das, dass ein neuer Spielplan nur erstellt werden darf, wenn die Anzahl der Spieler durch eine Zahl 2^x ohne Rest teilbar ist. Der eingebende Benutzer kann also nacheinander alle Spieler eingeben, am Schluß die fehlende Anzahl dann mit Freilosen auffüllen. Dazu habe ich der Spielerklasse die Eigenschaft PlayerType gegeben.
Delphi-Quellcode:
  // Playertyp zur Identification eines Spielers oder Freiloses
  TPlayerType = (pt_Person,   // Spieler ist eine Person
                 pt_Looser // Spieler ist ein Freilos
                 );

{-----------------------------------------------------------------------------
  Class:      TPlayerClass
  Author:      OKI
  Date:        06-Jun-2009
  Describtion: Klasse eines einzelnen Spielers. Der Member PlayerList gibt die
                     übergeordnete Liste an, die den Spieler hält.
-----------------------------------------------------------------------------}

  TPlayerClass = class(TObject)
  private
    FBirthday      : TDateTime;
    FFirstName      : String;
    FName      : String;
    FPlayCount      : Integer;   // Anzahl gespielter Spiele
    FPlayerList      : TPlayerList;
    FPlayerType      : TPlayerType;
    FShowNameMode   : TShowNameMode;
    FPosition      : Integer; // aktueller Platz im Spiel
Jeder angelegte Spieler kann dann in der Spielerverwaltung auch als Freilos definiert werden. Praktischer weise würde man dann natürlich einen Button Freilos hinzufügen implementieren. Damit würde das dann für den Bearbeiter unsichtbar ablaufen.

Zusätzlich kann man später im Programm den Benutzer unterstützen, indem man ihm bei der Anlage der Spieler anzeigt welches Spiel möglich ist und wieviele Spieler noch benötigt werden um ein Turnier komplett zu bekommen.

6 Spieler eingegeben -> 8. Spiel möglich -> noch zwei weitere Spieler/Freilose nötig
10 Spieler eingegeben -> 16. Spiel möglich -> noch 6 weitere Spieler/Freilose nötig

Das sehe ich also nicht als das Problem.

Entscheidend ist, das man sich eine Basis aufbaut, die dir die Chance gibt diese Besonderheiten zu berücksichtigen. Momentan ist es ja so, dass die Spielerliste in meinem Klassenmodell die Spieleliste davon informiert, dass sich bei ihr etwas geändert hat. Ist das die Anzahl der Spieler, so berechnet die Spielerliste automatisch die Anzahl der Spiele neu.
Delphi-Quellcode:
procedure TPlayList.ChangePlayerList;
begin
  // Anzahl der Spiele aktualisieren
  UpdatePlayCount;
end;
diese ist aktuell noch recht simpel. Das kommt daher, dass ich noch nicht alles verstanden hatte oder wuste. Mit der neuen Erkenntnis kann hier jetzt aber dementsprechend ergänzt werden. Die Methode UpdatePlayCount darf jetzt erst aufgerufen werden, wenn die Anzahl der Spieler eine Zahl = 2^x ist.

Nochmal kurz zum allgemeinen Verständnis. Mit Klassen kannst du dir "einfache" Modelle für Daten und Funktionen schaffen, die einer einheitlichen Struktur unterliegen. Ein Beispiel ist die Klasse TPlayerClass. Ergibt sich eine neue Eigenschaft (später eingefallen etc.) kann man sie einfach in der Basisklasse implementiern. Im eigentlichen Programm kümmert man sich nur noch um den Grafikteil und die Bedienung.

Gruß oki

Gruß oki
42
  Mit Zitat antworten Zitat
Optiplex

Registriert seit: 5. Mär 2008
131 Beiträge
 
Delphi 2005 Personal
 
#42

Re: Neue Komponente mit 2 TEdit Komponenten

  Alt 10. Jun 2009, 12:45
hallo Oki,
das ist jetzt 100% richtig, sobald sich der 17 Spieler anmeldet brauchst du einen 32 Plan usw.
Dadurch sind z.B. 15 Freilose notwendig und damit ein Freislos nicht ins Finale kommt werden die Freilose und Spieler nach einem Schlüssel, den ich jetzt nicht dabei habe, in der Runde 1 in die Paarungen verteilt so dass die Freilose schnellstmöglich aus dem Turnier ausscheiden. Deshalb gibt es im meinem Plan die Positionmarken 1-16 (gelbes Kästenchen neben dem Namen in Runde 1)

Bitte beachte dies, dass wenn das Turnier gestartet wird, die Spieler/Freilose die ja nacheinander in der PlayerListe stehen, jetzt auf gewisse Positionen im Spielplan noch verteilt werden müssen. Dies könnte man mit einem Array eignetlich Problemlos machen, je nach Plangröße würde dann ein anderer Array verwendet. Ich schau mir diese Verteilerschlüssel nochmals an, vielleicht kann man dort auch eine gesetzmäßigkeit erkennen.

bis dann Dieter
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#43

Re: Neue Komponente mit 2 TEdit Komponenten

  Alt 10. Jun 2009, 13:16
Hallo,
ich gehe eh davon aus, dass die "Erstbesetzung" durch ein geeignetes Verfahren erfolgen muss. Mögliche Varianten sind dabei die:
- manuelle Zuordnung durch den Anwender (der denkt sich aus, wer mit wem oder es wurde gelost),
- Zuteilung nach der Reihenfolge der Eingabe der Spieler durch den Rechner (glaub ich eher nicht),
- der Rechner lost; also Bestimmen der zufälligen Zuordnung der Spieler auf die erste Spiele durch den Rechner.

Bei den Rechnervarianten muss auf jeden Fall ein Algoritmus oder eine Tabelle für die Eintragung der Freilose her. So wie sich das hier darstellt habe ich aber gute Hoffnung, dass das mittels Algoritmus klappt. Ich denke mal, das System haben sich schlaue Leute ausgedacht.

Gruß Oki
42
  Mit Zitat antworten Zitat
Optiplex

Registriert seit: 5. Mär 2008
131 Beiträge
 
Delphi 2005 Personal
 
#44

Re: Neue Komponente mit 2 TEdit Komponenten

  Alt 10. Jun 2009, 15:47
habs doch noch gefunden,
also die Freilose werden folgendermaßen verteilt
freilos1 = Spieler 16 kommt auf Pos 1 im Spielplan
freilos2 = Spieler 15 kommt auf Pos 16 im Spielplan usw.
siehe Folgende Tabellen

16 Spielplan

SpielerNr 9 Pos.Nr 12 FreilosNr 8
SpielerNr 10 Pos.Nr 5 FreilosNr 7
SpielerNr 11 Pos.Nr 13 FreilosNr 6
SpielerNr 12 Pos.Nr 4 FreilosNr 5
SpielerNr 13 Pos.Nr 9 FreilosNr 4
SpielerNr 14 Pos.Nr 8 FreilosNr 3
SpielerNr 15 Pos.Nr 16 FreilosNr 2
SpielerNr 16 Pos.Nr 1 FreilosNr 1

32 Spielplan

SpielerNr 17 Pos.Nr 12 FreilosNr 16
SpielerNr 18 Pos.Nr 21 FreilosNr 15
SpielerNr 19 Pos.Nr 28 FreilosNr 14
SpielerNr 20 Pos.Nr 5 FreilosNr 13
SpielerNr 21 Pos.Nr 13 FreilosNr 12
SpielerNr 22 Pos.Nr 20 FreilosNr 11
SpielerNr 23 Pos.Nr 29 FreilosNr 10
SpielerNr 24 Pos.Nr 4 FreilosNr 9
SpielerNr 25 Pos.Nr 9 FreilosNr 8
SpielerNr 26 Pos.Nr 24 FreilosNr 7
SpielerNr 27 Pos.Nr 25 FreilosNr 6
SpielerNr 28 Pos.Nr 8 FreilosNr 5
SpielerNr 29 Pos.Nr 16 FreilosNr 4
SpielerNr 30 Pos.Nr 17 FreilosNr 3
SpielerNr 31 Pos.Nr 32 FreilosNr 2
SpielerNr 32 Pos.Nr 1 FreilosNr 1
Freilose werden immer vom letztmöglichen Spieler rückwärts aufgefüllt und an die entsprechende Position gesetzt, dadurch werden sie Gleichmäßig auf dem Spielplan verteilt

muss aber jetzt dringend weg bis die Tage Dieter
  Mit Zitat antworten Zitat
Optiplex

Registriert seit: 5. Mär 2008
131 Beiträge
 
Delphi 2005 Personal
 
#45

Re: Neue Komponente mit 2 TEdit Komponenten

  Alt 15. Jun 2009, 12:18
Hallo Oki,
ich finde wir sollten das mit den Verlierern hier fertig machen und für die Komponenten einen neuen Thread eröffnen.

ich habe mal 2 Tabellen mit den Spielen und Runden angehängt und zwar eine mit 16 und 32 Spielern um mal eine andere Sicht zu bekommen, dabei ist mir aufgefallen, dass die Anzahl Spiele Loser1=Loser2, L3=L4, L5=L6 usw. (nach jeder Doppelrunde Div 2) gleich ist, das sieht für mich so aus als wenn die Anzahl der Spiele auf der Verliererseite jede Runde 2x existiert, von den Sprungbefehlen Gewinner nach Verliererseite, geschieht dies in den runden L2 , L4 , L6 usw. Vielleicht hilft uns diese Ansicht weiter. Wenn ja müssen wir nur noch die Sprünge (wo springt jeder Verlierer der Gewinnerrunde genau in die Verliererrunde ein) berücksichtigen.


Gruß Dieter
Miniaturansicht angehängter Grafiken
32sp_558.jpg   16sp_150.jpg  
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 5 von 5   « Erste     345   


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 17:24 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