Einzelnen Beitrag anzeigen

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, 08: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