可能な重複:
ダイヤモンドスクエアアルゴリズム
私はダイヤモンドスクエアアルゴリズムを使って私の2Dゲームで地形を生成する。アルゴリズムを説明する多くのリソースが見つかりましたが、C ++で実装する方法を実際には示していません。私はタイルベースのゲームを作成しており、ランダムな世界(水、砂、草、山)を生成するアルゴリズムを使用したいと考えています。私の計画は、タイルを決定するためにダイヤモンドスクエアアルゴリズムの値を使用することです。 Ex。値が1未満の場合、水。値が10より大きい場合、山です。等。
だから基本的に私が尋ねるのは、だれでもC ++のダイアモンドスクエアアルゴリズムの例があります。
回答:
回答№1は6あなたは、アルゴリズムの動作C + +の実装を見つけることができます ここに (ノイズ関数とヘルパー関数を参照してください)。
また、その実装はややこしいことに注意してくださいこれはバイキュービック補間を使用して、ダイアモンド・スクエア・アルゴリズムが標準の双一次補間で生成するアーティファクトを防ぎます(下の画像のスパイクを参照)。
免責事項:私はそのプロジェクトの著者です(GPLv2ライセンスの条件でコードを自由に使用してください)