MMF2でダンジョンの自動生成を実装する(したい) その4
■区画分けをした後、フロアを作成する■
前までのデータを、関数やループにまとめ、
動作チェックを行い、やっとまともに動くようなものを
作ることができました。
今回、作成して出来上がったものを、コチラに入れておきます。
■解説■
■ 水色の範囲に収まるようなXのスケールを決定
ランダムで、X'以下の数値を代入していきたいのですが、
さすがに、4以下の大きさになると、小さすぎると思ったので、
random(X'-5)+5
というように、結果が0~4とならないように、しました。
Yの大きさも、同じように算出します。
■ エリアの座標を決める
エリアの大きさが決まったら、
どこの座標にエリアを置くか、決めます。
X座標・・・random(x'-a')+(白い四角のX座標)
Y座標・・・random(y'-b')+(白い四角のY座標)
こんな感じで、
紫の範囲でランダムに配置されるようにしました。
■ 形成したエリアに、二次元配列の値「1」を代入する
ここは進めるぞ、という意味で「1」の値を埋め込みます。
高速ループを2つ使用し、X軸とY軸の2次元配列を
埋めていきます。
(イベントエディタの内容)
----------------------------------------
1:フレームが開始した時(仮)
・ループ1を、作成したエリアの数だけループさせる
2:ループ1がループ中
・ループ2を、対象フロアのXの大きさの数だけループさせる
3:ループ2がループ中
・値1を、2次元配列に代入
代入X座標・・・切り出したX座標+LoopIndex(ループ2)
代入Y座標・・・切り出したY座標
・ループ3を、対象フロアのYの大きさの数だけループさせる
4:ループ3がループ中
・値1を、2次元配列に代入
代入X座標・・・切り出したX座標+LoopIndex(ループ2)
代入Y座標・・・切り出したY座標+LoopIndex(ループ3)
----------------------------------------
と、だいぶややこしくなってしまいましたが、
上記のような処理で、1を埋めていきました。
↓↓↓↓↓↓↓↓↓↓
↓↓↓↓↓↓↓↓↓↓
↓↓↓↓↓↓↓↓↓↓
↓↓↓↓↓↓↓↓↓↓
こんなイメージで1を埋めていく感じかな?
ちなみに完成したデータでは、
[0]切り出した座標X
[1]切り出した座標Y
[2]切り出したXの大きさ
[3]切り出したYの大きさ
[4]エリアのX座標
[5]エリアのY座標
[6]エリアのXの大きさ
[7]エリアのYの大きさ
[0]最初のエリア
[1]二個目のエリア
・
・
・
というように、[ryouiki]という名の配列名で、
各エリアの座標、大きさを管理しているため、
かなり見づらく、なっております。
とりあえず、自分のほうで理解してればいいかなw
200回くらい起動して、フリーズしなかったので
おそらく問題ないプログラムだと思います。
しかし本当に、分かりづらい解説で、申し訳ないです m()m
トラックバック(0)
このブログ記事を参照しているブログ一覧: MMF2でダンジョンの自動生成を実装する(したい) その4
このブログ記事に対するトラックバックURL: /205

コメントする