我创建了对象,用random
选择了哪种类型的地形以及它有哪些天气。这对于一个地方来说没什么问题,但是现在我想让它更大并创建一个地图。我创建了一个包含numpy
的矩阵,其中包含几个地形,但我不希望它是随机的,因为在示例中您可以看到在海边有一个湖,它没有意义。 如何创建此地图以使其看起来真实?
例如,我有这种地形类型的矩阵:
[['high mountain' 'high mountain' 'high mountain']
['town' 'town' 'forest']
['house' 'lake' 'sea']]
这天气:
[['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
我想使用我发现here的这个功能:
def weighted_choices(choices, weights):
import random as rdm
total = sum(weights)
treshold = rdm.uniform(0, total)
for k, weight in enumerate(weights):
total -= weight
if total < treshold:
return choices[k]
在检查了四个边或至少已经创建的边之后,根据设定的权重偏好(我可以设置Psea = 0)创建新地形。
期望的结果应该考虑哪个是将要创建的地形的周围地形的类型,并使用weighted_choices函数协调它所具有的地形和天气类型或其他功能。
[['high mountain' 'high mountain' 'high mountain']
['town' 'town' 'forest']
['house' 'countryside' 'sea']]
这天气:
[['windy' 'sunny' 'cloudy']
['sunny' 'light' 'cloudy']
['light' 'sunny' 'light']]
我尝试是创建一个随机地图,然后手动检查并替换其他人不喜欢的地形。但我没有找到考虑周围环境的方法。
答案 0 :(得分:1)
有许多随机地图生成方法可以尝试解决您尝试解决的确切问题。没有普遍的答案。 Gamedev将是一个很好的地方,可以提出更详尽的可能性列表。对于我所知道的一种方法,我只想用fairly detailed tutorial回答。
答案 1 :(得分:1)