1

単純なタイルベースの画像では、草の各領域が各正方形に同じ草タイルが繰り返されている場合、恐ろしいモアレ パターンのように見えますが、3 つまたは 4 つの草タイルが交互に配置されている場合、驚くほど自然に見えます。

これを生成するための好ましい方法は、各タイルがその座標の単純なハッシュを介して選択されることです。(別の可能な実装は、ゲームの開始時にランダムに選択されることですが、可能であればハッシュ関数を好みます。)

ハッシュ関数に必要なプロパティは次のとおりです。

  • できるだけ高速 (理想的には x+y mod N のようなもの)、暗号化プロパティは必要ありません
  • 出力にピリオドは表示されません。x+y mod N は、各行で常に同じ N 個のタイルを繰り返すため、失敗します。

「seed(coords); return randomrange(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 に答える