Hallo,
ich zeige dir, wie du Klassen grundsätzlich hinbekommst.
Danach ist es an dir, falls du weitere Hilfe brauchst,
deinen erarbeiteten Code zu zeigen.
Noch ein Tipp: mit dem goldenen Helm Icon kannst du einen
Code Block ins Forum einfügen.
Nehmen wir mal an, du hast eine Form
Unit und willst, weil man
das sinnvollerweise so macht die eigentliche Spiellogik (Geschäftslogik)
in einer separaten
Unit mit 1-N Klassen drin umsetzen.
Dann klickst du in der Projektverwaltung dein Projekt mit der rechten
Maustaste an und wähst "Neue hinzufügen">"
Unit". Das erzeugt eine
leere
Unit. Diese unter einem sinnvollen Namen abspeichern.
Du solltest dann sowas wie das haben:
Delphi-Quellcode:
unit HanoiLogik;
interface
implementation
end.
Alles was du in den Interface Abschnitt schreibst kann von anderen Units,
welche diese
Unit einbinden (also z.B. dein Hauptformular) aufgerufen werden.
Die eigentliche Umsetzung ist dann zwischen Implementation und end.
Nun musst du eine Klasse definieren.
Deine
Unit dürfte dann ca. so aussehen:
Delphi-Quellcode:
unit HanoiLogik;
interface
type
THanoi =
class(TObject)
private
public
end;
implementation
end.
So, in diese Klasse baust du alle Felder und Methoden ein die du brauchst um
die Spiellogik umzusetzen. Was jemand an der Klasse aufrufen können soll,
gehört nach public.
Hier mal ein bisschen Testcode drin um dir den Aufruf aus dem Hauptformular zu zeigen:
Delphi-Quellcode:
unit HanoiLogik;
interface
type
THanoi =
class(TObject)
private
FCounter : Integer;
public
function GetNextCounterValue:Integer;
end;
implementation
function THanoi.GetNextCounterValue:Integer;
begin
inc(FCounter);
Result := Counter;
end;
end.
So, nun wollen wir in der MainForm diese Klasse benutzen:
1. Die
Unit HanoiLogik im Hauptformular einbinden.
2. Ein Feld von dieser Klasse definieren.
3. Ein OnCreate Event in der Form erzeugen (Form Designer!)
und dort eine Objektinstanz erzeugen, die in diesem Feld gespeichert wird.
4. Ein OnClose Event in der Form erzeugen und dort die Objektinstanz freigeben.
5. Ein Label auf der Form platzieren.
6. Einen Button und für diesen einen OnClick Handler erstellen. In diesem
GetNextCounterValue aufrufen und das Ergebnis auf dem Label anzeigen.
Dein Hauptformular dürfte dann ungefähr so aussehen:
Delphi-Quellcode:
Unit Main;
uses
[...was auch immer Delphi da hin gepackt hat], HanoiLogik;
interface
type
TMainForm =
class(TForm)
Label1: TLabel;
// möglichst besser benennen
Button1: TButton;
// dito.
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject);
procedure ButtonClick(Sender : TObject);
private
FHanoiLogic:THanoi;
public
end;
implementation
procedure TMainForm.FormCreate(Sender: TObject);
begin
FHanoiLogic := THanoi.Create;
// erzeugt die Objektinstanz
end;
procedure TMainForm.FormClose(Sender: TObject);
begin
FHanoiLogic.Free;
// Aufräumen bei Programmende
end;
procedure TMainForm.ButtonClick(Sender : TObject);
begin
Label1.Caption := IntToStr(FHanoiLogic.GetNextCounterValue);
end;
So, das sollte einen Start ermöglichen.
Noch eine Frage: Welche Delphi Version benutzt du?
Grüße
TurboMagic