Also die vier Sachen wirst du vermutlich nicht mit einer gemeinsamen Vorfahrklasse abbacken können (höchstens vielleicht Map und Minimap). Frag dich immer, welche deiner Sachen gemeinsame Eigenschaften und Verhaltensweisen haben. Im allgemeinen merkst du das auch spätestens beim Coden: Wenn du den gleichen Code in drei verschiedenen Klassen schreiben musst, spätestens dann solltest du dir mal Gedanken über Vererbung machen...
Wo du schon eher auf einen Nenner kommst sind deine "Objekte" (Bäume etc.). Ich spinntisiere jetzt einfach mal ein bisschen:
Delphi-Quellcode:
type TSpielobjekt = class
private
FPosition: TPoint;
public
constructor Create; virtual;
destructor Destroy; virtual;
property Position: TPoint read FPosition write FPosition;
... // Was halt ALLE Spielobjekte sonst noch gemeinsam haben sollen
end;
TVegetation = class(TSpielobjekt)
// Hier alles was speziell Bäume und Pflanzen betrifft. Was weiß ich, ob die gerade blühen oder so halt
end;
TBewegliches = class(TSpielobjekt)
private
public
procedure Move(Richtung: TPoint; Staerke: integer); virtual;
end;
// So und jetzt die Endklassen ableiten:
TBaum = class(TVegetation)
// Alles was ganz speziell NUR den Baum betrifft
end;
TTier = class(TBewegliches)
// Alles was ganz speziell NUR die Tiere betrifft, z.B. Raubtier: boolean
end;
So ist natürlich ein bisschen Overkill so wie es da jetzt steht. Aber hat ja auch keinen Anspruch auf Vollständigkeit. Das lässt sich sehr einfach warten und handhaben und außerdem problemlos erweitern. Zum Beispiel eine von TSpielobjekt abgeleitete Klasse TGebaeude.
Hoffe das hilft.