追う3は、追う1に障害物を加えた物です。 それ以外はほぼ同じです。 追う1と同じ箇所は略します。 袋小路は無い、という前提で作られています。 袋小路が有る場合の作り方については、サイトの掲示板にてお問い合わせください。 追う1に無い数値変数 [止][マップ][確認] 追う1に無い文字列変数 {XY} 追う1と扱いが少し違う数値変数 [X][Y]…プレイヤーと敵との距離、移動先のマス目、マス目から換算した座標 「スタートページ」「1」「2」「始」「XY」「プ」「左上」「左下」「右上」「右下」「敵」「終了」『止』「止」「1」「2」 +調整方法 「スタートページ」
サンプルでは、マップによって障害物の位置が違う場合の例として、マップ1、2を選択出来るようにしました。 レイヤー〈プ〉〈敵〉〈背景レイヤー〉を非表示にしているのは、違うマップを選ぶ前の切り替えの為です。 「1」「2」
「スタートページ」の選択肢で選んだマップの番号を数値変数[マップ]に入れ、「始」に移動します。 「始」 追う1の「スタートページ」と中身はほぼ同じです。 「XY」 追う1と同じです。 「プ」
プレイヤーの番です。 障害物があるマスにダイナミックレイヤーを作らないようにします。 追う1のダイナミックレイヤー作成にIFを加えていく方法でも出来ますが、コマンドがつらつら続き、障害物を加える度に調整が必要で、面倒な上にバグの原因になりかねません。 そこで、ダイナミックレイヤーを作る予定の数値を入れた[X][Y]に障害物の数値が入った時は弾く、ブック『止』のページ「止」「1」「2」を作ります。 「止」などを通り数値変数[止]が[止]=0で戻ってきた時は、障害物が無いので、「XY」をサブルーチンコールし、移動場所のダイナミックレイヤーを作成します。 [止]=1で戻ってきた場合は、障害物がある、またはマップから出てしまい進めないので、ダイナミックレイヤーは作成しません。 「左上」「左下」「右上」「右下」 追う1と同じです。 「敵」
敵の番です。 プレイヤーの番同様、障害物があるマスには進めないようにします。 単純にプレイヤーに近づくマスを計算し、『止』「止」をサブルーチンコールします。 [止]=0で戻ってきた場合は進めるので、「敵動」に移動して、そのマスに移動します。 そうでなければ、そのマス以外でプレイヤーに近づくマスに進めないか、確認しなければなりません。 数値変数[確認]を0にして、「@」に移動します。 「@」
敵がプレイヤーにより近づくマスが進めない時、袋小路が無い時。 敵を中心に、進みたかったマスを前とすると、残る候補は左右です。 その左右を「@」「A」で『止』「止」を利用して進めるかどうか判断し、プレイヤーとの位置関係から、@Aの内、進めて且つプレイヤーに近づくマスを選んで進ませます。 詳しくはおまけを参照してください。 「@」では@が進めるか、『止』「止」をサブルーチンコールして確認します。 [確認]=0であれば、まだ@もAも確認していないので、@を確認。 [止]=0であれば@は進めることを確認済み、という印で、[確認]を1にします。 [止]=1であれば、何もしません。 どちらの場合でも「A」に移動します。 その前に[確認]=0でなく、[確認]=1の時は、「敵動」に移動して@に移動します。 「A」
[確認]=1の時、@は進めることがわかっているので、『止』「止」をサブルーチンコールして、Aは進めるか確認します。 [止]=1なら、@は進めるがAは進めないので、「@」に移動し、@に移動します。 そうでなければ、@もAも進めるので、[確認]を2にします。 [X][Y]にプレイヤーと敵とのX、Y座標それぞれでの距離を入れます。 X方向の距離がY方向の距離より大きければ、@へ。 Y方向の距離がX方向の距離より大きければ、Aへ。 X方向の距離とY方向の距離が等しければ、@Aのどちらに移動してもよいので、ランダムに選びます。 [@乱数]mod 2は、乱数を2で割った余りを出す、という計算式です。 今回は2で割ったので、余りは0か1になります。 この余りで@に進むかAに進むかを決めます。 「敵動」
プレイヤーと同じマスになったら、捕まえたので終了です。 「終了」 追う1と同じです。 『止』「止」
「プ」から移動し、数値変数[止]を0にし、文字列変数{XY}に([X],[Y])になるように(%X%,%Y%)を入れます。 サンプルでは、(0,〜)(〜,0)(12,〜)(〜,16)は進めません。 [X][Y]を入れた{XY}に、進めない箇所の数値が入っている時、[止]を1にします。 例えば(0,4)に進もうとしている時、{XY}⊆(0,で[X]=0とわかり、[止]=1になります。 そうでなければ、[止]=0のまま。 マップによって障害物が違うので、数値変数[マップ]で判断し、「1」「2」に移動します。 『止』「1」、「2」
『止』「止」と同様に、進めない箇所かどうかを{XY}から判断して、進めなければ[止]を1にし、そうでなければそのままにします。 サブルーチンから復帰し、「プ」に戻ります。 「2」は「1」と同様に。 調整方法 調整のポイントは、 ・マップのマス目の数 ・キャラ画像の表示位置 ・キャラの初期位置 ・マップの形 ・障害物の場所 です。 ・マップのマス目の数 ・キャラ画像の表示位置 ・キャラの初期位置 ・マップの形 については、追う1と同じです。 追う2に障害物を加えた物については、サイトの掲示板にてお問い合わせください。 ・障害物の場所 (4,8)に障害物がある時は、IF{XY}⊆(4,8) のようにします。 ブック『止』ページ「1」「2」を参考にしてください。 ・他 敵に捕まるまで何回移動したか、を出したい時については、追う1と同じです。 もう少しで捕まる!という時に、障害物の周りをぐーるぐーる回り続けてしまうことがあります。 これは仕方ないので、敵の為に諦めてあげるか、プレイを終了させてください。 |