【问题标题】:How to use noise to generate 2d tile based terrain?如何使用噪声生成基于 2d 瓦片的地形?
【发布时间】:2021-12-15 22:59:32
【问题描述】:

我正在尝试在 pygame 中制作基于 2d 瓷砖的游戏。我已经实现了一种算法,将二维数组中的字符转换为图块,位置来自数组中字符的行和列。例如-

数组-(手动输入“地形”)

游戏-(数组中的g和s分别对应草和石头。)

这里

现在,我想在列表中生成带有某种噪音的“G”,因此我可以进一步实现它以无限生成。我在这方面看到的一些文档真的很难理解 :(。那么我如何使用噪音来自动生成地形中的“G”?谢谢!

【问题讨论】:

标签: python noise


【解决方案1】:

我建议逐列生成您的世界。因为我认为这是某种从左到右的平台游戏,所以这会更有意义。

下面是一个小sn-p,向您展示了一个可能的简单逻辑。 S 的数量是固定的,G 在每个新步骤中可以变化 +1/0/-1。最后最后一行是转换成你的行格式来显示:

import random
l = 9 # world height
g = 2 # initial number of G
out = []
for i in range(15):
    g += random.randint(-1, 1)
    g = max(0, min(g, l))
    s = ' '*(l-g-1)+'G'*g+'S'
    out.append(s)
worldArray = [''.join(s) for s in zip(*map(list, out))]

例子:

['               ',
 '               ',
 '               ',
 '               ',
 '               ',
 'G   G         G',
 'GG GGG   G GGGG',
 'GGGGGGG GGGGGGG',
 'SSSSSSSSSSSSSSS']

现在最重要和最棘手的部分将是找到合适的参数来随机改变世界。例如,您可能希望或多或少地频繁更改高度(然后使用例如非均匀随机函数)

【讨论】:

  • 谢谢!我想我可以用这个!
  • 我已经搞砸了很多,不幸的是它并没有给出我想要的结果
  • 你能详细说明吗?
  • 其实 nvm,你的想法到目前为止工作得很好
猜你喜欢
  • 2013-06-30
  • 2020-08-30
  • 1970-01-01
  • 1970-01-01
  • 2014-02-08
  • 2018-10-07
  • 2011-08-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多