Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [oop] funktion einer oberklasse von einer unterklasse aus (https://www.delphipraxis.net/97399-%5Boop%5D-funktion-einer-oberklasse-von-einer-unterklasse-aus.html)

Hansa 10. Aug 2007 10:03

Re: [oop] funktion einer oberklasse von einer unterklasse au
 
Zitat:

Zitat von Luckie
..Und mit dem Array hätten wir dann den OOP Pfad wieder verlassen. ;)..

Da hat er zwar Recht, aaaber :mrgreen: soweit ich weiß werden die Karten im Quadrat angeordnet. Wird eine Anweisung gebraucht "drehe Karte in Reihe 2 Spalte 4 hoch", dann sollte man das 2-dimensional nachbilden. Allerdings wäre es tatsächlich nicht schlecht, wenn die Karte selber wüsste, ob sie schon umgedreht ist oder nicht, wie sie angezeigt wird usw. Also wirklich OOP-mäßig. Was bietet sich da nun am besten an ? Wer hätte es gedacht ? Ein Stringgrid. Man könnte auch eine Stringliste nehmen, aber die hat keine bereits eingebauten Spalten und Zeilen. Die Funktion des Spiels kann man da ganz einfach in die Objects-Eigenschaft reinpacken.

P.S.: eigene Klasse TField sollte nicht so bezeichnet werden. Das Wort ist von Delphi bereits belegt. Das kommt davon, wenn man keine deutschen Bezeichner verwendet und solche Probleme wohl gar nicht erst auftauchen würden. Wenn schon, dann "TFeld". :mrgreen:

Luckie 10. Aug 2007 11:07

Re: [oop] funktion einer oberklasse von einer unterklasse au
 
Zitat:

Zitat von Hansa
Da hat er zwar Recht, aaaber :mrgreen: soweit ich weiß werden die Karten im Quadrat angeordnet. Wird eine Anweisung gebraucht "drehe Karte in Reihe 2 Spalte 4 hoch", dann sollte man das 2-dimensional nachbilden.

Und was hat das mit einem zwei dimensionalen Array zu tun?
Delphi-Quellcode:
procedure TMemoryField.IniTMemoryField;
var
  i                : Integer;
  Card             : TCard;
begin
  for i := 0 to FCountCards - 1 do
  begin
    Card := TCard.Create(nil);
    Card.Parent := FParent;
    Card.Font.Style := [fsBold];
    Card.Font.Size := 14;
    Card.OnFlip := OnFlip;

    Card.Height := 50;
    Card.Width := 50;
    Card.Left := (Card.Width + FPadding) * (i div Trunc(sqrt(FCountCards)));
    Card.Top := (Card.Height + FPadding) * (i mod Trunc(sqrt(FCountCards)));

    if not Odd(i) then
      Card.Value := i
    else
      Card.Value := i - 1;

    Add(Card);
  end;
end;
Und schon sind sie quadratisch angeordnet.


Zitat:

Allerdings wäre es tatsächlich nicht schlecht, wenn die Karte selber wüsste, ob sie schon umgedreht ist oder nicht, wie sie angezeigt wird usw. Also wirklich OOP-mäßig. Was bietet sich da nun am besten an ? Wer hätte es gedacht ? Ein Stringgrid. Man könnte auch eine Stringliste nehmen, aber die hat keine bereits eingebauten Spalten und Zeilen. Die Funktion des Spiels kann man da ganz einfach in die Objects-Eigenschaft reinpacken.
Ich habe Panels genommen. ;) Lös dich endlich mal von deinem Zeilen und Spalten. Die sind für die Logik vollkommen unerheblich.

Ich habe es noch etwas ausgearbeitet. Ich werde es gleich hier vorstellen in der OpenSource-Sparte.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:28 Uhr.
Seite 2 von 2     12   

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