RPGツクール2000/システム【サイトトップへ戻る】
■マップランダム接続
(更新:2020/07/05)


ダンジョンに入る度にマップの繋がり方が変わるように設定します。


当ページの処理は、気紛れな空間で公開中の「ランダムマップサンプル」の改良版になります。

ショートカット
▼仕様の確認
▼通路の設定処理
▼変数の一覧
▼イベントの設定
▼補足

動作見本用のサンプルデータ
サンプルのダウンロードは↓をクリックしてください。
サンプルのイベント設定状況を見る場合は、
ツクールの作品データが入っているフォルダを開いて、
その中にサンプルの作品データを入れてください。
【ツクールのフォルダの開き方を見る】
このサンプルデータのイベント設定をコピー&貼り付けして、
制作中の作品に使用する場合は、
イベントの処理構造を理解した上自己責任でご利用ください。

動作確認用のサンプル内では正常に動いていたイベントが、
制作中の作品にコピー&貼り付けしたら正常に動かなくなった場合は、
明らかにコピー&貼り付けの作業に問題があった事になります。


  
■仕様の確認

この「マップランダム接続」は、通路の形状が異なる複数のマップを繋ぎ合わせて、
1つのダンジョンを構成しています。



ダンジョン内のマップは、仕様上では「10×10」まで設定する事ができますが、
サンプルの初期設定では「5×5」のマップを繋げてダンジョンを構成しています。

▼5×5の設定イメージ

左上と右下には出口用のマップが設定されており、
出口用のすぐ横のマップには丁字路のマップが設定されています。
それ以外の部分は、ランダムでマップが設定されます。




マップの種類は、左上と右下に設定する出口用のマップ以外に15種類のマップがあります。

この15種類のマップには「1〜15」のマップ番号が設定されています。

このマップ番号は通路ごとに設定されている番号(上=1、右=2、下=4、左=8)加算する事で、
マップ番号が決定します。

例えば、上と右に通路がある場合は「上(1)+右(2)」によってマップ番号は「3」、
右と下と左に通路がある場合は「右(2)+下(4)+左(8)」によってマップ番号は「14」になります。

マップ番号は「マップID」として変数[0101〜0200]に保存されますが、
マップ番号は「1〜15」に対して、マップIDは「4〜18」と「3」のずれがあるため、
変数[0101〜0200]に保存する値は「マップ番号+3」になります。

マップ番号[1]
マップID[4]
マップ番号[2]
マップID[5]
マップ番号[3]
マップID[6]
マップ番号[4]
マップID[7]
マップ番号[5]
マップID[8]
マップ番号[6]
マップID[9]
マップ番号[7]
マップID[10]
マップ番号[8]
マップID[11]
マップ番号[9]
マップID[12]
マップ番号[10]
マップID[13]
マップ番号[11]
マップID[14]
マップ番号[12]
マップID[15]
マップ番号[13]
マップID[16]
マップ番号[14]
マップID[17]
マップ番号[15]
マップID[18]



出口用のマップにはマップ番号の設定は無く、マップIDも[2][3]の固定になっています。

左上の出口
マップID[2]
右下の出口
マップID[3]



変数[0101〜0200]にはマップIDが保存されます。
左上が変数[0101]になり、右に行くと「+1」、下に行くと「+10」になります。

変数[0101] 変数[0102] 変数[0103] 変数[0104] 変数[0105]
変数[0111] 変数[0112] 変数[0113] 変数[0114] 変数[0115]
変数[0121] 変数[0122] 変数[0123] 変数[0124] 変数[0125]
変数[0131] 変数[0132] 変数[0133] 変数[0134] 変数[0135]
変数[0141] 変数[0142] 変数[0143] 変数[0144] 変数[0145]



変数[0101〜0200]にマップIDを設定する時や、
変数[0101〜0200]に保存されたマップIDを呼び出す時には、
設定or呼び出ししたい変数番号(101〜200)を変数[0001:変数番号[101-200]]に設定して、
イベントコマンド【変数の操作】の「変数〜の番号の変数」を使って操作します。

例えば左上の出口からスタートする時には、
変数[0001:変数番号[101-200]]には「101」を設定します。

右のマップへ移動すると、
変数[0001:変数番号[101-200]]に「加算1」が実行されて「102」になります。

そして…
◆変数の操作:[0008:マップID]代入,変数[V[0001]]の値
の設定によって、変数[0102]に保存されたマップIDが呼び出され、
その呼び出されたマップIDへ移動します。

【「変数〜の番号の変数」の説明を見る】



今回の処理では、全てのマップサイズを同じにする必要があります。
サイズが同じならば「横20×縦15マス」より大きいマップサイズでも問題ありません。

また通路の位置(通路の幅)も同じにする必要があります。


▲トップへ戻る▲


  
■通路の設定処理

通路の設定では、まず左上と右下に出口用のマップが設定され、
さらに出口の手前にあるマップには丁字路のマップを設定されます。
そして丁字路の先には行き止まりのマップを設定します。

通路の作成では、左上の出口の右隣りにあるマップをスタート地点とし、
ゴール地点となる右下の出口の左隣りにあるマップまで通路を作ります。

▼通路を設定する前の初期状態



通路の設定では、まず移動方向「0〜4」(上=0、右=1、下=2、左=3)を決めます。

この移動方向を決める処理では乱数を使いますが、この乱数の設定は…
◆変数の操作:[0011:移動方向[0-3]]代入,乱数[0〜3]
では無く…
◆変数の操作:[0011:移動方向[0-3]]加算,乱数[3〜5]
◆変数の操作:[0011:移動方向[0-3]]剰余,4
と言った設定になっています。

乱数[0〜3]にしない理由は、来た道を引き返さないようにするためです。

例えば1つ前の移動方向が「1」(右方向)だった時に乱数[3〜5]が加算されると、
変数の値は「4〜6」になります。

そして「剰余4」を実行すると「4以上は減算4」になりますので、
変数の値は「0〜2」になります。

つまり1つ前の移動方向が「1」(右方向)だった場合は、
次の移動方向は「0」(上方向)「1」(右方向)「2」(下方向)になり、
Uターンして来た道を戻る「3」(左方向)の移動設定にはなりません。

このように設定する事で「右→左→右→左」のような行ったり来たりする無駄な動きが無くなり、
効率よく通路を作る事ができます。



通路の設定では、移動前と移動先の両方で通路設定を行います。

例えば以下の2つのマップの場合、
ヤドカリ君がいる左側のマップの通路は「下(4)+左(8)」でマップ番号は「12」になります。
右側のマップの通路は「上(1)+下(4)」でマップ番号は「5」になります。

マップ番号[12] マップ番号[5]



この状態で2つのマップを繋ぐ通路を作る場合、
まずヤドカリ君がいる移動前のマップに「右(2)」の通路を追加し、
右(2)+下(4)+左(8)」でマップ番号を「14」にします。

マップ番号[12] マップ番号[5]

マップ番号[14] マップ番号[5]



右側のマップへ移動し、移動先のマップに「左(8)」の通路を追加し、
上(1)+下(4)+左(8)」でマップ番号を「13」にします。

マップ番号[14] マップ番号[5]

マップ番号[14] マップ番号[13]

このようにマップを移動する度に移動前と移動先のマップを繋ぐ通路を設定していき、
ゴールとなるマップまで通路を繋げていきます。



ゴールのマップまで辿り着き、2つの出口が通路で繋がったら、
全てのマップをチェックし、通路が何も設定されていないマップがあった場合は、
1方向だけ通路を設定し、行き止まりとなるマップにします。

例えば以下の場合は、4つのマップが通路未設定になっています。
この4つのマップに1方向だけ通路を設定し、行き止まりのマップにします。


通路の追加は乱数[0〜3]で設定しますので、
場合によっては以下の右上の2つのマップのように孤立した状態になる場合もありますが、
このようになっても再設定は行わずに、このまま通路の設定を終了します。



▲トップへ戻る▲


  
■変数の一覧

変数の番号使用内容の一覧表です。

※スイッチは使用していません。

変数
番号 名前 使用内容
0001 変数番号[101-200] 変数[0101〜0200]の値を操作する時に使用。
0002 右下出口の上変数番号 右下の出口の1つ上のマップの変数番号(101〜200)を設定。
0003 右下出口の左変数番号 右下の出口の1つ左のマップの変数番号(101〜200)を設定。
0004 マップX マップの横座標を設定。横5の場合は「0〜4」。
0005 マップX マップの縦座標を設定。縦5の場合は「0〜4」。
0006 マップX右端 マップの横座標の最大値を設定。横5の場合は「4」。
0007 マップY下端 マップの縦座標の最大値を設定。縦5の場合は「4」。
0008 マップID マップIDの保存で使用。
0009 X座標 主人公のX座標を保存。
0010 Y座標 主人公のY座標を保存。
0011 移動方向[0-3] 通路設定時の移動方向の設定で使用。
0012 現在:通路[上](1) 通路設定時に上通路の有無を設定。(上通路あり=1)
0013 現在:通路[右](2) 通路設定時に右通路の有無を設定。(右通路あり=1)
0014 現在:通路[下](4) 通路設定時に下通路の有無を設定。(下通路あり=1)
0015 現在:通路[左](8) 通路設定時に左通路の有無を設定。(左通路あり=1)
0016 接続先:変数番号 行き止まり設定時に接続先のマップの変数番号(101〜200)を設定。
0021 マップ数:横(3-10) マップの横の数を設定。
0022 マップ数:縦(3-10) マップの縦の数を設定。

【変数の一覧表を表示】



▼補足

変数[0002:右下出口の上変数番号]変数[0003:右下出口の左変数番号]の値は、
マップ構成が「5×5」の場合は以下のようになります。

変数[0002:右下出口の上変数番号]=135
変数[0003:右下出口の左変数番号]=144

変数[0101] 変数[0102] 変数[0103] 変数[0104] 変数[0105]
変数[0111] 変数[0112] 変数[0113] 変数[0114] 変数[0115]
変数[0121] 変数[0122] 変数[0123] 変数[0124] 変数[0125]
変数[0131] 変数[0132] 変数[0133] 変数[0134] 変数[0135]
変数[0141] 変数[0142] 変数[0143] 変数[0144] 変数[0145]


▲トップへ戻る▲


  
■イベントの設定

■コモンイベント「通路の準備」

イベント開始条件:呼び出されたときのみ

◆変数の操作:[0021:マップ数:横(3-10)]代入,5
◆変数の操作:[0022:マップ数:縦(3-10)]代入,5
◆注釈:■■■■■■■■■■■■■■■■■■■■■■■■■■■■
:  :値の初期化
:  : 

◆変数の操作:[0006:マップX右端]代入,変数[0021]の値<マップ座標の右と下の最大値を設定
◆変数の操作:[0007:マップY下端]代入,変数[0022]の値
◆変数の操作:[0006〜0007]減算,1
◆変数の操作:[0101〜0200]代入,0<マップIDを初期化
◆注釈:■■■■■■■■■■■■■■■■■■■■■■■■■■■■
:  :右下の出口の周辺にあるマップの初期設定
:  : 

◆変数の操作:[0001〜0003]代入,変数[0007]の値<右下の出口の変数番号を設定
◆変数の操作:[0001〜0003]乗算,10
◆変数の操作:[0001〜0003]加算,変数[0006]の値
◆変数の操作:[0001〜0003]加算,101
◆変数の操作:[0001:変数番号[101-200]]減算,2<右下の出口の2つ左の変数番号にする
◆変数の操作:[0002:右下出口の上変数番号]減算,10<右下の出口の1つ上の変数番号にする
◆変数の操作:[0003:右下出口の左変数番号]減算,1<右下の出口の1つ左の変数番号にする
◆変数の操作:[V[0001]]代入,2<右下の出口の2つ左のマップに「2(右通路)」を設定
◆変数の操作:[0001:変数番号[101-200]]減算,9<右下の出口の1つ左、1つ上のマップ番号にする
◆変数の操作:[V[0001]]代入,4<右下の出口の1つ左、1つ上のマップに「4(下通路)」を設定
◆変数の操作:[V[0003]]代入,11<右下の出口の1つ左のマップに「1(上)+2(右)+8(左)」を設定
◆注釈:■■■■■■■■■■■■■■■■■■■■■■■■■■■■
:  :左上の出口の周辺にあるマップの初期設定
:  : 

◆変数の操作:[0001:変数番号[101-200]]代入,103<左上の出口の2つ右の変数番号にする
◆変数の操作:[V[0001]]代入,8<左上の出口の2つ左のマップに「8(左通路)」を設定
◆変数の操作:[0001:変数番号[101-200]]代入,112<左上の出口の1つ右、1つ下の変数番号にする
◆変数の操作:[V[0001]]加算,1<左上の出口の1つ右、1つ下のマップに「1(上通路)」を設定
◆変数の操作:[0001:変数番号[101-200]]代入,102<左上の出口の1つ右の変数番号にする
◆変数の操作:[V[0001]]代入,14<左上の出口の1つ右のマップに「2(右)+4(下)+8(左)」を設定
◆注釈:■■■■■■■■■■■■■■■■■■■■■■■■■■■■
:  :左上の出口の1つ右のマップから通路設定を開始
:  : 

◆変数の操作:[0004:マップX]代入,1<左上の出口の1つ右のマップ座標にする
◆変数の操作:[0005:マップY]代入,0
◆変数の操作:[0011:移動方向[0-3]]代入,乱数[1〜2]<最初の移動方向を設定
◆繰り返し処理<ゴールとなるマップ(右下の出口の1つ左のマップ)まで繰り返し処理(通路設定)を続ける
 ◆注釈:■■■■■■■■■■■■■■
 :  :通路設定:移動方向を設定
 :  : 

 ◆変数の操作:[0011:移動方向[0-3]]加算,乱数[3〜5]<次に進む移動方向を設定
 ◆変数の操作:[0011:移動方向[0-3]]剰余,4
 ◆条件分岐:変数[0004:マップX]が0<マップのX座標が左端の場合
  ◆条件分岐:変数[0011:移動方向[0-3]]が3<左へ進もうとしている場合
   ◆変数の操作:[0011:移動方向[0-3]]代入,1<右へ進むように修正
   ◆
  :分岐終了
  ◆
 :分岐終了
 ◆条件分岐:変数[0004:マップX]がV[0006]と同値<マップのX座標が右端の場合
  ◆条件分岐:変数[0011:移動方向[0-3]]が1<右へ進もうとしている場合
   ◆変数の操作:[0011:移動方向[0-3]]代入,3<左へ進むように修正
   ◆
  :分岐終了
  ◆
 :分岐終了
 ◆条件分岐:変数[0005:マップY]が0<マップのY座標が上端の場合
  ◆条件分岐:変数[0011:移動方向[0-3]]が0<上へ進もうとしている場合
   ◆変数の操作:[0011:移動方向[0-3]]代入,2<下へ進むように修正
   ◆
  :分岐終了
  ◆
 :分岐終了
 ◆条件分岐:変数[0005:マップY]がV[0007]と同値<マップのY座標が下端の場合
  ◆条件分岐:変数[0011:移動方向[0-3]]が2<下へ進もうとしている場合
   ◆変数の操作:[0011:移動方向[0-3]]代入,0<上へ進むように修正
   ◆
  :分岐終了
  ◆
 :分岐終了
 ◆条件分岐:変数[0001:変数番号[101-200]]が102<左上の出口の1つ右のマップにいる時
  ◆変数の操作:[0011:移動方向[0-3]]代入,乱数[1〜2]<出口のマップへ行かないように移動方向を設定
  ◆
 :分岐終了
 ◆条件分岐:変数[0001:変数番号[101-200]]が111<左上の出口の1つ下のマップにいる時
  ◆変数の操作:[0011:移動方向[0-3]]代入,乱数[1〜2]<出口のマップへ行かないように移動方向を設定
  ◆
 :分岐終了
 ◆条件分岐:変数[0001:変数番号[101-200]]がV[0002]と同値<右下の出口の1つ上のマップにいる時
  ◆変数の操作:[0011:移動方向[0-3]]代入,3<出口のマップへ行かないように左移動を設定
  ◆
 :分岐終了
 ◆注釈:■■■■■■■■■■■■■■
 :  :通路設定:移動前のマップに通路を追加
 :  : 

 ◆変数の操作:[0012〜0015]代入,変数[V[0001]]の値<移動前のマップのマップ番号を出力
 ◆変数の操作:[0013:現在:通路[右](2)]除算,2<「通路あり=1」になるように設定
 ◆変数の操作:[0014:現在:通路[下](4)]除算,4
 ◆変数の操作:[0015:現在:通路[左](8)]除算,8
 ◆変数の操作:[0012〜0015]剰余,2
 ◆条件分岐:変数[0011:移動方向[0-3]]が0<上へ移動
  ◆変数の操作:[0012:現在:通路[上](1)]代入,1<上への通路を設定
  ◆
 :分岐終了
 ◆条件分岐:変数[0011:移動方向[0-3]]が1<右へ移動
  ◆変数の操作:[0013:現在:通路[右](2)]代入,1<右への通路を設定
  ◆
 :分岐終了
 ◆条件分岐:変数[0011:移動方向[0-3]]が2<下へ移動
  ◆変数の操作:[0014:現在:通路[下](4)]代入,1<下への通路を設定
  ◆
 :分岐終了
 ◆条件分岐:変数[0011:移動方向[0-3]]が3<左へ移動
  ◆変数の操作:[0015:現在:通路[左](8)]代入,1<左への通路を設定
  ◆
 :分岐終了
 ◆変数の操作:[0013:現在:通路[右](2)]乗算,2
 ◆変数の操作:[0014:現在:通路[下](4)]乗算,4
 ◆変数の操作:[0015:現在:通路[左](8)]乗算,8
 ◆変数の操作:[V[0001]]代入,変数[0012]の値<通路を追加したマップ番号を設定
 ◆変数の操作:[V[0001]]加算,変数[0013]の値
 ◆変数の操作:[V[0001]]加算,変数[0014]の値
 ◆変数の操作:[V[0001]]加算,変数[0015]の値
 ◆注釈:■■■■■■■■■■■■■■
 :  :通路設定:移動先のマップへ移動
 :  : 

 ◆条件分岐:変数[0011:移動方向[0-3]]が0<1つ上のマップへ移動
  ◆変数の操作:[0001:変数番号[101-200]]減算,10
  ◆変数の操作:[0005:マップY]減算,1
  ◆
 :分岐終了
 ◆条件分岐:変数[0011:移動方向[0-3]]が1<1つ右のマップへ移動
  ◆変数の操作:[0001:変数番号[101-200]]加算,1
  ◆変数の操作:[0004:マップX]加算,1
  ◆
 :分岐終了
 ◆条件分岐:変数[0011:移動方向[0-3]]が2<1つ下のマップへ移動
  ◆変数の操作:[0001:変数番号[101-200]]加算,10
  ◆変数の操作:[0005:マップY]加算,1
  ◆
 :分岐終了
 ◆条件分岐:変数[0011:移動方向[0-3]]が3<1つ左のマップへ移動
  ◆変数の操作:[0001:変数番号[101-200]]減算,1
  ◆変数の操作:[0004:マップX]減算,1
  ◆
 :分岐終了
 ◆注釈:■■■■■■■■■■■■■■
 :  :通路設定:移動先のマップに移動前のマップと繋ぐ通路を追加
 :  : 

 ◆変数の操作:[0012〜0015]代入,変数[V[0001]]の値<移動先のマップのマップ番号を出力
 ◆変数の操作:[0013:現在:通路[右](2)]除算,2
 ◆変数の操作:[0014:現在:通路[下](4)]除算,4
 ◆変数の操作:[0015:現在:通路[左](8)]除算,8
 ◆変数の操作:[0012〜0015]剰余,2
 ◆条件分岐:変数[0011:移動方向[0-3]]が2<移動前のマップに設定した通路が下方向だった時
  ◆変数の操作:[0012:現在:通路[上](1)]代入,1<上への通路を設定
  ◆
 :分岐終了
 ◆条件分岐:変数[0011:移動方向[0-3]]が3<移動前のマップに設定した通路が左方向だった時
  ◆変数の操作:[0013:現在:通路[右](2)]代入,1<右への通路を設定
  ◆
 :分岐終了
 ◆条件分岐:変数[0011:移動方向[0-3]]が0<移動前のマップに設定した通路が上方向だった時
  ◆変数の操作:[0014:現在:通路[下](4)]代入,1<下への通路を設定
  ◆
 :分岐終了
 ◆条件分岐:変数[0011:移動方向[0-3]]が1<移動前のマップに設定した通路が右方向だった時
  ◆変数の操作:[0015:現在:通路[左](8)]代入,1<左への通路を設定
  ◆
 :分岐終了
 ◆変数の操作:[0013:現在:通路[右](2)]乗算,2
 ◆変数の操作:[0014:現在:通路[下](4)]乗算,4
 ◆変数の操作:[0015:現在:通路[左](8)]乗算,8
 ◆変数の操作:[V[0001]]代入,変数[0012]の値<通路を追加したマップ番号を設定
 ◆変数の操作:[V[0001]]加算,変数[0013]の値
 ◆変数の操作:[V[0001]]加算,変数[0014]の値
 ◆変数の操作:[V[0001]]加算,変数[0015]の値
 ◆注釈:■■■■■■■■■■■■■■
 :  :通路設定:ゴールとなるマップへ着いたら通路設定終了
 :  : 

 ◆条件分岐:変数[0003:右下出口の左変数番号]がV[0001]と同値<右下の出口の1つ左のマップに到着
  ◆繰り返し処理の中断
  ◆
 :分岐終了
 ◆
:以上繰り返し
◆注釈:■■■■■■■■■■■■■■■■■■■■■■■■■■■■
:  :通路未設定のマップに行き止まりの通路を設定
:  : 

◆変数の操作:[0001:変数番号[101-200]]代入,102<左上の出口の2つ右の変数番号にする
◆変数の操作:[0004:マップX]代入,2<左上の出口の2つ右のマップ座標にする
◆変数の操作:[0005:マップY]代入,0
◆繰り返し処理<右下の出口の1つ左のマップまで1マップずつ処理する
 ◆条件分岐:変数[0004:マップX]がV[0006]以下<マップ座標の範囲内の時
  ◆変数の操作:[0012〜0015]代入,変数[V[0001]]の値<マップ番号を出力
  ◆条件分岐:変数[0012:現在:通路[上](1)]が0<マップ番号が無い(通路未設定)の時
   ◆注釈:■■■■■■■■■■■■■■
   :  :行き止まり:移動方向を設定
   :  : 

   ◆変数の操作:[0011:移動方向[0-3]]代入,乱数[0〜3]<通路を作る方向を設定
   ◆条件分岐:変数[0004:マップX]が0<マップのX座標が左端の場合
    ◆条件分岐:変数[0011:移動方向[0-3]]が3<左へ進もうとしている場合
     ◆変数の操作:[0011:移動方向[0-3]]代入,1<右へ進むように修正
     ◆
    :分岐終了
    ◆
   :分岐終了
   ◆条件分岐:変数[0004:マップX]がV[0006]と同値<マップのX座標が右端の場合
    ◆条件分岐:変数[0011:移動方向[0-3]]が1<右へ進もうとしている場合
     ◆変数の操作:[0011:移動方向[0-3]]代入,3<左へ進むように修正
     ◆
    :分岐終了
    ◆
   :分岐終了
   ◆条件分岐:変数[0005:マップY]が0<マップのY座標が上端の場合
    ◆条件分岐:変数[0011:移動方向[0-3]]が0<上へ進もうとしている場合
     ◆変数の操作:[0011:移動方向[0-3]]代入,2<下へ進むように修正
     ◆
    :分岐終了
    ◆
   :分岐終了
   ◆条件分岐:変数[0005:マップY]がV[0007]と同値<マップのY座標が下端の場合
    ◆条件分岐:変数[0011:移動方向[0-3]]が2<下へ進もうとしている場合
     ◆変数の操作:[0011:移動方向[0-3]]代入,0<上へ進むように修正
     ◆
    :分岐終了
    ◆
   :分岐終了
   ◆条件分岐:変数[0001:変数番号[101-200]]が111<左上の出口の1つ下のマップにいる時
    ◆変数の操作:[0011:移動方向[0-3]]代入,乱数[1〜2]<出口のマップへ行かないように移動方向を設定
    ◆
   :分岐終了
   ◆条件分岐:変数[0001:変数番号[101-200]]がV[0002]と同値<右下の出口の1つ上のマップにいる時
    ◆変数の操作:[0011:移動方向[0-3]]代入,3<出口のマップへ行かないように左移動を設定
    ◆
   :分岐終了
   ◆注釈:■■■■■■■■■■■■■■
   :  :行き止まり:移動前のマップに通路を追加
   :  : 

   ◆条件分岐:変数[0011:移動方向[0-3]]が0<上へ移動
    ◆変数の操作:[V[0001]]代入,1<上への通路(マップ番号)を設定
    ◆
   :分岐終了
   ◆条件分岐:変数[0011:移動方向[0-3]]が1<右へ移動
    ◆変数の操作:[V[0001]]代入,2<右への通路(マップ番号)を設定
    ◆
   :分岐終了
   ◆条件分岐:変数[0011:移動方向[0-3]]が2<下へ移動
    ◆変数の操作:[V[0001]]代入,4<下への通路(マップ番号)を設定
    ◆
   :分岐終了
   ◆条件分岐:変数[0011:移動方向[0-3]]が3<左へ移動
    ◆変数の操作:[V[0001]]代入,8<左への通路(マップ番号)を設定
    ◆
   :分岐終了
   ◆注釈:■■■■■■■■■■■■■■
   :  :行き止まり:通路を設定したマップの接続先のマップへ移動
   :  : 

   ◆変数の操作:[0016:接続先:変数番号]代入,変数[0001]の値<変数番号(11〜200)を複製
   ◆条件分岐:変数[0011:移動方向[0-3]]が0<1つ上のマップへ移動
    ◆変数の操作:[0016:接続先:変数番号]減算,10
    ◆
   :分岐終了
   ◆条件分岐:変数[0011:移動方向[0-3]]が1<1つ右のマップへ移動
    ◆変数の操作:[0016:接続先:変数番号]加算,1
    ◆
   :分岐終了
   ◆条件分岐:変数[0011:移動方向[0-3]]が2<1つ下のマップへ移動
    ◆変数の操作:[0016:接続先:変数番号]加算,10
    ◆
   :分岐終了
   ◆条件分岐:変数[0011:移動方向[0-3]]が3<1つ左のマップへ移動
    ◆変数の操作:[0016:接続先:変数番号]減算,1
    ◆
   :分岐終了
   ◆注釈:■■■■■■■■■■■■■■
   :  :行き止まり:接続先のマップに通路を追加
   :  : 

   ◆変数の操作:[0012〜0015]代入,変数[V[0016]]の値<接続先のマップのマップ番号を出力
   ◆変数の操作:[0013:現在:通路[右](2)]除算,2
   ◆変数の操作:[0014:現在:通路[下](4)]除算,4
   ◆変数の操作:[0015:現在:通路[左](8)]除算,8
   ◆変数の操作:[0012〜0015]剰余,2
   ◆条件分岐:変数[0011:移動方向[0-3]]が2<行き止まりの通路が下向きだった時
    ◆変数の操作:[0012:現在:通路[上](1)]代入,1<上への通路を設定
    ◆
   :分岐終了
   ◆条件分岐:変数[0011:移動方向[0-3]]が3<行き止まりの通路が左向きだった時
    ◆変数の操作:[0013:現在:通路[右](2)]代入,1<右への通路を設定
    ◆
   :分岐終了
   ◆条件分岐:変数[0011:移動方向[0-3]]が0<行き止まりの通路が上向きだった時
    ◆変数の操作:[0014:現在:通路[下](4)]代入,1<下への通路を設定
    ◆
   :分岐終了
   ◆条件分岐:変数[0011:移動方向[0-3]]が1<行き止まりの通路が右向きだった時
    ◆変数の操作:[0015:現在:通路[左](8)]代入,1<左への通路を設定
    ◆
   :分岐終了
   ◆変数の操作:[0013:現在:通路[右](2)]乗算,2
   ◆変数の操作:[0014:現在:通路[下](4)]乗算,4
   ◆変数の操作:[0015:現在:通路[左](8)]乗算,8
   ◆変数の操作:[V[0016]]代入,変数[0012]の値<通路を追加したマップ番号を設定
   ◆変数の操作:[V[0016]]加算,変数[0013]の値
   ◆変数の操作:[V[0016]]加算,変数[0014]の値
   ◆変数の操作:[V[0016]]加算,変数[0015]の値
   ◆
  :分岐終了
  ◆
 :分岐終了
 ◆注釈:■■■■■■■■■■■■■■
 :  :行き止まり:次のマップへ移動
 :  : 

 ◆変数の操作:[0001:変数番号[101-200]]加算,1
 ◆変数の操作:[0004:マップX]加算,1
 ◆条件分岐:変数[0004:マップX]が10以上
  ◆変数の操作:[0004:マップX]代入,0
  ◆変数の操作:[0005:マップY]加算,1
  ◆
 :分岐終了
 ◆条件分岐:変数[0003:右下出口の左変数番号]がV[0001]と同値<右下の出口の1つ左のマップに着いた時
  ◆繰り返し処理の中断
  ◆
 :分岐終了
 ◆
:以上繰り返し
◆注釈:■■■■■■■■■■■■■■■■■■■■■■■■■■■■
:  :マップIDが4〜18なので、
:  :変数[101-200]の値(1〜15)の値を「加算3」にして、
:  :マップID4〜18になるように修正
◆注釈:

◆変数の操作:[0101〜0200]加算,3
◆注釈:■■■■■■■■■■■■■■■■■■■■■■■■■■■■
:  :2つの出口のマップIDを設定
:  : 

◆変数の操作:[0101:MAP:x0 y0(左上)]代入,2<左上の出口のマップIDを設定
◆変数の操作:[0001:変数番号[101-200]]加算,1<右下の出口の変数番号にする
◆変数の操作:[V[0001]]代入,3<右下の出口のマップIDを設定
◆注釈:■■■■■■■■■■■■■■■■■■■■■■■■■■■■
:  :左上の出口からスタートする場合の初期設定
:  : 

◆変数の操作:[0008:マップID]代入,主人公のマップID
◆条件分岐:変数[0008:マップID]が2<左上の出口に主人公がいる時
 ◆変数の操作:[0001:変数番号[101-200]]代入,101<左上の出口に変数番号に設定
 ◆
:分岐終了



場所移動の設定は、例えば左端(X座標=0)へ移動した場合は、
移動先のマップの右端(X座標=18)へ移動します。
この時にY座標は移動前と移動後は同じY座標になります。

■コモンイベント「別のマップへ移動」

イベント開始条件:呼び出されたときのみ

◆画面の消去:場所移動の設定
◆変数の操作:[0009:X座標]代入,主人公のX座標
◆変数の操作:[0010:Y座標]代入,主人公のY座標
◆条件分岐:主人公が上を向いている
 ◆変数の操作:[0001:変数番号[101-200]]減算,10
 ◆変数の操作:[0010:Y座標]代入,13
 ◆
:分岐終了
◆条件分岐:主人公が右を向いている
 ◆変数の操作:[0001:変数番号[101-200]]加算,1
 ◆変数の操作:[0009:X座標]代入,1
 ◆
:分岐終了
◆条件分岐:主人公が下を向いている
 ◆変数の操作:[0001:変数番号[101-200]]加算,10
 ◆変数の操作:[0010:Y座標]代入,1
 ◆
:分岐終了
◆条件分岐:主人公が左を向いている
 ◆変数の操作:[0001:変数番号[101-200]]減算,1
 ◆変数の操作:[0009:X座標]代入,18
 ◆
:分岐終了
◆変数の操作:[0008:マップID]代入,変数[V[0001]]の値<変数[0101〜0200]に保存されているマップIDを出力
◆記憶した場所へ移動:V[0008] (V[0009],V[0010])
◆画面の表示:場所移動の設定



ダンジョン内へ入る入り口となるマップイベントを設定。

■マップイベント「左上の出口へ移動」

イベント開始条件:主人公から触れたとき

◆画面の消去:場所移動の設定
◆キャラクターの動作指定:主人公,右を向く
◆ウェイト:0.0秒
◆場所移動:0002:ID02 出口:左上(004,004)
◆イベントの呼び出し:通路の準備
◆画面の表示:場所移動の設定

■マップイベント「右下の出口へ移動」

イベント開始条件:主人公から触れたとき

◆画面の消去:場所移動の設定
◆キャラクターの動作指定:主人公,左を向く
◆ウェイト:0.0秒
◆イベントの呼び出し:通路の準備
◆場所移動:0003:ID03 出口:右下(015,004)
◆画面の表示:場所移動の設定


以上で設定完了です。


▲トップへ戻る▲


  
■補足

コモンイベント「通路の準備」の最初にある…
◆変数の操作:[0021:マップ数:横(3-10)]代入,5
◆変数の操作:[0022:マップ数:縦(3-10)]代入,5
の設定を変えれば、マップの縦横の数を変える事ができます。

縦横の設定は同じ数にする必要は無く…
◆変数の操作:[0021:マップ数:横(3-10)]代入,4
◆変数の操作:[0022:マップ数:縦(3-10)]代入,6
と設定したり…
◆変数の操作:[0021:マップ数:横(3-10)]代入,乱数[4〜6]
◆変数の操作:[0022:マップ数:縦(3-10)]代入,乱数[4〜6]
などとランダムにする事もできます。



このページのイベントを異なる変数番号で設定したい方は、
↓のページを参考に改良してください。
【変数の番号を+1000番にする時の設定例を見る】


▲トップへ戻る▲

YADOTトップ  このサイトは何?  気紛れな空間へ戻る  メール