Lege erst einmal eine Klasse für ein Feld an:
Delphi-Quellcode:
type
TFeld = class; // Prädeklaration
TFeld = class
// Dein Image
Image: TImage;
// Und hier der Verweis auf den Nachfolger
Next: TFeld;
end;
TStrasse = class(TFeld)
Gekauft: TImage;
Name: string;
Mietkosten: word;
end;
TEWWerk = class(TFeld)
Gekauft: TImage;
Name: string;
end;
TKnast = class(TFeld)
NurzuBesuch: boolean;
end;
TLosFeld = class(TFeld);
TPolizist = class(TFeld);
var
aktFeld, erstesFeld, knastFeld: TFeld;
procedure TForm1.OnCreate(Sender:TObject);
var
i: byte;
begin
// Felder erstellen
aktFeld := TLosFeld.Create;
aktFeld.Image := TImage.Create;
erstesFeld := aktFeld;
for i := 0 to 14 do begin
aktFeld.Next := TFeld.Create;
aktFeld := aktFeld.next;
aktFeld.Image := TImage.Create;
aktFeld.Gekauft := TImage.Create;
end;
aktFeld.Next := erstesFeld;
aktFeld := erstesFeld;
end;
procedure Ziehen(Augensumme:Byte);
begin
for Augensumme := 1 to Augensumme do begin
aktFeld := aktFeld.Next;
if aktFeld is TLosFeld then Geld := Geld+100;
if aktFeld is TKnast then TKnast(aktFeld).NurzuBesuch := true;
end;
if aktFeld is TPolizist then GeheInDenKnast;
...
end;
procedure GeheIndenKnast;
begin
aktFeld := knastFeld;
TKnast(aktFeld).NurZuBesuch := false;
end;
Der Code ist nicht getestet, er soll nur das Prinzip erklären.