1

在一个简单的基于瓦片的图像中,如果每个草地区域都有相同的草地瓦片在每个方格上重复出现,它看起来就像一个可怕的云纹图案,但如果交替使用三四个草瓦片,它看起来就非常自然。

最好的方法是通过其坐标的简单散列选择每个图块。(另一种可能的实现是在游戏开始时随机选择它们,但如果可能的话,我更喜欢散列函数。)

哈希函数的必要属性是:

  • 尽可能快(最好是 x+y mod N),不需要加密属性
  • 输出上没有可见的句点:例如。x+y mod N 失败,因为它总是在每一行中重复相同的 N 个图块

是否有一个简单的算术哈希可以工作,并且比“种子(坐标);返回随机范围(N)”更简单,但如果输入是“(0,0)”,“(1,0)”,“( 2,0)"... 输出中没有可见的模式?

在游戏开始时生成一些随机数据会更好吗?

4

1 回答 1

1

我会尝试类似的东西

hash(coords) % number_of_tiles

Python 的内置hash()函数并不是真正的伪随机行为,但为了这个目的,它可能已经足够好了。

这是一个包含 7 个图块的示例:

>>> for x in range(10):
...     for y in range(10):
...         print ".oO^v<>"[hash((x, y)) % 7],
...     print
... 
O < o v . ^ > O > O
. v o < < O > ^ v o
< o > O . ^ o v O <
^ . O > o < . v > ^
o v . ^ ^ > O < v .
> ^ . v o < O > O >
. ^ o v < o > O v .
< O v o . v > ^ O >
v . ^ > O < o v . ^
O > ^ . . v o < < O
于 2012-07-18T12:41:33.027 回答