Python 地图RPG创建模拟

Python 地图RPG创建模拟,python,Python,我创建了一个对象,它用随机选择地形类型和天气。这对于一个地方来说是很好的,但是现在我想把它放大并创建一张地图。我用numpy创建了一个包含多个地形的矩阵,但我不希望它是随机的,正如您在示例中看到的,在海边有一个湖,这没有意义如何创建此地图以使其看起来真实? 例如,我有一个地形类型矩阵: [['high mountain' 'high mountain' 'high mountain'] ['town' 'town' 'forest'] ['house' 'lake' 'sea']] 而这种

我创建了一个对象,它用
随机
选择地形类型和天气。这对于一个地方来说是很好的,但是现在我想把它放大并创建一张地图。我用
numpy
创建了一个包含多个地形的矩阵,但我不希望它是随机的,正如您在示例中看到的,在海边有一个湖,这没有意义如何创建此地图以使其看起来真实?

例如,我有一个地形类型矩阵:

[['high mountain' 'high mountain' 'high mountain']
 ['town' 'town' 'forest']
 ['house' 'lake' 'sea']]
而这种天气:

[['windy' 'sunny' 'cloudy']
 ['sunny' 'light' 'cloudy']
 ['light' 'sunny' 'light']]
[['windy' 'sunny' 'cloudy']
 ['sunny' 'light' 'cloudy']
 ['light' 'sunny' 'light']]
可能的地形有:洞穴、废弃房屋、城堡、河流、森林、房屋、山脉、高山、丛林、沙漠、海洋、湖泊、城镇、城市、乡村

可能的天气有:多雨,晴朗,多云,暴风雨,刮风,晴朗

目前,我是这样创建的:

map_1=numpy.eye(3, dtype=object)
for i in range(3):
    for j in range(3):
        map_1[i,j]=Place()
#Where Place it is the object that randomly generates the terrain and the weather
我想使用我发现的这个函数:

而这种天气:

[['windy' 'sunny' 'cloudy']
 ['sunny' 'light' 'cloudy']
 ['light' 'sunny' 'light']]
[['windy' 'sunny' 'cloudy']
 ['sunny' 'light' 'cloudy']
 ['light' 'sunny' 'light']]

我所尝试的是创建一个随机地图,然后手动检查并用我不喜欢的地形替换其他地形。但是我没有找到一种考虑周围环境的方法。

有许多随机地图生成方法,它们试图解决您正试图解决的问题。没有普遍的答案。Gamedev将是一个很好的地方,可以把你的问题列在一个更详尽的可能性列表中。我将简单地用我所知道的一对一方法来回答。

你在寻找相干噪声。你想要随机数,但你想让它们考虑周围的随机数。例如,如果你想考虑一个地区的湿/干,你可能有一个森林旁边的草原,草原旁边的沙漠,但它是不太可能的森林旁边的德雷特。另一个例子,如果你想考虑天气,你可能在阴雨区和阴雨区附近有阳光区域,但是你可能希望阳光和雨季很少相邻。
解释相干噪声的产生。当我研究这个主题(用于地图生成)时,我写了笔记。

这个问题似乎离题了,因为它属于@jornsharpe,我已经在那里检查过了,它也不适合那里。我问我如何编程,使我认为它适合这里。但是如果我没有收到答案,我会尝试一下,让这个问题更适合这里,提供以下内容:确切地说你想要发生什么,确切地说目前正在发生什么(如果出现错误,提供回溯,如果意外输出提供输入,预期输出,实际输出)。“不是很有效”是不够的信息。如果您有可以工作但需要改进的代码,您可以尝试很好的解释,尽管我还没有详细阅读。我希望我能理解并申请。是应用噪波来纠正随机生成的贴图,还是在生成贴图之前应用噪波更好?如果你的帖子中已经回答了这个问题,那么省略这个问题;)ThanksI发现,当您使用随机数生成地图的某些/属性(如高度或湿度),然后使用这些属性生成地图时,它工作得很好。即使映射不是数字,属性也可以是数字。例如,您可以使用相干噪波生成高度(数字),然后可以选择高度范围为海、乡村、山、山。首先是噪音,然后是地图,用于这些“大”特征。但是,您也可以先制作地图,然后为“小”特征(如岩石和树木等)添加噪波。