未验证 提交 2a8b5fb4 编写于 作者: A Albus Dumbledore 提交者: Gitee

update Create/create_world.py.

烦人的柏林噪声,准备重构
Signed-off-by: NAlbus Dumbledore <12715348+Albus-Dumbledore-Al@user.noreply.gitee.com>
上级 c5d8d5bb
......@@ -40,65 +40,8 @@ class CreateHole:
# CreateHole_ = CreateHole()
# CreateHole_.crash()
#以下全为柏林噪声地形生成###################################################
def generate_berlin_noise(width, height, scale=10):
noise = [[random.random() * scale for _ in range(width)] for _ in range(height)]
return amap(noise)
def generate_terrain(world, noise, threshold):
height, width = len(noise), len(noise[0])
for y in range(height):
for x in range(width):
if noise[y][x] > threshold:
world[y][x] = "1"
def generate_random_seed(width, height):
seed = [[random.randint(0, 255) for i in range(width)] for j in range(height)]
return amap(seed)
def apply_bitmap_filter(seed, bitmap_filter_size=3):
kernel = amap([[1 for i in range(bitmap_filter_size)] for j in range(bitmap_filter_size)]) / (bitmap_filter_size ** 2)
filtered_seed = amap([[0 for i in range(len(seed[0]))] for j in range(len(seed))])
for i in range(len(seed) - bitmap_filter_size + 1):
for j in range(len(seed[0]) - bitmap_filter_size + 1):
filtered_seed[i:i + bitmap_filter_size, j:j + bitmap_filter_size] += (seed[i:i + bitmap_filter_size, j:j + bitmap_filter_size] * kernel).astype(int)
return filtered_seed
def generate_berlin_noise_map(width, height, scale=10, threshold=0.6, bitmap_filter_size=3):
noise = generate_berlin_noise(width, height, scale)
seed = generate_random_seed(width, height)
filtered_seed = apply_bitmap_filter(seed, bitmap_filter_size)
noise_map = filtered_seed / 255.0 * noise
generate_terrain(world, noise_map, threshold)
return world
# 上面提供的修改后的柏林噪声代码
# def display_berlin_noise_map_terminal(world):
# for row in world:
# for cell in row:
# if cell == '1':
# sys.stdout.write('\033[30;47m \033[m') # 白色方块
# else:
# sys.stdout.write('\033[30;42m \033[m') # 绿色方块
# sys.stdout.write('\n')
# width = 40 # 地图宽度
# height = 40 # 地图高度
# scale = 10 # 噪声的缩放因子
# threshold = 0.6 # 阈值,控制地形生成
# bitmap_filter_size = 3 # 位图滤波器的大小
# noise_map = generate_berlin_noise_map(width, height, scale, threshold, bitmap_filter_size)
# 显示方法
###########################################################################
class PerlinNoise:
pass
Temple_1=[
["9", "9", "9", "9", "9", "9", "9", "9", "9", "9", "9", "9", "9"],
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册