type TMyTerrainAlgorithm = class(TRandomTerrainAlgorithm) protected procedure Generate(); public function GetHeightMap() : TBitmap; override; end; { TMyTerrainAlgorithm } procedure TMyTerrainAlgorithm.Generate(); var x, z: Integer; i : Integer; begin System.SetLength(FData, 256); for i := 0 to High(FData) do System.SetLength(FData[i], 256); for x := 0 to 255 do for z := 0 to 255 do begin FData[x, z] := Random(100) / 100; end; end; function TMyTerrainAlgorithm.GetHeightMap() : TBitmap; begin Generate(); result := inherited; end; LMyTerrainAlgorithm := TMyTerrainAlgorithm.Create(); try FTerrain.RandomTerrain(LMyTerrainAlgorithm); finally FreeAndNil(LMyTerrainAlgorithm); end;