逃げる2は、逃げる1を上下左右に移動するようにした物です。 それ以外はほぼ同じです。 逃げる1と同じ箇所は略します。
逃げる1には無い文字列変数 {XY} 逃げる1と扱いが少し違う数値変数 [X][Y]…プレイヤーと敵との距離、移動先のマス目、マス目から換算した座標
「スタートページ」「XY」「プ」「上」「左」「右」「下」「敵」「四」「乱」「4択」「上左」「右下」「上右」「左下」「上下」「左右」「上左右」「上左下」「上右下」「左右下」「++」「+−」「−+」「−−」「終了」 +調整方法
「スタートページ」
逃げる1とほぼ同じです。 サンプルでは初期位置をプレイヤー(1,1)、敵(10,8)にしています。
「XY」
逃げる1と同じです。 サンプルでは[X]←[X]×50+8、[Y]←[Y]×50+3にしています。
「プ」
逃げる1と同じです。
「上」「左」「右」「下」
上
[X]←[プX] [Y]←[プY]−1 サブルーチンから復帰 |
右
[X]←[プX]+1 [Y]←[プY] サブルーチンから復帰 |
左
[X]←[プX]−1 [Y]←[プY] サブルーチンから復帰 |
下
[X]←[プX] [Y]←[プY]+1 サブルーチンから復帰 |
逃げる1と違い、上下左右に移動します。
「敵」
逃げる1と同じです。
「四」
四
サブルーチンコール「上」 IF[Y]≠0 IF{番}=プ サブルーチンコール「XY」 ダイナミックレイヤーの作成 (イメージを表示=@X座標:%X%、Y座標:%Y% 画像:選択.png サブルーチンコール「上」 選択時に〜≠ノチェックする) ELSE {番}:$番$上 ENDIF ENDIF サブルーチンコール「左」 IF[X]≠0 IF{番}=プ サブルーチンコール「XY」 ダイナミックレイヤーの作成 (イメージを表示=@X座標:%X%、Y座標:%Y% 画像:選択.png サブルーチンコール「左」 選択時に〜≠ノチェックする) ELSE {番}:$番$左 ENDIF ENDIF サブルーチンコール「右」 IF[X]≠12 IF{番}=プ サブルーチンコール「XY」 ダイナミックレイヤーの作成 (イメージを表示=@X座標:%X%、Y座標:%Y% 画像:選択.png サブルーチンコール「右」 選択時に〜≠ノチェックする) ELSE {番}:$番$右 ENDIF ENDIF サブルーチンコール「下」 IF[Y]≠9 IF{番}=プ サブルーチンコール「XY」 ダイナミックレイヤーの作成 (イメージを表示=@X座標:%X%、Y座標:%Y% 画像:選択.png サブルーチンコール「下」 選択時に〜≠ノチェックする) ELSE {番}:$番$下 ENDIF ENDIF IF{番}=プ サブルーチンから復帰 ENDIF IF{番}⊆4 移動「4択」 ENDIF 移動「乱」 |
プレイヤーの番で「プ」から「四」をサブルーチンコールした時は、移動先のダイナミックレイヤーを作成します。
 移動先の座標は、「上」「左」「右」「下」をそれぞれサブルーチンコールして[X][Y]に入れます。 サンプルでは、(0,〜)(〜,0)(12,〜)(〜,9)は進めません。 上は(〜,0)でない時、左は(0,〜)でない時、右は(12,〜)でない時、下は(〜,9)でない時にダイナミックレイヤーを作成して、「プ」に戻ります。
敵の番で「敵」から「四」をサブルーチンコールした時は、四方向のマスに進めるかどうかを{番}に入れていきます。 例えばプレイヤーと離れていてランダムに行き先を決める時、四方向とも進めるなら、{番}=乱上左右下と入ります。 {番}に「4」が含まれている時は、四方向の内、遠ざかる方向に移動先を決めるので、「4択」に移動。 {番}に「乱」が含まれている時はランダムに移動先を決めるので、「乱」に移動します。
「4択」
4択
[X]←[プX]−[敵X] [Y]←[プY]−[敵Y] IF[X]=0 IF[Y]>0 IF{番}⊆上 移動「上」 ENDIF ENDIF IF[Y]<0 IF{番}⊆下 移動「下」 ENDIF ENDIF 移動「左右」 ENDIF IF[Y]=0 IF[X]>0 IF{番}⊆左 移動「左」 ENDIF ENDIF IF[Y]<0 IF{番}⊆右 移動「右」 ENDIF ENDIF 移動「上下」 ENDIF IF[X]>0 IF[Y]>0 移動「++」 ELSE [Y]←0−[Y] 移動「+−」 ENDIF ENDIF [X]←0−[X] IF[Y]>0 移動「−+」 ENDIF [Y]←0−[Y] 移動「−−」 |
プレイヤーとの位置関係から、プレイヤーから遠ざかるマス目を選んで移動します。 選び方については、移動一覧を参照してください。 {番}に四方向の内、移動可能な方向の数値が入っているので、{番}から移動可能かどうかを判断して移動します。
「++」「+−」「−+」「−−」
++
IF[X]=[Y] 移動「上左」 ENDIF IF[X]>[Y] IF{番}⊆上 移動「上」 ENDIF IF{番}⊆左 移動「左」 ENDIF 移動「右」 ENDIF IF{番}⊆左 移動「左」 ENDIF IF{番}⊆上 移動「上」 ENDIF 移動「下」 |
| +−
IF[X]=[Y] 移動「左下」 ENDIF IF[X]>[Y] IF{番}⊆下 移動「下」 ENDIF IF{番}⊆左 移動「左」 ENDIF 移動「右」 ENDIF IF{番}⊆左 移動「左」 ENDIF IF{番}⊆下 移動「下」 ENDIF 移動「上」 |
| −+
IF[X]=[Y] 移動「上右」 ENDIF IF[X]>[Y] IF{番}⊆上 移動「上」 ENDIF IF{番}⊆右 移動「右」 ENDIF 移動「左」 ENDIF IF{番}⊆右 移動「右」 ENDIF IF{番}⊆上 移動「上」 ENDIF 移動「下」 |
| −−
IF[X]=[Y] 移動「右下」 ENDIF IF[X]>[Y] IF{番}⊆下 移動「下」 ENDIF IF{番}⊆右 移動「右」 ENDIF 移動「左」 ENDIF IF{番}⊆右 移動「右」 ENDIF IF{番}⊆下 移動「下」 ENDIF 移動「上」 |
| 「4択」の続きです。 移動一覧を参照してください。
「乱」
乱
[X]←[@乱数]mod 4 IF[X]=0 IF{番}⊆上 移動「上」 ENDIF 移動「左右下」 ENDIF IF[X]=1 IF{番}⊆左 移動「左」 ENDIF 移動「上右下」 ENDIF IF[X]=2 IF{番}⊆右 移動「右」 ENDIF 移動「上左下」 ENDIF IF{番}⊆下 移動「下」 ENDIF 移動「上左右」 |
敵の番、ランダムに移動先を決めます。 乱数を4で割った余りから移動先を決め、そこが移動出来なければ残る3方向に進めるかを判断していきます。
「上左」「右下」「上右」「左下」「上下」「左右」
上左
IF{番}⊆上 IF{番}⊆左 [X]←[@乱数]mod 2 IF[X]=0 移動「上」 ENDIF 移動「左」 ELSE 移動「上」 ENDIF ENDIF IF{番}⊆左 移動「左」 ENDIF 移動「右下」 |
| 上下
IF{番}⊆上 IF{番}⊆下 [X]←[@乱数]mod 2 IF[X]=0 移動「上」 ENDIF 移動「下」 ELSE 移動「上」 ENDIF ENDIF 移動「下」 |
|
「上左」は、上・左が両方進めるなら、ランダムでどちらへ行くかを決めます。 上だけ進めるなら上へ、左だけ進めるなら左へ進みます。 どちらも進めなければ、右か下の2択へ移行します。 「右下」「上右」「左下」も同様です。 「上下」は、必ず上か下は進めるはずなので、更に「左右」に移動する必要はありません。 「左右」も同様です。
「上左右」「上左下」「上右下」「左右下」
「上左右」
IF{番}⊆左 IF{番}⊆右 [X]←[@乱数]mod 3 IF[X]=0 移動「1」 ENDIF IF[X]=1 移動「左」 ENDIF 移動「右」 ELSE 移動「上左」 ENDIF ENDIF IF{番}⊆上 移動「上右」 ENDIF 移動「左右」 |
「上左右」は、「乱」から下が進めない時に移動してきます。 つまり、上○下×とわかっています 上・左・右が全て進めるなら、ランダムでどこへ行くかを決めます。 左が進めて右が進めないなら、「上左」へ移動。 左が進めないなら、「上右」へ移動します。 「上左下」「上右下」「左右下」も同様です。
「終了」
逃げる1と同じです。
調整方法
調整のポイントは、 ・マップのマス目の数 ・キャラ画像の表示位置 ・キャラの初期位置 です。
・マップのマス目の数 ・キャラ画像の表示位置 については、逃げる1と同じです。
・キャラの初期位置 大きさと形に関らず、
先手 | 敵 | プ |
敵 | (奇,奇) | (偶,偶) | (奇,奇) |
(奇,偶) | (奇,偶) | (偶,奇) |
(偶,奇) | (偶,奇) | (奇,偶) |
(偶,偶) | (奇,奇) | (偶,偶) |
プ | (奇,奇) | (奇,遇) | (偶,奇) |
(奇,偶) | (奇,奇) | (偶,偶) |
(偶,奇) | (奇,奇) | (偶,偶) |
(偶,偶) | (偶,奇) | (奇,偶) |
の16通りの内のどれかなら、プレイヤーは敵を捕まえることが出来ます。 これら以外だと、敵の近くまで行っても捕まえられません。
・他 敵を捕まえるまで何回移動したか、を出したい時については、逃げる1と同じです。 |