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
 
oki

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

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
 


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 12:25 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