山の上を飛び回るScratchのプログラムを作りたいと思いたち、
まずは、山の生成プログラムをpythonで作りました。
山はフラクタル構造をもっているので、単なる乱数ではそれらしいものは作れません。
どういったアルゴリズムで作れるのかを調べると、
Diamond-square algorithm というものがwikipedia に掲載されていました。
この基本原理をもとに、pythonで山の生成クラスを作ってみました。
再帰を使っています。
サイズは、3, 5, 9, 15, … と2^n-1 (nは自然数)で表される大きさ限定になります。
サイズが129×129でも1025×1025でも、雰囲気が変わらないところがフラクタルですね。
いい感じにできたかなと思います。
プログラムはgithubでも公開しました。
サイズを入れれば、地形の高さを要素に持つ2次元行列を生成する関数です。
https://github.com/itoshin-tech/fractal2d.py
あとは、Scratchでこれをどう実装するか、どう描画するか、などを考えます。
コメントを残す