water_height = 40 height_divider = 20 half_width = map_width / 2 half_height = map_height / 2 max_len = hf.len(half_width, half_height) #setting terrain types for x in range(map_width): for y in range(map_height): noise = int(gen.fractal(x, y, octaves, persistence, freq, min, max)) + 120 noise *= pow(hf.len(x - half_width, y - half_height) / max_len, 0.75) noise = hf.roundToNearest(noise, 30) map_data[x + map_width * y][1] = noise #setting terrain types if noise > mountain_height: map_data[x + map_width * y][0] = tileTypes["MOUNTAINS"] map_data[x + map_width * y][1] = int( gen.fractal(x, y, octaves, persistence, freq, 200, 400)) elif noise < water_height: map_data[x + map_width * y][0] = tileTypes["WATER"] #adding trees #print noise, tree_band[0], tree_band[1] if int(noise) in range(tree_band[0], tree_band[1]): td = gen.fractal(x + 100, y + 100, octaves, persistence, 0.1, 0, 1) if 0 < (td):
max = 255 #setting some limits to divide the heightfield into terrain types peak_height = 190 mountain_height = 170 tree_band = (90, 150) tree_density_scale = 0.5 water_height = 90 height_divider = 20 #setting terrain types for x in range(map_width): for y in range(map_height): noise = int(gen.fractal(x, y, octaves, persistence, freq, min, max)) map_data[x + map_width * y][1] = hf.roundToNearest(noise, 25) / height_divider #setting terrain types if noise > peak_height: map_data[x + map_width * y][0] = tileTypes["MOUNTAINS"] map_data[x + map_width * y][1] = int( gen.fractal(x, y, octaves, persistence, freq / 2, min, max)) / (height_divider / 2) elif noise > mountain_height: map_data[x + map_width * y][0] = tileTypes["MOUNTAINS"] map_data[x + map_width * y][1] = int( gen.fractal(x, y, octaves, persistence, freq / 2, min, max)) / 12 elif noise < water_height: map_data[x + map_width * y][0] = tileTypes["WATER"] #adding trees