![]() |
Funktion der übergeordneten Klasse aufrufen
Ich möchte eine Art Scrabble programmieren.
Dazu habe ich mir folgenden noch rein theoretischen Spielaufbau überlegt:
Delphi-Quellcode:
TSpielfeld wird global beim Programmstart erzeugt, im Create davon auch die einzelnen Felder.
TSpielfeld = class
private Feld: array of array of TFeld; ... public function FeldHatNachbar(x , y: integer) : boolean; end; TFeldStatus = (fsEmpty, fsWertx1, fsWertx2, fsWertx3); TFeld = class public Bild : TImage; Letter : char; Status : TFeldStatus; ... end; Während der Laufzeit möchte ich im OnClick des TImage von Feld die anderen Feld Properties setzen und das TImage ändern, was ja alles kein Problem ist. Nur wie rufe ich aus "TFeld.OnClick" heraus die Funktion FeldHatNachbar von TSpielfeld auf? Ist ja sozusagen dem übergeordnet. Sehe da irgendwie keinen Ansatz. Wenn jemand nen besseren generellen Spielaufbau kennt, lass ich mich davon natürlich auch überzeugen. Ist ja alees noch Theorie. |
Re: Funktion der übergeordneten Klasse aufrufen
Hallo,
also erstmal solltest Du prinzipiell auf public Felder verzichten und statt dessen Properties verwenden. Was das eigentliche Problem angeht, kannst Du ja einfach im Konstruktor von TFeld das Spielfeld als Owner übergeben und Dir in jedem TFeld merken. Dann wäre es allerdings sinnvoll TSpielfeld von TCollection und TFeld von TCollectionItem abzuleiten - dort ist die gesamte Grundfunktionalität schon implementiert. Schau Dich mal in der Delphi-Hilfe zu beiden Klassen um. |
Re: Funktion der übergeordneten Klasse aufrufen
Das sind natürlich in Wirklichkeit natürlich Properties, hatte es nur eben so hin geschrieben, da es weniger Schreibarbeit war.
Owner ist ne gute Idee, die Klassen TCollection und TCollectionItem schau ich mir morgen mal an. Danke Dir schon mal! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:04 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