Scratch ゲーム用のランダム マップ生成チュートリアル

Don't Starveや Minecraft など        、多くのサバイバル/サンドボックス ゲームでは、マップがランダムに生成されることがよくあります。では、これをスクラッチで実現するにはどうすればよいでしょうか?

        スクラッチでこれを行うには、ブラシとクローンの 2 つの方法があります。まずクローンについて話しましょう。

        最初にクローンを正方形に設定し、次に互いに接続して大きな正方形のマップを形成できます。これらのクローンは色を変更して、さまざまな地形 (砂漠、森林、平原など) をシミュレートできます。よく考えてください。これらは正方形です。私の世界のブロックに似ていますか?そうです、これはマインクラフトの原理に似ていますが、私たちのものは2Dです。

        ヒント: このプログラムを作成するには、無限コピーをオンにする必要があります。

実践的な部分に移りましょう。


1. クローンを描画する

        まず、辺の長さが 15 グリッド (グリッドの座標は 4 で、辺の長さは 60 座標) の境界線のない正方形を描画しましょう。もちろん他のサイズに設定することもできますが、これは計算に便利な整数です。(正方形は少し大きくても構いません。そうしないと、拡大したときにわずかな隙間ができます)

写真が示すように

写真が示すように

2. プログラムを書く

        まず、行数、列数、クローン数、プライベート クローン数 (プライベート変数) といういくつかの変数を設定します。

        行と列の数はマップのサイズを指し、10 行 10 列のマップには 100 のグリッドがあります。クローンとプライベート クローンの数は、クローンが自分自身の番号とその番号を把握し、どの列と行にあるべきか、その座標がどこにあるかを知るのに役立ちます。

        プログラムの最初の部分では、初期変数 (ここではサイズが 10*10 に設定されています) を設定し、本体を非表示にし、クローンの数を 1 つ増やして自分自身を 1 回クローンします。理解するのは簡単ですが、難しいのはクローンの手順です。

オントロジープログラム

オントロジープログラム

        次に、クローン プログラムを見てみましょう。最初に表示し、プライベート クローンの数を現在のクローンの数に設定します (言うまでもなく、この手順では、プライベート変数はクローン自体が所有できます。これは、自分に番号を付けるのと同じです)。 。

        本体に一個ずつクローンをコピーさせるのは遅すぎるので、クローンをコピーさせ、そのクローンから新しいクローンを作成させると良いでしょう。指数関数的に増加し、速度は数十倍に向上し、1万部のコピーさえ瞬く間に終わります。合計数が行と列の数に等しくなるまで、クローンに複製を繰り返してもらいます。

        上記のプログラムを実行して、クローンの数が一瞬で100個に達すれば成功です。次のステップは、クローンを適切な場所に置き、正方形に配置することです。(効果を観察しやすいように、最初に行と列の数を 3*3 に変更します。また、コンピューターがフリーズしたくない場合は、100*100 を超えないことが最善です)

        まず、クローンの 2 つのプライベート変数、つまり x と y を設定します。これら 2 つの変数は、クローンに独自の座標を与えるものです。

        では、クローンはどのようにして元の場所に戻ることができるのでしょうか? 原理は非常に単純で、小学校​​の朝練で並ぶ問題や正方行列を並べる問題と同じで、人数を合計して行数と列数を変えて数を数えるだけです。列と行の数。

        具体的な式は次のとおりです。

上がx座標、下がy座標です

上がx座標、下がy座標です

        前段は非常にシンプルですが、60倍とはどういう意味でしょうか?先ほども述べたように、クローンの辺の長さは 60 座標であり、60 倍することでクローン間の距離を一定に保つことができます。

        この式をもう一度プログラムに入れてみましょう。

        このとき、リアルタイムでマップを移動する必要があり、再度実行する必要があるため、「x:xy:y に移動」とクローンを対応する位置に移動するという 2 つの変数が役に立ちます。

        実行してみてください:

        そうです、プログラムに問題が発生しました。右側の列が 1 スペース上にジャンプしますが、どこに問題があるのでしょうか?

        これはy座標の問題なので、先ほどの式を確認してみましょう。

        クローン番号を 1 とします: 1/3=0...1 (1-1)/3*60=0

        クローン番号を 2 とします: 2/3=0...2 (2-2)/3*60=0

        クローン番号を 3 とします: 3/3=1...0 (3-0)/3*60=60

        クローン番号を 6 とします: 6/3=2...0 (6-0)/3*60=120

        最終的に、クローンの数が列数の倍数であれば、さらに 60 個の座標を持つことがわかりました。

        したがって、クローンの数が列数の倍数であるかどうかを判断し、そうであれば 60 座標を減算する必要があります。

おすすめ

転載: blog.csdn.net/leyang0910/article/details/132274267