1

重複の可能性:
ダイアモンド スクエア アルゴリズム

ダイヤモンド スクエア アルゴリズムを使用して、2D ゲームで地形を生成しようとしています。アルゴリズムを説明している多くのリソースを見つけましたが、実際に C++ で実装する方法を示しているものはありません。タイル ベースのゲームを作成しており、アルゴリズムを使用してランダムな世界 (水、砂、草、山) を生成したいと考えています。私の計画は、ダイヤモンド スクエア アルゴリズムの値を使用してタイルを決定することです。元。値が 1 未満の場合、水。値が 10 より大きい場合、山。等。

つまり、基本的に私が求めているのは、私が見て微調整できるダイヤモンド スクエア アルゴリズムの C++ の例を誰かが持っているということです。

4

1 に答える 1

8

ここで、アルゴリズムの実用的なC ++実装を見つけることができます(Noise関数とそのヘルパー関数を参照してください)。

また、バイキュービック補間を使用して、ダイヤモンド二乗アルゴリズムが標準の双一次内挿で作成するアーティファクトを防ぐため、実装はやや複雑であることに注意してください(下の画像のスパイクを参照)。

ここに画像の説明を入力してください

免責事項:私はそのプロジェクトの作者です(GPLv2ライセンスの条件の下でコードを自由に使用してください)

于 2012-01-14T14:52:30.700 に答える